Sha256: 18495f2b03f03fd14f13c91a1c48663407e3f602b27386887313979cbc41ea59

Contents?: true

Size: 908 Bytes

Versions: 11

Compression:

Stored size: 908 Bytes

Contents

module Lurker
  module Json
    class Parser
      class PlainStrategy
        include Lurker::Json::Parser::Expertise

        attr_reader :schema_options

        def initialize(options)
          @schema_options = options.dup
        end

        def parse(payload)
          case payload
          when Lurker::Json::Schema
            payload
          when Hash
            return parse_as_typed(payload) if type_defined?(payload) ||
              type_supposed?(payload)

            Lurker::Json::Schema.new(payload, schema_options)
          when Array
            payload.map do |schema|
              Lurker::Json::Parser.plain(schema_options).parse(schema)
            end
          else
            payload
          end
        end

        private

        def parse_as_typed(payload)
          Lurker::Json::Parser.typed(schema_options).parse(payload)
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
lurker-1.0.0 lib/lurker/json/parser/plain_strategy.rb
lurker-0.6.12 lib/lurker/json/parser/plain_strategy.rb
lurker-0.6.11 lib/lurker/json/parser/plain_strategy.rb
lurker-0.6.10 lib/lurker/json/parser/plain_strategy.rb
lurker-0.6.9 lib/lurker/json/parser/plain_strategy.rb
lurker-0.6.8 lib/lurker/json/parser/plain_strategy.rb
lurker-0.6.7 lib/lurker/json/parser/plain_strategy.rb
lurker-0.6.6 lib/lurker/json/parser/plain_strategy.rb
lurker-0.6.5 lib/lurker/json/parser/plain_strategy.rb
lurker-0.6.4 lib/lurker/json/parser/plain_strategy.rb
lurker-0.6.3 lib/lurker/json/parser/plain_strategy.rb