class Liquid::ParseContext
Attributes
Public Class Methods
Source
# File lib/liquid/parse_context.rb, line 8 def initialize(options = Const::EMPTY_HASH) @environment = options.fetch(:environment, Environment.default) @template_options = options ? options.dup : {} @locale = @template_options[:locale] ||= I18n.new @warnings = [] # constructing new StringScanner in Lexer, Tokenizer, etc is expensive # This StringScanner will be shared by all of them @string_scanner = StringScanner.new("") @expression_cache = if options[:expression_cache].nil? {} elsif options[:expression_cache].respond_to?(:[]) && options[:expression_cache].respond_to?(:[]=) options[:expression_cache] elsif options[:expression_cache] {} end self.depth = 0 self.partial = false end
Public Instance Methods
Source
# File lib/liquid/parse_context.rb, line 31 def [](option_key) @options[option_key] end
Source
# File lib/liquid/parse_context.rb, line 35 def new_block_body Liquid::BlockBody.new end
Source
# File lib/liquid/parse_context.rb, line 39 def new_parser(input) @string_scanner.string = input Parser.new(@string_scanner) end
Source
# File lib/liquid/parse_context.rb, line 44 def new_tokenizer(source, start_line_number: nil, for_liquid_tag: false) Tokenizer.new( source: source, string_scanner: @string_scanner, line_number: start_line_number, for_liquid_tag: for_liquid_tag, ) end
Source
# File lib/liquid/parse_context.rb, line 53 def parse_expression(markup) Expression.parse(markup, @string_scanner, @expression_cache) end
Source
# File lib/liquid/parse_context.rb, line 57 def partial=(value) @partial = value @options = value ? partial_options : @template_options @error_mode = @options[:error_mode] || @environment.error_mode end
Source
# File lib/liquid/parse_context.rb, line 64 def partial_options @partial_options ||= begin dont_pass = @template_options[:include_options_blacklist] if dont_pass == true { locale: locale } elsif dont_pass.is_a?(Array) @template_options.reject { |k, _v| dont_pass.include?(k) } else @template_options end end end