Class: PipeFitter::YamlLoader
- Inherits:
-
Object
- Object
- PipeFitter::YamlLoader
- Defined in:
- lib/pipe_fitter/yaml_loader.rb
Instance Method Summary collapse
- #include_template(filename, context = {}) ⇒ Object
-
#initialize ⇒ YamlLoader
constructor
A new instance of YamlLoader.
- #load(filename) ⇒ Object
- #search_filepath(filename) ⇒ Object
Constructor Details
#initialize ⇒ YamlLoader
Returns a new instance of YamlLoader.
8 9 10 |
# File 'lib/pipe_fitter/yaml_loader.rb', line 8 def initialize @search_path = [Pathname.new(".")] end |
Instance Method Details
#include_template(filename, context = {}) ⇒ Object
26 27 28 29 30 |
# File 'lib/pipe_fitter/yaml_loader.rb', line 26 def include_template(filename, context = {}) path = search_filepath(filename) eval_erb(File.read(path), context) .gsub("\n", "\n" + " " * (context[:indent] || 0)) end |
#load(filename) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/pipe_fitter/yaml_loader.rb', line 12 def load(filename) @search_path.unshift(Pathname.new(filename).dirname) text = eval_erb(grep_v(filename, /^\s*#/)) YAML.load(text, aliases: true) || {} rescue ArgumentError YAML.load(text) || {} rescue Psych::SyntaxError => e text.split("\n").each_with_index do |l, i| mark = (e.line == i + 1) ? "*" : " " $stderr.puts format("%s%4d| %s", mark, i + 1, l) end raise e end |
#search_filepath(filename) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/pipe_fitter/yaml_loader.rb', line 32 def search_filepath(filename) dir = @search_path.find { |p| p.join(filename).exist? } if dir dir.join(filename) elsif File.exists?(filename) filename end end |