Sha256: 5b9dff468d8371ab41bca89a8f736ec56b9df1818af09e01b0d856c6f07d4a5e
Contents?: true
Size: 1.16 KB
Versions: 13
Compression:
Stored size: 1.16 KB
Contents
module G5K module Parsing class UnsupportedFormat < StandardError; end class Parser @@parsers = [] def self.add(*parsers) parsers.each{ |parser| parser.dependencies @@parsers << parser } self end def self.select(parser_format) raise UnsupportedFormat, "The format cannot be nil." if parser_format.nil? parsers = @@parsers.select{|parser| parser.supported_formats.include?(parser_format.to_sym)} if parsers.empty? raise UnsupportedFormat, "No parser found for '#{parser_format}' format." else parsers.first end end def self.available_parsers; @@parsers; end end class JSONParser def self.dependencies require 'json' end def self.supported_formats [:json] end def self.dump(object, options = {:format => :pretty}) case options[:format] when :pretty JSON.pretty_generate object else object.to_json end end def self.load(object) JSON.parse(object) end end # Parser.add(JSONParser) end end
Version data entries
13 entries across 13 versions & 1 rubygems