«Её» или ещё один ёфикатор

    Не так давно в рабочей рассылке обсуждалась тема использования буквы «ё» в документации и постах.
    Обсуждение затянулось на несколько месяцев…

    Осознав важность проблемы, написал ёфикатор на Node.js.

    С ним можно проверять и восстанавливать букву «ё» в любых текстовых форматах.

    Установка


    npm install eyo -g
    


    Восстановление


    eyo file.txt > file_yo.txt
    eyo https://habrahabr.ru > habr_yo.html
    


    Проверка


    eyo --lint file.txt
    eyo --lint https://habrahabr.ru
    




    Вне зависимости от отношения к букве «ё», стоит отметить некоторые особенности.

    В регулярных выражениях, в диапазонах «ё» необходимо указывать отдельно:
    function hasRussianLetters(text) {
        return text.search(/а-яё/i) > -1;
    }
    


    При сортировке слов результат не очевиден:
    ["Дуб", "Осина", "Ёлка", "Берёза"].sort(); // ["Ёлка", "Берёза", "Дуб", "Осина"]
    ["дуб", "осина", "ёлка", "берёза"].sort(); // ["берёза", "дуб", "осина", "ёлка"]
    


    Ссылки:
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 30

      +18
      «приблИженных» и «приближЁнных» — это разные слова
        –13
        приемник и приёмник тоже так то
          +51
          Я тоже так думал, но потом узнал что «преемник»
            +8
            преемник и приёмник, так что все ОК.
              +16
              Ладно, ладно, хватит, понял. Век живи — век учись.
                –18
                Школу прогуливали?
          +21
          При сортировке слов результат не очевиден
          Потому что сортировать в алфавитом порядке нужно как минимум вот так:
          ["дуб", "осина", "ёлка", "берёза"].sort(function(a, b) { return a.localeCompare(b); }); // [ "берёза", "дуб", "ёлка", "осина" ]
          

          Простой sort() сортирует по числовому значению символов в строке, а не по алфавиту.
            +17
            В пользу какого варианта разрешаются дилеммы вроде «через недельку страна передохнет от жары»?
              +3
              Секцией «Not safe replscements»
              +6
              На так давно в рабочей рассылке обсуждалась тема использования буквы «ё» в документации и постах.
              Обсуждение затянулось на несколько месяцев…


              Какие, однако, занятые люди у вас. Даже на подобную фигню есть время для обсуждения.
                +11
                Классика жанра bikeshedding en.wikipedia.org/wiki/Parkinson%27s_law_of_triviality
                Люди готовы уделять вопросу тем больше внимания, чем больше эмоций вызывает предмет обсуждения — суть всех холиваров.
                  –18
                  За такие ценнейшие обсуждения и дрочево на умершую букву в рабочих рассылках и уволить не жалко. Религиозный фанатизм — это не про работу.
                    +11
                    Мне кажется, мы начали забывать приказ Народного комиссара просвещения РСФСР от 24 декабря 1942 г., вводящий обязательное употребление буквы ё в школьной практике.
                    (см. справочник Употребление буквы Ё, 1945 г)
                      +3
                      Когда-то за использование «е» вместо «ё» писарю руку отрубали, а теперь только карму сливают. Эх времена были.
                    –4
                    Какая разница как писать, е или ё, если вы не пользуетесь софтом под лицензией ё-ware?
                      0
                      Как насчёт слова «все/всё»? Программа понимает из контекста, надо ли ставить ё?
                        0
                        Посмотрите на нижнюю часть скрина.
                          0
                          из скрина не понятно — заменились ли все «все» на «всё» или только частично. Потому как если всё заменилось то смысл слова, а заодно и предложения, может и измениться.

                          «Вот все и собрались, принеся с собой всё что было наказано»
                        +2
                        *unsafe
                          +6
                          Молодцы, развивайте дальше!

                          Из собственного опыта использования бота-ёфикатора в Википедии (если кто не знал, в Википедии обязательно использование ё):
                          1) Смотреть на отдельные слова хорошо помогает против причастий, но смотреть на словосочетания тоже важно. Например, добавить «обо всём», «на всём», «во всём», а для остальных случаев не предлагать даже в зоне non-safe. То же самое про обратные списки: "\d лет" не помещать в non-safe.
                          2) В автоматическом режиме по-хорошему надо ещё выделять цитаты и не корёжить их (в основном это было связано с белорусским и украинским языками, но были ещё и старые тексты, типа «сделать по ней надлежащие в сем отношении распоряжения»).
                            +1
                            > «обо всём», «на всём», «во всём»

                            А как же «на всем знакомый мотив», «во всем известном городе»? Ох, сложно с этими заменами.
                              –2
                              «на знакомый всем мотив», «в известном всем городе»
                              0
                              Попробую сделать. Побольше бы таких случаев.
                              +1
                              Я за Ё
                                +3
                                Но перед Ж
                                  0
                                  Нет, никак не перед. Я — последняя буква в алфавите.
                                    +1
                                    Аз есмь первый
                                0
                                Товарищ автор, я разрабатываю расширение для браузера, автоматически корректирующее ошибки. Там, кстати, немного другой принцип формирования словаря (см. chrome/dictionary.js). Предлагаю кооперироваться и сделать расширение-ёфикатор. Правда, нам нужен третий, который сделает кнопку с галочкой «ёфикация».
                                  0
                                  Про плагин думал. Вынес логику про ёфикацию в отдельный модуль — github.com/hcodes/eyo-kernel.

                                  Про третьего не понял)

                                  Only users with full accounts can post comments. Log in, please.