Sha256: 1e3f914bffd9adf88084527a396218ed338ebf453f0fe1dd6f106d6aca4cceb8
Contents?: true
Size: 1.68 KB
Versions: 3
Compression:
Stored size: 1.68 KB
Contents
module Locomotive::Steam module Adapters module Filesystem module YAMLLoader extend Forwardable def_delegators :@scope, :locales, :default_locale attr_reader :site_path, :env def initialize(site_path, env = :local) @site_path, @env = site_path, env end def load(scope = nil) @scope = scope end def _load(path, frontmatter = false, &block) if File.exists?(path) yaml = File.open(path).read.force_encoding('utf-8') template = nil if frontmatter && match = yaml.match(FRONTMATTER_REGEXP) yaml, template = match[:yaml], match[:template] end safe_yaml_load(yaml, template, path, &block) else Locomotive::Common::Logger.error "No #{path} file found" {} end end def safe_yaml_load(yaml, template, path, &block) return {} if yaml.blank? begin HashConverter.to_sym(YAML.load(yaml)).tap do |attributes| block.call(attributes, template) if block_given? end rescue Exception => e raise "Malformed YAML in this file #{path}, error: #{e.message}" end end def safe_json_load(path) return {} unless File.exists?(path) json = File.read(path) begin MultiJson.load(json) rescue MultiJson::ParseError => e raise Locomotive::Steam::JsonParsingError.new(e, path, json) end end def template_extensions @extensions ||= %w(liquid haml) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems