console.log(hered0c);Меня нетСовсем нетПолностью - до конца!Меня никогда не было и не будет.И не спрашивайте на форумах где я,Там меня всегда бьют и обижают потом!Они не понимают меня и не знают где я... © HEREDOCНе буду томить в, JavaScript действительно нет 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 hered0c = heredoc(function () {/* Меня нет Совсем нет Полностью - до конца! Меня никогда не было и не будет. И не спрашивайте на форумах где я, Там меня всегда бьют и обижают потом! Они не понимают меня и не знают где я... © HEREDOC */}); console.log(hered0c);
GitHub
JSFiddle
Протестировать на пригодность для использования в разных браузерах можно прямо тут!
Если кому не сложно, отпишитесь пожалуйста где «heredoc» не работает.
