דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. החלפת הקלדה לעברית.

החלפת הקלדה לעברית.

מתוזמן נעוץ נעול הועבר תכנות
20 פוסטים 4 כותבים 394 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY מנותק
    yossizY מנותק
    yossiz
    השיב לרפאל ב נערך לאחרונה על ידי
    #10

    @רפאל נתתי הצבעה כבר על הגירסה הראשונה של הקוד. עכשיו אני צריך להצביע שוב על העדכונים...

    אפשר לשאול למה לא עשית convert ו-lookup סטטיים? (ואז כבר די מיותר להשתמש בקלאס).

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    רפאלר 2 תגובות תגובה אחרונה
    1
    • רפאלר מנותק
      רפאלר מנותק
      רפאל
      השיב לyossiz ב נערך לאחרונה על ידי רפאל
      #11

      @yossiz

      אפשר לשאול למה לא עשית convert ו-lookup סטטיים

      שקלתי את העניין אבל הצעד היה מאריך את הסינטקס וממילא פוגע בקריאות.

       return str.replace(/./g, x => LayoutConvertor.#lookup.get(x) ?? LayoutConvertor.#lookup.get(x.toLowerCase()) ?? x)
      

      (ואז כבר די מיותר להשתמש בקלאס).

      כמפתח TS למדתי לשנוא הרחבות של הPrototype, ובתור איש #C אני לא מסוגל לראות קוד משוטט מחוץ למחלקה מרחף לו בחלל 🌌 .

      שורה תחתונה: שיקולים רגשיים בלבד שמזיקים לסביבה.

      אדרבה אני מזמין אותך לשנות את הקוד כרצונך ובטוחני שהתוצאה תהיה מרשימה ביותר.

      yossizY תגובה 1 תגובה אחרונה
      2
      • yossizY מנותק
        yossizY מנותק
        yossiz
        השיב לרפאל ב נערך לאחרונה על ידי
        #12

        @רפאל אמר בהחלפת הקלדה לעברית.:

        אדרבה אני מזמין אותך לשנות את הקוד כרצונך.

        אני הייתי כותב ככה (בקובץ נפרד):

        const map = new Map(...);
        
        export default function convert(str) { return .... }
        

        שימוש:

        import convertLayout from './utils/layout-converter';
        

        ההבדל? כלום... רק סטייל.
        (בעצם זה חוסך יצירה מחדש של ה-map בכל יצhרה של ה-class)

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        תגובה 1 תגובה אחרונה
        1
        • א מנותק
          א מנותק
          אהרן
          השיב לyossiz ב נערך לאחרונה על ידי
          #13

          @yossiz אמר בהחלפת הקלדה לעברית.:

          השי"ת יוצאנו מאפילה לאורה במהירה אכי"ר...

          אתה מתחיל להישמע כמו מתכנת

          ממלא את מקומו (החסר מאוד!) של הקומוניסט ההוא, נו איך קוראים לו?

          תגובה 1 תגובה אחרונה
          3
          • רפאלר מנותק
            רפאלר מנותק
            רפאל
            כתב ב נערך לאחרונה על ידי
            #14

            @yossiz אמר בהחלפת הקלדה לעברית.:

            (בעצם זה חוסך יצירה מחדש של ה-map בכל יצhרה של ה-class)

            בהחלט, אולם שימוש בStatic (כפי שהצעת) יסדר את העניין.

            תגובה 1 תגובה אחרונה
            1
            • אבי 203א מנותק
              אבי 203א מנותק
              אבי 203
              השיב לרפאל ב נערך לאחרונה על ידי
              #15

              @רפאל תודה רבה על ההשקעה!! עובד נהדר!!
              ותודה ל @yossiz על ההדרכה המסורה בצאט... רציתי להעלות את כל הקוד שהתגבש לי לחיפוש נהדר, כולל הפיכת שם משפחה ופרטי, אבל @yossiz אומר שזה לא מענין אף אחד ה WIX שלי... אז יתקיים בי יהיו לך לבדיך ואין לזרים איתך... 🙂

              https://www.av-digital.co.il/

              רפאלר תגובה 1 תגובה אחרונה
              5
              • רפאלר מנותק
                רפאלר מנותק
                רפאל
                השיב לאבי 203 ב נערך לאחרונה על ידי
                #16

                רציתי להעלות את כל הקוד שהתגבש לי לחיפוש נהדר,
                אבל @yossiz אומר שזה לא מענין אף אחד ה WIX שלי.

                @אבי-203 חלילה לי מלחלוק על @yossiz אבל אני חושב שאדרבה, זה מעניין מאוד.

                אבי 203א תגובה 1 תגובה אחרונה
                0
                • אבי 203א מנותק
                  אבי 203א מנותק
                  אבי 203
                  השיב לרפאל ב נערך לאחרונה על ידי אבי 203
                  #17

                  @רפאל מפני הכרת הטוב ל @רפאל אעלה למרות המלצתו 'המחנכת' של ר' @yossiz שעזר לי לקצר את הקוד שלי, בשבעים שורות..

                  let evtext;
                  export function input41_keyPress(event) {
                      let key = event.key;
                      if (key === "Enter" || key === "Tab") {
                          $w('#input41').blur()
                              $w('#text168').hide()
                          const hipus = String($w('#input41').value);
                          filters(hipus)
                  
                          let einglish = "qwertyuiopasdfghjklzxcvvbnmQWERTYUIOPASDFGHJKLZXCVBNM,.;",
                              tw = $w('#input41').value
                          let cnisa = einglish.indexOf(tw.charAt(0))
                          if (cnisa !== -1) {
                               evtext = converter.convert(tw)
                              $w('#text167').show()
                              $w('#text167').text = " האם נתכונת לחפש? " + evtext
                          }
                      }
                  }
                  function filters(hipus) {
                      const velur = hipus.split(' ').reverse().join(' ');
                      console.log(velur);
                      wixData.query("magar").eq("phon", hipus).find().then((res) => {
                          if (res.length === 1) {
                              let id = res.items[0]
                              wixWindow.openLightbox("רכישת כרטיסים", { id })
                          }
                      })
                  
                      const types = ['phon', 'hir', 'ctovet', 'sem', 'tz', 'mishpaha', 'semmale'];
                      let filter2 = wixData.filter();
                      const type = $w('#input13').value;
                      if (type in types) {
                          filter2 = filter2.contains(type, hipus);
                      }
                      if (type === 'semmale' || type === 'all') {
                          filter2 = filter2.or(
                              wixData.filter().contains("semmale", velur));
                      }
                      if (type === 'all') {
                          for (const type of types) {
                              filter2 = filter2.or(wixData.filter().contains(type, hipus));
                          }
                      }
                  
                      $w("#dataset1").setFilter(filter2).then(()=>{
                          let count = $w("#dataset1").getTotalCount(); // 23\
                          console.log(count);
                  if (count===0) {
                      $w('#text168').show()
                  }
                      })
                              .catch((err) => {
                                  console.log(err);
                              });
                  }
                  
                  
                  
                  
                  class LayoutConvertor {
                      convert(str) {
                          return str.replace(/./g, x => this.#lookup.get(x) ?? this.#lookup.get(x.toLowerCase()) ?? x)
                      }
                  
                      #lookup = new Map([
                          ["q", "/"],
                          ["w", "'"],
                          ["e", "ק"],
                          ["r", "ר"],
                          ["t", "א"],
                          ["y", "ט"],
                          ["u", "ו"],
                          ["i", "ן"],
                          ["o", "ם"],
                          ["p", "פ"],
                          ["[", "]"],
                          ["{", "}"],
                          ["]", "["],
                          ["}", "{"],
                          ["\\", "\\"],
                          ["|", "|"],
                          ["a", "ש"],
                          ["s", "ד"],
                          ["d", "ג"],
                          ["f", "כ"],
                          ["g", "ע"],
                          ["h", "י"],
                          ["j", "ח"],
                          ["k", "ל"],
                          ["l", "ך"],
                          [";", "ף"],
                          [":", ":"],
                          ["'", ","],
                          ["\"", "\""],
                          ["z", "ז"],
                          ["x", "ס"],
                          ["c", "ב"],
                          ["v", "ה"],
                          ["b", "נ"],
                          ["n", "מ"],
                          ["m", "צ"],
                          [",", "ת"],
                          ["<", ">"],
                          [".", "ץ"],
                          [">", "<"],
                          ["/", "."],
                          ["?", "?"]
                      ]);
                  }
                  const converter = new LayoutConvertor()
                  
                  export function text167_click(event) {
                       $w('#input41').blur()
                          const hipus = evtext;
                          $w('#input41').value = evtext
                      filters(hipus)
                        $w('#text167').hide()
                  	// This function was added from the Properties & Events panel. To learn more, visit http://wix.to/UcBnC-4
                  	// Add your code for this event here: 
                  }
                  
                  

                  https://www.av-digital.co.il/

                  תגובה 1 תגובה אחרונה
                  3
                  • רפאלר מנותק
                    רפאלר מנותק
                    רפאל
                    השיב לyossiz ב נערך לאחרונה על ידי רפאל
                    #18

                    @yossiz אמר בהחלפת הקלדה לעברית.:

                    אפשר לשאול למה לא עשית convert ו-lookup סטטיים?

                    טעיתי לחשוב שלthis אין משמעות כלל במתודה סטטית, ומשכך הדרך להתייחס לשאר החברים הסטטיים, היא בשימוש של שמה של המחלקה.

                    בנוסף אולי יהיה אפשרי להסתפק רק בביטוי השני של הקוד דלהלן:

                    this.#lookup.get(x) ?? this.#lookup.get(x.toLowerCase())
                    

                    עדכנתי את הקוד.

                    אבי 203א תגובה 1 תגובה אחרונה
                    3
                    • אבי 203א מנותק
                      אבי 203א מנותק
                      אבי 203
                      השיב לרפאל ב נערך לאחרונה על ידי
                      #19

                      @רפאל לקחתי את הדבר היפה הזה לעוד מקום:
                      כשמקלידים טופס או מכניסים איש קשר וכדו' יש איזה קטע מציק כשמגיעים לשדה אימייל עוברים לאנגלית וחוזרים אח"כ (לכן לפעמים שוקל כבר להשאיר לסוף למרות החשיבות..) וזה במצב הטוב, לפעמים מגלים רק בסוף שהוקלד בעברית.
                      אז חשבתי אולי לבדוק בסוף אם נכתב בעברית ולתקן לאנגלית, כך אפשר לומר לכתחילה תקלידו בעברית.

                      
                      export function input31_keyPress(event) {
                          let key = event.key;
                          if (key === "Enter" || key === "Tab") {
                      let text = "qwertyuiopasdfghjklzxcvvbnmQWERTYUIOPASDFGHJKLZXCVBNM,.;",
                              tw = $w('#input31').value
                          let bbb = text.indexOf(tw.charAt(0))
                          if (bbb === -1) {
                              $w('#input31').value = converter.convert(tw)
                          }
                              $w('#input32').focus()
                      
                          } 
                      }
                      
                      class LayoutConvertor {
                          convert(str) {
                              return str.replace(/./g, x => this.#lookup.get(x) ?? this.#lookup.get(x.toLowerCase()) ?? x)
                          }
                          #lookup = new Map([
                              ["/", "q"],
                              ["'", "w"],
                              ["ק", "e"],
                              ["ר", "r"],
                              ["א", "t"],
                              ["ט", "y"],
                              ["ו", "u"],
                              ["ן", "i"],
                              ["ם", "o"],
                              ["פ", "p"],
                              ["]", "[ "],
                              ["}", "{"],
                              ["[", "]" ],
                              ["{", "}"],
                              ["\\", "\\"],
                              ["|", "|"],
                              ["ש", "a"],
                              ["ד", "s" ],
                              ["ג", "d"],
                              ["כ", "f"],
                              [ "ע", "g"],
                              ["י", "h"],
                              ["ח", "j"],
                              ["ל", "k"],
                              ["ך", "l"],
                              ["ף", ";"],
                              [":", ":"],
                              [",", "'"],
                              [ "\"", "\""],
                              ["ז", "z"],
                              [ "ס", "x"],
                              [ "ב", "c"],
                              [ "ה", "v"],
                              ["נ", "b"],
                              [ "מ", "n"],
                              [ "צ", "m"],
                              ["ת", ","],
                              [">", "<"],
                              [ "ץ", "."],
                              ["<", ">"],
                              [".", "/"],
                              ["?", "?"],
                              [ "@", "@"]
                          ]);
                      }
                      const converter = new LayoutConvertor()
                      

                      https://www.av-digital.co.il/

                      רפאלר תגובה 1 תגובה אחרונה
                      5
                      • רפאלר מנותק
                        רפאלר מנותק
                        רפאל
                        השיב לאבי 203 ב נערך לאחרונה על ידי רפאל
                        #20

                        @אבי-203 ניתן להשתמש בביטוי רגולרי התואם לתווים בUnicode שאינם כלולים בASCII, על מנת לקבוע האם מחרוזת טקסט כלשהיא מכילה תווים שאינם לטיניים:

                        /[^\x00-\x7F]+/.test("א")
                        true
                        
                        /[^\x00-\x7F]+/.test("a")
                        false 
                        

                        לחלופין ביכולתך לציין בצורה מפורשת את התווים הרצויים:

                        /[א-ת]+/.test("א")
                        true
                        
                        /[א-ת]+/.test("a")
                        false
                        

                        שימוש בביטויים הנ"ל יסתכם בחיפוש התאמה בכל רחבי הטקסט, ביכולתך כמובן לשנות את הביטוי כך שיבדוק את התו הראשון בלבד.

                        תגובה 1 תגובה אחרונה
                        3

                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום