JQuery / Javascript плагин Leet переводчик - PullRequest
1 голос
/ 21 февраля 2012

Так что я искал в разных местах, чтобы попытаться найти переводчика 1337, который я мог бы понять достаточно, чтобы работать в плагине jQuery, я чувствую, что я довольно близок ... но я не на 100%, что я делаю неправильно ... я почти уверен, что у меня есть ... это не плагин jQuery ... поэтому я надеялся, что кто-нибудь поможет мне понять, что я делаю неправильно.

(function($){
    $.fn.leet = function() {

        // Create the Phrase translations arrays
            var PhrasesEnglish = 
                new Array('crap', 'dude', 'hacker',
                          'hacks', 'you', 'cool', 'oh my god',
                          'fear', 'power', 'own',
                          'what the hell', 'elite', 'for the win', 
                          'oh really', 'good game');
            var PhrasesLeet = 
                new Array('carp', 'dood', 'haxor', 'hax', 'joo',
                          'kewl', 'omg', 'ph43', 'powwah', 'pwn', 
                          'wth', 'leet', 'ftw', 'o rly', 'gg');

            // Create the Letter translations arrays
            var LettersEnglish = 
                new Array('n', 'b', 'k', 'd', 'e', 'f', 'g', 'h',
                          'p', 'm', 'r', 'l', 'o', 'q', 's', 't',
                          'u', 'x', 'w', 'y', 'z', 'c', 'a', 'j', 
                          'i', 'v', ' ');
            var LettersLeet = 
                new Array('/\\/', '|}', '|X', '[)', '3', '|=', 'gee', '|-|',
                          '|*', '(\\/)', '|2', '1', '()', '0', '$', '+',
                          '|_|', '><', '\\X/', '\'/', '2', '<', '/\\', '_|', 
                          '|', '\\/', '  ');

            // Translates text in input area to/from leet speak
            function translateText() {
                var inputString = document.getElementById('input').value;

                if (document.getElementById('conversionType').value == "e") {
                    for (i = 0; i < PhrasesEnglish.length; ++i)
                        inputString = inputString.replace(
                                new RegExp(PhrasesEnglish[i], "gi"),
                                PhrasesLeet[i]
                                );

                    for (i = 0; i < LettersEnglish.length; ++i)
                        inputString = inputString.replace(
                                new RegExp(LettersEnglish[i], "gi"),
                                LettersLeet[i]
                                );
                }
                else {
                    for (i = 0; i < LettersLeet.length; ++i)
                        inputString = inputString.replace(
                                new RegExp(RegExp.escape(LettersLeet[i]), "g"),
                                LettersEnglish[i]
                                );

                    for (i = 0; i < PhrasesLeet.length; ++i)
                        inputString = inputString.replace(
                                new RegExp(RegExp.escape(PhrasesLeet[i]), "g"),
                                PhrasesEnglish[i]
                                );
                }

                document.getElementById('input').value = inputString;
            }

        return this;
    };
})(jQuery);

Это то, что у меня есть, что касается плагина, учтите, что я нашел это в Интернете и пытаюсь его переделать ... так что HTML - это ужасный атм ..

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
    <script src="leet.js"></script>
    <script>
        $(function() {
            $("div").leet();
        });
    </script>

    <body>

        <div style="border: solid 1px Black; 
                    padding: 5px; width: 350px; 
                    background-color: White;">
            <label for="input">
                Enter message here:</label><br />
            <textarea id="input" name="input" rows="10" cols="40" 
            style="font-weight: bold;
                   background-image: url('leetBG.png'); 
                   background-attachment: fixed; 
                   background-position: 160px 165px;
                   background-repeat: no-repeat;"></textarea>
            <br />
            <input type="submit" value="Translate" 
             onclick="translateText();" />
            <select id="conversionType">
                <option value="e">English -> 1337</option>
                <option value="3">1337 -> English</option>
            </select>
        </div>

    </body>

1 Ответ

0 голосов
/ 22 февраля 2012

Попробуйте удалить функцию перевода текста из своей собственной функции только для части расширения.Затем вызовите расширение onclick так, чтобы

(function($){
$.fn.leet = function() {

    // Create the Phrase translations arrays

        var PhrasesEnglish = ['crap', 'dude', 'hacker',
                      'hacks', 'you', 'cool', 'oh my god',
                      'fear', 'power', 'own',
                      'what the hell', 'elite', 'for the win', 
                      'oh really', 'good game'];
        var PhrasesLeet = ['carp', 'dood', 'haxor', 'hax', 'joo',
                      'kewl', 'omg', 'ph43', 'powwah', 'pwn', 
                      'wth', 'leet', 'ftw', 'o rly', 'gg'];

    // Create the Letter translations arrays

        var LettersEnglish = ['n', 'b', 'k', 'd', 'e', 'f', 'g', 'h',
                      'p', 'm', 'r', 'l', 'o', 'q', 's', 't',
                      'u', 'x', 'w', 'y', 'z', 'c', 'a', 'j', 
                      'i', 'v', ' '];
        var LettersLeet = ['/\\/', '|}', '|X', '[)', '3', '|=', 'gee', '|-|',
                      '|*', '(\\/)', '|2', '1', '()', '0', '$', '+',
                      '|_|', '><', '\\X/', '\'/', '2', '<', '/\\', '_|', 
                      '|', '\\/', '  '];
    // Translates text in input area to/from leet speak

        var id = $(this).attr('id');            
        var inputString = document.getElementById(id).value;

        if (document.getElementById('conversionType').value == "e") {
            for (i = 0; i < PhrasesEnglish.length; ++i)
                inputString = inputString.replace(
                        new RegExp(PhrasesEnglish[i], "gi"),
                        PhrasesLeet[i]
                        );

                for (i = 0; i < LettersEnglish.length; ++i)
                    inputString = inputString.replace(
                            new RegExp(LettersEnglish[i], "gi"),
                            LettersLeet[i]
                            );
        }
        else {
            for (i = 0; i < LettersLeet.length; ++i)
                inputString = inputString.replace(
                        new RegExp(RegExp.escape(LettersLeet[i]), "g"),
                        LettersEnglish[i]
                        );

            for (i = 0; i < PhrasesLeet.length; ++i)
                inputString = inputString.replace(
                        new RegExp(RegExp.escape(PhrasesLeet[i]), "g"),
                        PhrasesEnglish[i]
                        );
        }

        document.getElementById(id).value = inputString;

    };
})(jQuery);​

Ваш обработчик onclick будет выглядеть примерно так

<input type="submit" value="Translate" onclick="$('#input').leet();" />

Вот скрипка (я не знаю, как люди могут это прочитать, я думалне работал должным образом, пока я не расшифровал его.) http://jsfiddle.net/ThD29/1/

Кроме того, перевод с 1337 -> английский не работает.Очевидно, у RegExp нет метода с именем escape.Я не знаю много о регулярных выражениях, так что, надеюсь, кто-то еще может указать на ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...