class Liquid::Document

Attributes

body[R]
parse_context[R]

Public Class Methods

new(parse_context) click to toggle source
# File lib/liquid/document.rb, line 13
def initialize(parse_context)
  @parse_context = parse_context
  @body = new_body
end
parse(tokens, parse_context) click to toggle source
# File lib/liquid/document.rb, line 5
def self.parse(tokens, parse_context)
  doc = new(parse_context)
  doc.parse(tokens, parse_context)
  doc
end

Public Instance Methods

nodelist() click to toggle source
# File lib/liquid/document.rb, line 18
def nodelist
  @body.nodelist
end
parse(tokenizer, parse_context) click to toggle source
# File lib/liquid/document.rb, line 22
def parse(tokenizer, parse_context)
  while parse_body(tokenizer)
  end
  @body.freeze
rescue SyntaxError => e
  e.line_number ||= parse_context.line_number
  raise
end
render(context) click to toggle source
# File lib/liquid/document.rb, line 44
def render(context)
  render_to_output_buffer(context, +'')
end
render_to_output_buffer(context, output) click to toggle source
# File lib/liquid/document.rb, line 40
def render_to_output_buffer(context, output)
  @body.render_to_output_buffer(context, output)
end
unknown_tag(tag, _markup, _tokenizer) click to toggle source
# File lib/liquid/document.rb, line 31
def unknown_tag(tag, _markup, _tokenizer)
  case tag
  when 'else', 'end'
    raise SyntaxError, parse_context.locale.t("errors.syntax.unexpected_outer_tag", tag: tag)
  else
    raise SyntaxError, parse_context.locale.t("errors.syntax.unknown_tag", tag: tag)
  end
end

Private Instance Methods

new_body() click to toggle source
# File lib/liquid/document.rb, line 50
def new_body
  parse_context.new_block_body
end
parse_body(tokenizer) click to toggle source
# File lib/liquid/document.rb, line 54
def parse_body(tokenizer)
  @body.parse(tokenizer, parse_context) do |unknown_tag_name, unknown_tag_markup|
    if unknown_tag_name
      unknown_tag(unknown_tag_name, unknown_tag_markup, tokenizer)
      true
    else
      false
    end
  end
end