ФЭНДОМ


  • Слушай, извини что я тогда наговорил в другой теме. Просто бывает, когда ты доверяешь одному участнику, а другим нет. Твой викификатор действительно хороший.

    Это, я смотрел на дев вики что это ты его создал. При его использовании я заметил ошибку, что когда на укр. языке викифицируешь слово т.д. (или т. д.), викифицируется в тощо, и если это слово используется как окончательное слово, пропадает точка. Исправишь?

      Загрузка редактора
    • А также если это возможно, сделаешь викификатор за горячей кнопкой? Т.е. за раскладкой клавиатуры, чтобы можно было викификацию сделать за нажиманием одной (или нескольких) кнопки (кнопок).

        Загрузка редактора
    • DDPAT Knife SeriesТема:181366
      когда на укр. языке викифицируешь слово т.д. (или т. д.), викифицируется в тощо, и если это слово используется как окончательное слово, пропадает точка

      я не знаю как это можно исправить: нет возможности определить положение слова - оно может быть как в середине предложения, так и в конце. в русском языке с этим проще: т.д. заменяется на т.д. и никакие точки не пропадают. что делать с украинским, я не имею представления. скрипт переводил человек, который вроде как знает украинский, если он не придумал, как это всё сделать, то я и подавно не придумаю.
      DDPAT Knife Series#2
      обы можно было викификацию сделать за нажиманием одной (или нескольких) кнопки (кнопок)

      такая мысль у меня была, но я не смог найти хорошее сочетание клавиш, тк многие уже используются. так что я решил оставить это на усмотрение пользователей: процесс викификации может быть запущен любым скриптом. так что любой пользователь может написать скрипт, который будет ждать какие-то определённые сочетания клавиш и запускать викификацию по ним. примерный код:
      $('body').on('keydown', function(e) {
          if (window.wikificator && e.key === 'z') window.wikificator.wikify();
      });
      код выше будет запускать викификацию при нажатии "z".
        Загрузка редактора
    • Я вспомнил что еще хотел предложить, а то я забыл, когда прошлое писал. Сделаешь так, чтобы названия файлов могли изменяться? Пример:

      Файл:Название_файла --- Файл:Название файла

        Загрузка редактора
    • От Fngplg: я не знаю как это можно исправить: нет возможности определить положение слова - оно может быть как в середине предложения, так и в конце. в русском языке с этим проще: т.д. заменяется на т.д. и никакие точки не пропадают. что делать с украинским, я не имею представления. скрипт переводил человек, который вроде как знает украинский, если он не придумал, как это всё сделать, то я и подавно не придумаю.

      Я дико езвеняюсь, что влезаю *дыщь*. Возможно, это будет изматывающим на мм оаоаоа js, но не представляется ли возможным проверка следующего одного-трех знаков после т.д. (тощо)? Если идет заглавная буква, то ставится точька, иначе (после пробела нет заглавной буквы или после т.д. сразу же хором идут какие-то пунктуационные символы) — неточька. По моей логике, такое должно прокатить, ибо мне на ум не приходит ни одно предложение, где бы могла поставиться ненужная точька. Только если автору не 0 лет и он сам что-то не так сделал (типа «ти вже купив мене книгу економіки и т.д. якщо ні, ти будеш жити у Києві») *ушла с вашей стеночьки*

        Загрузка редактора
    • DDPAT Knife Series#4
      Файл:Название_файла --- Файл:Название файла

      а смысл?
      Зубенко Михаил Петрович#5
      не представляется ли возможным проверка следующего одного-трех знаков после т.д. (тощо)?

      теоретически такая возможность есть, хоть и очень ограниченная. практически же нужно написать правильный регэксп, а я не умею брать регэкспом 1-3 символа и сравнивать их с чем-то.
      Зубенко Михаил Петрович#5
      мне на ум не приходит ни одно предложение, где бы могла поставиться ненужная точька

      примеры трудных мест:
      1. арматура, металлопрокат и т.д.<конец текста> - нет следующих 1-3 символов
      2. арматура, металлопрокат и т.д. (стройматериалы), от наших поставщиков
      3. арматура, металлопрокат и т.д. - Свердловск поставляет всё. - четвёртый символ - значимая заглавная буква, при этом при замене "тд" на слово точки быть не должно; кроме того, это сочетание можно отловить только выражением вида "\s[\S]\s", но убирать точку по нему нельзя, тк:
      - Нам нужны бинты, марли и т.д.
      - Зачем?
      
      здесь есть сочетание "\s[\S]\s", но точка всё равно нужна. жёстко прописывать пробел (32) тоже нельзя, ибо люди используют разные пробелы.

      и это только то, что я придумал. в реальности проблем будет больше.

      могу предложить вообще удалить эту замену из викификатора. но просьбу об этом лучше написать на странице обсуждения скрипта, чтобы было понятно, зачем это сделано.

        Загрузка редактора
    • Вау, я их тоже хотела предложить регексы, но испугалась, что мне скажут, что это медленная фигня (мне так просто уже однажды ответили). Можно пойти немного варварским способом и сломать всю инфраструктуру античных времен r"(т.д.)\s?[\(\),:;!\?\-]" — то есть, грубо говоря, мы ищем т.д., чекаем, есть ли после них какой-нить знак в кавычьках (круглые скобки, запятая, двоеточие, точка с запятой, знаки восклицания и вопроса, дефис). Если такое найдется, то т.д. группируется и дальше с ним можно воротить что угодно: заменить на тощо (без точки) или хоть отдать лефефе бесплатно за 800 рублей. Знаю, что не совсем удобный регекс, то я ничего лучшего не смогла придумать. Зато подобный регекс решает (ну хотя бы должно?) те проблемные места, которые явились у вас.
      Соответственно, если регекс ничево не находит, то значит тут какая-то западня и надо поставить точьку. Вот, у меня ффьсо.

        Загрузка редактора
    • Зубенко Михаил Петрович
      Зубенко Михаил Петрович удалил этот ответ. Причина:
      фихня
      10:52, мая 31, 2020
      Этот ответ был удалён
    • Зубенко Михаил Петрович#7
      я их тоже хотела предложить регексы, но испугалась, что мне скажут, что это медленная фигня

      скрипт изначально был пачкой регэкспов (чуть больше сотни), которые последовательно прогонялись по тексту. скорость удовлетворительная - на среднюю страницу уходит 50-100мс.
      Зубенко Михаил Петрович#7
      чекаем, есть ли после них какой-нить знак в кавычьках (круглые скобки, запятая, двоеточие, точка с запятой, знаки восклицания и вопроса, дефис). Если такое найдется, то т.д. группируется и дальше с ним можно воротить что угодно: заменить на тощо (без точки)

      не вариант, тк знак препинания вовсе не означает отсутствие конца предложения. если брать не только текст (т.д.), но и окружающие символы, то придётся учитывать ещё и разметку, в тч хтмл. то есть может не быть переноса строки (\n) в тексте, но может стоять тег br; могут встретиться 'одиночные кавычки' и прочие вводящие в заблуждение штуки.
      Зубенко Михаил Петрович#8
      ожно более сильнее упростить себе жизнь и не писать сломя голову все возможные знаки препинания, а — r"(т.д.)\s?[\nA-ZА-Я]". Здесь чекаем, есть ли следующая строка (я заору, если \n не работает в js) или идут после пробела заглавные буквы латинского и русского алфавита, вот.

      та же проблема. после пробела могут идти вовсе не буквы, а перенос может быть бром.

      зы ткни ф12, вставь в консоль вот это: /[А-Я]/.test('Ё') и ткни энтер.

        Загрузка редактора
    • От Fngplg: не вариант, тк знак препинания вовсе не означает отсутствие конца предложения. если брать не только текст (т.д.), но и окружающие символы, то придётся учитывать ещё и разметку, в тч хтмл. то есть может не быть переноса строки (\n) в тексте, но может стоять тег br; могут встретиться 'одиночные кавычки' и прочие вводящие в заблуждение штуки.

      ты видимо меня просто неправильно понял: тот регекс сработает (ну должен) только тогда, когда точки после тощо не требуется. то есть он среагирует на «т.д.,» (где нужно заменить на «тощо,»), но не среагирует на «т.д.» (где нужно «тощо.») или на «т.д. А» (где нужно «тощо. А»). в том списке знаков у меня не стоит < (с которого начинаются все теги), следовательно мой первый регекс просто пропустит это (и по логике должно будет «тощо.<br/>»). чтобы не путаться с кавычками, то можно их добавить в тот же список знаков (тогда «'кавычка т.д.'» будет заменяться на «'кавычка тощо'»)

      второй регекс — это просто запара, я ево даже специально удалила, ибо просто напудрила там дичь какую-то *не ругайте*

        Загрузка редактора
    • я без понятия как написать такой регэксп.

        Загрузка редактора
    • я дико езвеняюсь за столь странный вопрос: но ты рофлиш ? я же сверху написала регекс, который работает по тому принципу, что я описала в Тема:181366#10

      вот он — r"(т.д.)\s?[\(\),:;!\?\-]"

      а вот пример работы:

      import re
      str = 'арматура, металлопрокат и т.д. - Свердловск поставляет всё'
      re.findall(r"(т.д.)\s?[\(\),:;!\?\-]", str)
      >>> ['т.д.']

      если надо, чтобы он не путался в кавычках, то берешь скобочьки [] и запихиваешь туда: r"(т.д.)\s?[\(\),:;!\?\-\'\"«»]" — готово, теперь он из строчек "я украл текст и т.д. \"Майнкрафт и т.д.\"", "я украл текст и т.д. 'Майнкрафт и т.д.'" и "я украл текст и т.д. «Майнкрафт и т.д.»" он будет брать «т.д.» (и теперь остается от тебя только заменить его на «тощо», без точки, просто «тощо» без точки). остальные «т.д.», которые он не взял, должен будет заменить на «тощо.» с точкой (вот, она даже поставлена у меня)

        Загрузка редактора
    •   Загрузка редактора
    • ок лана езвеняюсь за дикий кибербуллинг, я просто работала с findall, а он немножько отличается от sub (aka replace for js), и посему такой разброс случился. мне помогли *на этот раз*, но вот итоговый результат от моево друга: /т\.д\.(?= ?[\(\-,!\?\«\»\"\'])/

      вы не представляете, я даже зачекала это вот на вашем этом вашем консоли браузера js и у меня все загамало. вы тоже можете зачекать с разными вариантами (с запятой, знаками там всякими) — должно все гамать нормально.

      после тово, как успешно пройдет замена на «тощо» без точек, то можно вкинуть вот это: re.replace(/т.д./, 'тощо.') (тут же точька.)

        Загрузка редактора
    • и еще на память незабудку (и для меня тоже): я совсем забыла, что знак . тоже зарезервирован регексами и обозначает любой символ, то есть мои варианты были просто изначально обречены на провал (то есть могло браться не только «т.д.», но и «тада», «туды», «тыда» и вообще еще многочисленные). и посему, чтобы такой беды не случилось, нужно юзатб т\.д\.

      + я еще вспомнила, что есть некоторые юзеры (привет аеннам) которые дотошности любят соблюдать русский язык и вместо «т.д.» (без пробела) пишут «т. д.», в таком случае это изи решается: просто написать т\.\s?д\. — здесь \s — это пробел, а ? означает, что этот символ может присутствовать, а может и не присутствовать. спасеба за внемание

        Загрузка редактора
    • арматура, металлопрокат и т.д. – Свердловск поставляет всё
      https://snipboard.io/N5fUOI.jpg
      арматура, металлопрокат и т.д. — Свердловск поставляет всё
      https://snipboard.io/9LyZk5.jpg

      в обоих случаях точка не нужна. оба будут на выходе с точкой.

        Загрузка редактора
    • ок, признаю — это ужасно и вообще этот список можно до бесконечности продолжать, поэтому могу предложить лишь ТРЕТИЙ ВАРИАНТ МАМА Я ПЛАЧУ:
      /т\.\s?д\.(?=\W{2})(?!\s?[\n\<])/

        Загрузка редактора
    • Зубенко Михаил Петрович#17
      это ужасно и вообще этот список можно до бесконечности продолжать

      именно поэтому такой подход и не имеет смысла: есть куча всяких разных способов набора текста и все они используются, все символы в регэксп не впишешь.

      зы нутыпонел

        Загрузка редактора
    • От Fngplg: зы нутыпонел

      а почему? в js что ли по другому регексы гамают? (они абсолютно не должны так гамать — такое впечатление будто бы js не воспринимает кириллицу как за буквы, ибо \W принимает только не-буквы, не-цифры и не-подчеркивание)

      зы: я поработала с латиницей и с ней почему-то все работает, кажись js рили кириллицу считает не-буквами

        Загрузка редактора
    • Нет ну что я могу сказать: русские просто вот так вот не сдаются, я просто обязана добиться тово, чтобы тощо с точкой и без точки влепили в этот ваш скрипт — это уже как смысол жызне для меня.

      Так вот: /т\.\s?д\.(?!\s?[\wА-Я\n<])/

        Загрузка редактора
    • а-я - это, конечно, хорошо, но:

      Fngplg#9
      зы ткни ф12, вставь в консоль вот это: /[А-Я]/.test('Ё') и ткни энтер.

      если увидишь "true", значит Ё принадлежит диапазону А-Я, если "false", то увы...
        Загрузка редактора
    • Не понимаю, почему для вас это так сложно. Типо... в чем траблы просто прописать эту букву, если она в диапазон не входит? /[\wА-ЯЁ\n<]/

        Загрузка редактора
    • Хотя нет. Это плохо работает (если т.д. стоит в конце текста, то опять тупит), поэтому лучше это: /т\.\s?д\.(?=\s?[^\wА-ЯЁ\n<]{2})/. ВООООТ НУ ЭТО ТОЧНО ДОЛЖНО ГАМАТЬ (поверьте и потесьте)

        Загрузка редактора
    • А что если т.д. ставить в конце абзаца? Т.е. после этого ничего не идет

        Загрузка редактора
    • Зубенко Михаил Петрович#22
      Не понимаю, почему для вас это так сложно. Типо... в чем траблы просто прописать эту букву, если она в диапазон не входит?

      траблы в том, что это одна буква для русского языка (который и так и не имеет проблем с точками), а какие буквы оно из украинского не учитывает, я немного не в курсе. то есть весь этот ёа-яшный регэксп вообще никак не поможет украинскому языку.

      если этот регэксп тебе сильно нравится, оставь его на странице обсуждения скрипта. с описанием того, что он делает и какие проблемы какого языка должен исправлять. я в любом случае не буду вносить изменения, которые не были запрошены на странице скрипта, тк не хочу потом лазить по стенам в поисках ответа на вопрос "а почему это было сделано именно вот так?".

        Загрузка редактора
    • Доделаю свою работу, напишу туда с основного аккаунта.

        Загрузка редактора
    • От Fngplg: если этот регэксп тебе сильно нравится, оставь его на странице обсуждения скрипта. с описанием того, что он делает и какие проблемы какого языка должен исправлять. я в любом случае не буду вносить изменения, которые не были запрошены на странице скрипта, тк не хочу потом лазить по стенам в поисках ответа на вопрос "а почему это было сделано именно вот так?".

      если нужны все-все украинские буквы, то вот /т\.\s?д\.(?=\s?[^\wА-ЯҐЄІЇґєії\n<]{2})/ (в украинском нет буквы ё, вместо них юзабельна йо и ьо)

      то есть я так поняла, что нынешний итоговый регекс правильно справляется с задачей? и чтобы вы его внесли, мне нужно написать в обсуждении скрипта, верно?

        Загрузка редактора
    • У меня кстати возник вопрос. А что это (в верху статьи пример) за замены пробелов?

      А также есть недочет, что если ты выделил одну часть текста, а потом выделяешь весь текст, то викификатор не викифицирует статью.

        Загрузка редактора
    • Зубенко Михаил Петрович#27
      то есть я так поняла, что нынешний итоговый регекс правильно справляется с задачей? и чтобы вы его внесли, мне нужно написать в обсуждении скрипта, верно?

      он справляется не со всем, но всё же с большим, чем дефолтный. так что он определённо лучше, тк альтернативы ему всего 2: оставить как есть и удалить эту замену совсем, чтобы все т.д. оставались т.д.
      Theflyer32#28
      У меня кстати возник вопрос. А что это (в верху статьи пример) за замены пробелов?

      это проставляются пробелы в юникоде.
      Theflyer32#28
      если ты выделил одну часть текста, а потом выделяешь весь текст, то викификатор не викифицирует статью

      не удалось воспроизвести.
        Загрузка редактора
    • Bandicam 2020-06-03 00-52-52-791

      У меня возникла проблема с викифицированием этой страницы. Изначально страница была справкой, но потом она переместилась в другое пространство.

        Загрузка редактора
    • скрипт на такое не способен в принципе.

        Загрузка редактора
    • Участник ФЭНДОМА
        Загрузка редактора
Мне нравится это сообщение
Вам понравилось это сообщение!
Посмотреть кто добавил «Мне нравится»
Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA , если не указано иное.