В Java Script нет heredoc. Что совсем нет?

console.log(heredoc);
Меня нет
Совсем нет
Полностью - до конца!
Меня никогда не было и не будет.
И не спрашивайте на форумах где я,
Там меня всегда бьют и обижают потом!
Они не понимают меня и не знают где я... © HEREDOC

Не буду томить в, Java Script действительно нет heredoc.
Но есть возможность сделать что то очень похоже на heredoc.
Этот пример протестирован мной на Midori и Chrome. Как то в Opere и Firefox я не сомневаюсь, на IE всегда приходиться надеяться)). Так что если основания для оптимизма!

У этого способа есть единственное ограничение: нельзя употреблять в такой последовательности вот эти 2 символа */ — в принципе у всех скриптовых heredoc есть такие ограничения. Просто обычно они позволяют нам выбрать те символы которые не будут использоваться внутри heredoc.

Приступим:

!function (root) {    function heredoc(fn) {     return fn.toString().split('\n').slice(1,-1).join('\n') + '\n'   }    var stripPattern = /^\s*(?=[^\s]+)/mg   heredoc.strip = function(fn) {     var text = heredoc(fn)          var indentLen = text.match(stripPattern)                                  .reduce(function (min, line) {       return Math.min(min, line.length)     }, Infinity)      var indent = new RegExp('^\\s{' + indentLen + '}', 'mg')     return indentLen > 0       ? text.replace(indent, '')       : text   }    if (typeof exports === 'object') {     module.exports = heredoc   }   else if (typeof define === 'function' && define.amd) {     define(function() {       return heredoc     })   }   else {     root.heredoc = heredoc   } }(this) 

А теперь тестируем:

var str = heredoc(function () {/* Меня нет Совсем нет Полностью нет - до конца! Меня никогда не было и не будет. Не спрашивайте в на форумах где я, Они всегда бьют и обижают меня потом! Они не понимают меня и не знают где я... © HEREDOC */}); console.log(str); 

GitHub
JSFiddle

Протестировать на пригодность для использования в разных браузерах можно прямо тут!
Если кому не сложно, отпишитесь пожалуйста где «heredoc» работает, а где нет.

ссылка на оригинал статьи http://habrahabr.ru/post/230887/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *