function TemplatablePattern(input_scanner, parent) {
  Pattern.call(this, input_scanner, parent);
  this.__template_pattern = null;
  this._disabled = Object.assign({}, template_names);
  this._excluded = Object.assign({}, template_names);

  if (parent) {
    this.__template_pattern = this._input.get_regexp(parent.__template_pattern);
    this._excluded = Object.assign(this._excluded, parent._excluded);
    this._disabled = Object.assign(this._disabled, parent._disabled);
  }
  var pattern = new Pattern(input_scanner);
  this.__patterns = {
    handlebars_comment: pattern.starting_with(/{{!--/).until_after(/--}}/),
    handlebars: pattern.starting_with(/{{/).until_after(/}}/),
    php: pattern.starting_with(/<\?(?:[=]|php)/).until_after(/\?>/),
    erb: pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/),
    // django coflicts with handlebars a bit.
    django: pattern.starting_with(/{%/).until_after(/%}/),
    django_value: pattern.starting_with(/{{/).until_after(/}}/),
    django_comment: pattern.starting_with(/{#/).until_after(/#}/)
  };
}
function TemplatablePattern(input_scanner, parent) {
  Pattern.call(this, input_scanner, parent);
  this.__template_pattern = null;
  this._disabled = Object.assign({}, template_names);
  this._excluded = Object.assign({}, template_names);

  if (parent) {
    this.__template_pattern = this._input.get_regexp(parent.__template_pattern);
    this._excluded = Object.assign(this._excluded, parent._excluded);
    this._disabled = Object.assign(this._disabled, parent._disabled);
  }
  var pattern = new Pattern(input_scanner);
  this.__patterns = {
    handlebars_comment: pattern.starting_with(/{{!--/).until_after(/--}}/),
    handlebars: pattern.starting_with(/{{/).until_after(/}}/),
    php: pattern.starting_with(/<\?(?:[=]|php)/).until_after(/\?>/),
    erb: pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/),
    
    django: pattern.starting_with(/{%/).until_after(/%}/),
    django_value: pattern.starting_with(/{{/).until_after(/}}/),
    django_comment: pattern.starting_with(/{#/).until_after(/#}/)
  };
}
function TemplatablePattern ( input_scanner , parent ) { Pattern . call ( this , input_scanner , parent ) ; this . __template_pattern = null ; this . _disabled = Object . assign ( { } , template_names ) ; this . _excluded = Object . assign ( { } , template_names ) ; if ( parent ) { this . __template_pattern = this . _input . get_regexp ( parent . __template_pattern ) ; this . _excluded = Object . assign ( this . _excluded , parent . _excluded ) ; this . _disabled = Object . assign ( this . _disabled , parent . _disabled ) ; } var pattern = new Pattern ( input_scanner ) ; this . __patterns = { handlebars_comment : pattern . starting_with ( / {{!-- / ) . until_after ( / --}} / ) , handlebars : pattern . starting_with ( / {{ / ) . until_after ( / }} / ) , php : pattern . starting_with ( / <\?(?:[=]|php) / ) . until_after ( / \?> / ) , erb : pattern . starting_with ( / <%[^%] / ) . until_after ( / [^%]%> / ) , // django coflicts with handlebars a bit. django : pattern . starting_with ( / {% / ) . until_after ( / %} / ) , django_value : pattern . starting_with ( / {{ / ) . until_after ( / }} / ) , django_comment : pattern . starting_with ( / {# / ) . until_after ( / #} / ) } ; }
This lets templates appear anywhere we would do a readUntil The cost is higher but it is pay to play.
This lets templates appear anywhere we would do a readUntil The cost is higher but it is pay to play .