class Figtree::IniConfig

Public Class Methods

new(ini, override = :none) click to toggle source
Calls superclass method
# File lib/figtree/ini_config.rb, line 4
def initialize(ini, override = :none)
  # cheat to allow a parsed hash in
  parsed_subgroups = ini.is_a?(Hash) ?
    ini : subgroups_from(ini, override)
  super(parsed_subgroups)
end

Private Instance Methods

figgy_parse(str) click to toggle source
# File lib/figtree/ini_config.rb, line 21
def figgy_parse(str)
  Parser.new.parse(str)
  # argument error is invalid byte sequence
rescue Parslet::ParseFailed, ArgumentError => failure
  if failure.class == Parslet::ParseFailed
    failure = failure.cause.ascii_tree
  end
  STDERR.puts "\nInvalid ini file.\n" +
    "Error: #{failure}" +
    "Please correct the file and retry."
    raise
end
figgy_transform(tree, override) click to toggle source
# File lib/figtree/ini_config.rb, line 34
def figgy_transform(tree, override)
  Transformer.new.apply(tree, override: override)
rescue => e
  STDERR.puts "\nInvalid transformation rule.\n" +
    "Error: #{e}" +
    "Please correct your transformer rule and retry."
    raise TransformFailed
end
subgroups_from(ini_file, override) click to toggle source
# File lib/figtree/ini_config.rb, line 12
def subgroups_from(ini_file, override)
  figgy_transform(
    figgy_parse(
      File.read(ini_file)
    ),
    override
  ).reduce({}, :merge!)
end