Sha256: 95d63a987ac73b171a1eae8db15e2886c0b47e05d870e31cea42b8ac6c22d7af

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

require 'multi_json'
require 'yaml'

require 'nugrant/bag'

module Nugrant
  module Helper
    module Bag
      def self.read(filepath, format, error_handler = nil)
        data = parse_data(filepath, format, error_handler)

        return Nugrant::Bag.new(data)
      end

      def self.parse_data(filepath, format, error_handler = nil)
        return if not File.exists?(filepath)

        begin
          File.open(filepath, "rb") do |file|
            parsing_method = "parse_#{format.to_s}"
            return send(parsing_method, file.read())
          end
        rescue => error
          if error_handler
            # TODO: Implements error handler logic
            error_handler.handle("Could not parse the user #{format.to_s} parameters file '#{filepath}': #{error}")
          end
        end
      end

      def self.parse_json(input)
        JSON.parse(input)
      end

      def self.parse_yaml(input)
        YAML::ENGINE.yamler= 'syck' if defined?(YAML::ENGINE)

        YAML.load(input)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nugrant-2.0.0.dev2 lib/nugrant/helper/bag.rb