Шаблон обсуждения:Обрезка цитат

Вмешательство Wikimarkup

Это должно быть в состоянии (всегда или по крайней мере опционально) отличать "foo"и (подлежащее обрезке) от , , , и (не подлежащее обрезке). В идеале это также должно обнаруживать (для вывода'bar'''baz'''''quux'''''baz'' '''quux''''''quux''' ''baz'''''quux''' 'yadda yadda!''''quux''' бла-бла-бла!) и (для вывода"doodle doodle dee" ''baz''каракули каракули ди ''баз''). Прямо сейчас это нарушает различные применения, если меры не будут приняты в каждом конкретном случае (что большинство редакторов не заметят и не поймут), чтобы избежать этого поведения, когда цитируемый материал начинается и заканчивается полужирным или курсивным вики-разметкой. На самом деле нет причин для этого шаблона касаться или вообще касаться его, если только это специально не указано каким-либо параметром, поскольку ни одна из строк с несколькими апострофами не используется для цитирования, поэтому нам не нужно ее убирать. Я не могу вытащить Lua из бумажного пакета, поэтому кто-то, кто знает язык и его выходки с сопоставлением строк лучше меня, должен заняться этим.  —  SMcCandlish¢  😼  21:31, 30 января 2020 (UTC) [ ответить ]{{Quote}}'''''

Как бы вы справились с "kevin's" или "'til" или "'til he went to kevin's"? Gonnym ( talk ) 22:04, 30 января 2020 (UTC) [ ответить ]
Поскольку двойные кавычки не используются в вики-разметке, единственные необходимые изменения — это сканирование на наличие сценариев с множественными кавычками («Ба», — сказал он, «Вздор») и предоставление возможности «отказаться» для случаев, когда человек ХОЧЕТ, чтобы кавычки отображались, например, при цитировании компьютерного кода, где кавычки важны, например
Вот строка, которую нужно изменить: {{quote|"Hello WOrld"|notrim=1}}
Более серьезной проблемой будет британский стиль цитирования, где «'til we meet at the Jones'» (что означает «До встречи в доме Джонсов») становится «til we meet at the Jones». Обратите внимание на двойные одинарные кавычки для кавычек и апострофа в начале и наоборот в конце. Конечно, может быть и книга под названием «Til we meet at the Jones» . Или британская книга, которая является цитатой: «Til we meet at the Jones». Вы можете видеть, что проблема одинарных кавычек, вероятно, неразрешима без какой-либо осведомленности о контексте. Параметр отказа для подавления удаления кавычек также решает эту проблему.
В качестве дополнительного общего решения, лучшее, что мы можем сделать, когда дело касается проблем с одинарными кавычками, — это лучшая реклама шаблонов кавычек, перечисленных здесь, в документации по шаблонам, связанным с кавычками. davidwr / ( talk )/( contribs ) 23:23, 30 января 2020 (UTC) [ ответить ]
Извините, если это было непонятно. Двойные кавычки были нужны, чтобы показать, какой текст я имею в виду, а не какой текст отправляется в шаблон. -- Gonnym ( talk ) 10:56, 31 января 2020 (UTC) [ ответить ]
Могу ли я дать рекомендацию: добавьте |suppresstrim=1параметр, который заставляет {{ trim quotes }} просто возвращать |s=или |1=, чтобы существующие шаблоны, которые его вызывают, было легче изменять. Гораздо проще передать |suppresstrim=вам параметр, чем переписывать существующие шаблоны как большой блок if-then "если suppresstrim отсутствует, то выполните обычные действия, иначе выполните обычные действия, за исключением того, что не вызывайте {{ trim quotes }} ". Переписывание таких шаблонов может привести к блочно-скопированному коду, который будет трудно поддерживать - я знаю, я серьезно рассматривал этот вариант с сегодняшними изменениями в Template:quote . Я выбрал гораздо более простой вариант, просто добавив <nowiki />, если |notrim=присутствовал недавно добавленный параметр. Также рассмотрите возможность внесения изменений в Module:Trim quotes . davidwr / ( talk )/( contribs ) 23:31, 30 января 2020 (UTC) [ reply ]
Эта версия избегает обрезки последовательных одинарных кавычек, но не обрабатывает внутреннюю обрезку, такую ​​как '''quux''' 'yadda yadda!''''quux''' yadda yadda!.
function  trim_quotes ( str ) str  =  mw.text.trim ( str ) local prev while true do local first = str : sub ( 1 , 1 ) if first == str : sub ( -1 , -1 ) and ( first == ' " ' or ( first == " '" and not ( str : sub ( 2 , 2 ) == " ' " or str : sub ( -2 , -2 ) == " ' " ) ) ) then str = str : sub ( 2 , -2 ) else break end prev = first end return str end                                    
Эру · туон 04:13, 31 января 2020 г. (UTC) [ ответить ]
Это не удается с 'quux' 'yadda yadda!'. -- Gonnym ( обсуждение ) 11:02, 31 января 2020 (UTC) [ ответ ]
Правильно, это не сильно отличается от '''quux''' 'yadda yadda!': есть цитата и что-то еще. Код полагается на предположение, что параметр содержит одинарную цитату, если таковая имеется. Это паршивый черновик, недостаточно хороший для развертывания в шаблоне. — Eru · tuon 21:26, 31 января 2020 (UTC) [ ответить ]
Как насчет чего-то вроде
функция  trim_quotes ( str ) str  =  mw . ustring . gsub ( str ,  '"' ,  '' ) str  =  mw . ustring . gsub ( str ,  "%f['%w]'%f[%w](.-)%f[^%w.!?]'%f[^'%w]" ,  "%1" ) return  str end
Это соответствует «цитате», где первому апострофу не предшествует буква или другой апостроф, но за ним следует буква, а второму апострофу предшествует буква (или знак препинания, обычно встречающийся в конце цитаты), но за ним не следует буква или другой апостроф.
Он обрабатывает текст как , 'This won't break'но не 'St. James' Park'. Последнее, я думаю, вообще невозможно разобрать. Certes ( talk ) 20:34, 31 января 2020 (UTC) [ ответить ]
Взято с "https://en.wikipedia.org/w/index.php?title=Template_talk:Trim_quotes&oldid=1086802597"