class Teer::Template
Public Class Methods
create(data, names, rules_path_or_obj, kwargs = {}, locale = :GB_en)
click to toggle source
# File lib/teer.rb, line 10 def self.create(data, names, rules_path_or_obj, kwargs = {}, locale = :GB_en) return OpenStruct.new(data: nil, finding: nil) if data.empty? register_helpers data_keys = data.first.keys raise ArgumentError, "#{names} not present in data" if (Array(names) - data_keys).count != 0 @template = Engine.new(data, names, template(rules_path_or_obj, locale), parser, locale, kwargs) end
parser()
click to toggle source
# File lib/teer.rb, line 35 def self.parser @parser ||= Parser.new end
register_helpers()
click to toggle source
# File lib/teer.rb, line 39 def self.register_helpers parser.register_helper(:round) do |ctx, value| value < 1 ? value.round(2) : value.round(1) end parser.register_helper(:month) do |ctx, value| Time.at(value).strftime('%B') end end
template(rules_path_or_obj, locale)
click to toggle source
# File lib/teer.rb, line 22 def self.template(rules_path_or_obj, locale) case rules_path_or_obj when String YAML.safe_load(File.read(rules_path_or_obj)) when Array rules_path_or_obj.map { |condition, text| [condition, { 'text' => { locale.to_s => text } } ] }.to_h when Hash return rules_path_or_obj else raise ArgumentError, "Unknown template structure: #{rules_path_or_obj.class}" end end
Public Instance Methods
pre_parsed_finding()
click to toggle source
# File lib/teer.rb, line 18 def pre_parsed_finding @template.pre_parsed_finding end