Sha256: e4161607538f0d718d5bf4cd6e4870392e745a3c11e4e8c75b8f932378562c18
Contents?: true
Size: 1.59 KB
Versions: 1
Compression:
Stored size: 1.59 KB
Contents
require 'yaml' require 'json' module Middleman module CoreExtensions module Data # Load data files class FileLoader # No parser available class NoFileLoaderFoundError < StandardError; end # Load yaml files class YamlFileLoader def match?(file) %w(.yaml .yml).include? File.extname(file) end # @param [Pathname] file def load(file) YAML.load_file(file) rescue Psych::SyntaxError, StandardError => e $stderr.puts %(Loading data file "#{file}" failed due to an error: #{e.message}) {} end end # Load json files class JsonFileLoader def match?(file) '.json' == File.extname(file) end # @param [Pathname] file def load(file) JSON.parse(file.read) rescue => e $stderr.puts %(Loading data file "#{file}" failed due to an error: #{e.message}) {} end end # Default loader # # Always fails class NilFileLoader def match?(file) raise NoFileLoaderFoundError end end private attr_reader :loaders public def initialize @loaders = [] @loaders << YamlFileLoader.new @loaders << JsonFileLoader.new @loaders << NilFileLoader.new end # Load file using loader def load(file) loaders.find { |l| l.match? file }.load(file) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
middleman-core-3.4.1 | lib/middleman-core/core_extensions/data/file_loader.rb |