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

Осознав важность проблемы, написал ёфикатор на 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(); // ["берёза", "дуб", "осина", "ёлка"]


Ссылки:

Комментарии (30)


  1. ufm
    21.06.2015 22:21
    +18

    «приблИженных» и «приближЁнных» — это разные слова


    1. DjPhoeniX
      21.06.2015 22:51
      -13

      приемник и приёмник тоже так то


      1. WNeZRoS
        21.06.2015 22:53
        +51

        Я тоже так думал, но потом узнал что «преемник»


      1. NeoCode
        21.06.2015 22:54
        +8

        преемник и приёмник, так что все ОК.


      1. DjPhoeniX
        22.06.2015 01:17
        +16

        Ладно, ладно, хватит, понял. Век живи — век учись.


        1. newdya
          22.06.2015 06:33
          -18

          Школу прогуливали?


          1. Error_403_Forbidden
            22.06.2015 09:45
            -3

            книг мало читал


  1. a553
    21.06.2015 23:51
    +21

    При сортировке слов результат не очевиден
    Потому что сортировать в алфавитом порядке нужно как минимум вот так:
    ["дуб", "осина", "ёлка", "берёза"].sort(function(a, b) { return a.localeCompare(b); }); // [ "берёза", "дуб", "ёлка", "осина" ]
    

    Простой sort() сортирует по числовому значению символов в строке, а не по алфавиту.


  1. BlessMaster
    22.06.2015 00:42
    +17

    В пользу какого варианта разрешаются дилеммы вроде «через недельку страна передохнет от жары»?


    1. difiso
      22.06.2015 07:04
      +3

      Секцией «Not safe replscements»


  1. Gnuava
    22.06.2015 01:05
    +6

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


    Какие, однако, занятые люди у вас. Даже на подобную фигню есть время для обсуждения.


    1. BlessMaster
      22.06.2015 01:10
      +11

      Классика жанра bikeshedding en.wikipedia.org/wiki/Parkinson%27s_law_of_triviality
      Люди готовы уделять вопросу тем больше внимания, чем больше эмоций вызывает предмет обсуждения — суть всех холиваров.


    1. differentlocal
      22.06.2015 08:41
      -18

      За такие ценнейшие обсуждения и дрочево на умершую букву в рабочих рассылках и уволить не жалко. Религиозный фанатизм — это не про работу.


      1. impersonalis
        22.06.2015 11:09
        +11

        Мне кажется, мы начали забывать приказ Народного комиссара просвещения РСФСР от 24 декабря 1942 г., вводящий обязательное употребление буквы ё в школьной практике.
        (см. справочник Употребление буквы Ё, 1945 г)


  1. nomadmoon
    22.06.2015 04:10
    -4

    Какая разница как писать, е или ё, если вы не пользуетесь софтом под лицензией ё-ware?


  1. Finesse
    22.06.2015 06:10

    Как насчёт слова «все/всё»? Программа понимает из контекста, надо ли ставить ё?


    1. Zifix
      22.06.2015 06:36

      Посмотрите на нижнюю часть скрина.


  1. hardex
    22.06.2015 09:33
    +2

    *unsafe


  1. Lockal
    22.06.2015 11:28
    +6

    Молодцы, развивайте дальше!

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


  1. NickKolok
    07.07.2015 09:42

    Товарищ автор, я разрабатываю расширение для браузера, автоматически корректирующее ошибки. Там, кстати, немного другой принцип формирования словаря (см. chrome/dictionary.js). Предлагаю кооперироваться и сделать расширение-ёфикатор. Правда, нам нужен третий, который сделает кнопку с галочкой «ёфикация».


  1. hcodes Автор
    07.07.2015 14:13

    Про плагин думал. Вынес логику про ёфикацию в отдельный модуль — github.com/hcodes/eyo-kernel.

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