Как стать автором
Обновить

Комментарии 20

Тема сисек не раскрыта, а столько текста…
Пока приходится извращаться с \ в конце строки.
"\" в конце строки — хоть и работает, но не стандартизировано. Лучше всё же использовать сцепление строк.
> "\" в конце строки — хоть и работает, но не стандартизировано.
с чего это?
Есть в стандарте.
StringLiteral = " DoubleStringCharacters? "
DoubleStringCharacters = DoubleStringCharacter DoubleStringCharacters?
DoubleStringCharacter = SourceCharacterDS | \ EscapeSequence | LineContinuation
LineContinuation = \ LT

Собственно последняя строка и давит LineTerminator.
Действительно, пересмотрел спецификации, есть. А я верил гугловцам
Ну они пишут о том, что WS в начале могут не удаляться.
То есть может быть в итоге «123\n 333», а не «123\n333» дли текста:
  "123\
  333"
Это только первая из трёх причин, приводящихся там.
> Если кто-то может сформулировать проблему для разработчиков GM или Scriptish или знает, где она уже описана — просьба тоже сообщить об этом им и нам.

Ну если придираться к спеке ES, то там написано о том, что implementation-specific могут быть WS/LT и точки с запятыми, но про комменты не сказано.
15.3.4.2 пункт, если что.

Но я как-то не понимаю в чём заключена проблема. «123\n333» выдаёт то, что нужно.
Проблема в том, что когда сцепляешь, обрамляешь или что-то другое делаешь со строками, нарушается их вид. Строки теряют свою исходность :). Кроме того, простой многострочный текст легко вручную загнать в JS. И смысл статьи в том, что решения задачи нет (это ответ первому оратору). Или не найдено, но отсутствие решения у других (по интернету) даёт много «шансов» на то, что решения нет.
> Кроме того, простой многострочный текст легко вручную загнать в JS
Ctrl + V, Ctrl + H, \n → " +\n", [Enter]
Не, вручную — в смысле написать программу, в которую руками в ставляешь многострочный текст и получается один исполняемый JS-файл.
Как бы набрать 30 символов (s=function....) мне кажется малость сложнее чем нажать 5-10 кнопок.
Причём если использовать \\\n заменяя \n, то и читаемость не нарушится ни разу.
В общем, russian-style — создаём себе проблемы, и потом их героически решаем.
Это тот же подход с компилятором, что описывает ниже Methos. Тысяч до 3 строк вполне можно руками собрать, и чем проще правила, тем дальше отодвигается этот порог. А то так и на ассемблере всё можно собрать, компилятор же есть?
Ваш вариант: набрать 4-5 строк кода.
Альтернатива: нажать Ctrl+R/Ctrl+H в зависимости от хоткеев.
То есть вы действительно считаете что описанный в статье метод реально проще чем сделать самую обычную замену?
Я в этом почему-то сомневаюсь.
Ручной метод проще при переходе на другой компьютер, например. Компилятор надо инсталлировать, пользоваться увеличенным набором правил вместо небольшого количества ручной работы, ручной проверки того, не входят ли стоп-строки во внедряемый текст (скажем, надо заменить стили CSS на 1000 строк, внедрённые в скрипт, на другом компьютере). Сейчас, как описано в статье, этот метод реально достижим для юзерскрипта (с необходимостью править 2 символа или иметь 2 версии для браузеров) и недостижим из-за Firefox для обычного.
Выходной файл нужно просто компилировать в удобный браузерам формат, а исходник делать в удобном человеку формате. И никакой ерунды с подобными вещами не возникнет даже.
Есть такой класс проектов, когда без этого не обойтись — компилятор исходников. Я пробую сделать противоположную задачу — обойтись без компиляторов. По крайней мере, ясно, что для этого не хватает.
Это решение не для отдельных .js-файлов. Иногда оно полезно, но размещать на каждой странице все шаблоны UI-библиотеки я бы не стал.
Это HTML, а задача была — вставить в скрипт или в юзерскрипт. С HTML и XHTML нет проблем; кроме того, текст можно в комментарий вставить и заключить в CDATA, чтобы стоп-слово было посложнее. Вытаскивать скриптом как ноду. (Проблема, на самом деле, тоже есть, когда захотим изменить стоп-слово, чтобы прежнее использовать без изменений в тексте. В методе со скриптом, из статьи, стоп-слова, кстати, можно менять, настраивая рег. выражение для распознавания.)
Понятно… Тогда проблема действительно существует.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории