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

в 0:31, , рубрики: heredoc, javascript

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

GitHub
JSFiddle

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

Автор: mgkirs

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js