Sha256: 39673195c48ade68383ef7e981b4e9c04c8896c832233225023faad4b35f1876
Contents?: true
Size: 1.22 KB
Versions: 21
Compression:
Stored size: 1.22 KB
Contents
# frozen_string_literal: true # Hamlit::Parser uses original Haml::Parser to generate Haml AST. # hamlit/parser/haml_* are modules originally in haml gem. require 'hamlit/parser/haml_error' require 'hamlit/parser/haml_util' require 'hamlit/parser/haml_buffer' require 'hamlit/parser/haml_compiler' require 'hamlit/parser/haml_parser' require 'hamlit/parser/haml_helpers' require 'hamlit/parser/haml_options' module Hamlit class Parser AVAILABLE_OPTIONS = %i[ autoclose escape_html escape_attrs ].freeze def initialize(options = {}) @options = HamlOptions.defaults.dup AVAILABLE_OPTIONS.each do |key| @options[key] = options[key] end end def call(template) template = Hamlit::HamlUtil.check_haml_encoding(template) do |msg, line| raise Hamlit::Error.new(msg, line) end HamlParser.new(template, HamlOptions.new(@options)).parse rescue ::Hamlit::HamlError => e error_with_lineno(e) end private def error_with_lineno(error) return error if error.line trace = error.backtrace.first return error unless trace line = trace.match(/\d+\z/).to_s.to_i HamlSyntaxError.new(error.message, line) end end end
Version data entries
21 entries across 21 versions & 1 rubygems