Sha256: 638d92f6a1c3cd433d243a801c5944b93e808ccaef9bc40e053f3c1ae702b0dd

Contents?: true

Size: 846 Bytes

Versions: 4

Compression:

Stored size: 846 Bytes

Contents

# frozen_string_literal: true

require "yaml"
require "json"

module Openapi3Parser
  class SourceInput
    class StringParser
      def self.call(input, filename = nil)
        new(input, filename).call
      end

      def initialize(input, filename)
        @input = input
        @filename = filename
      end

      def call
        json? ? parse_json : parse_yaml
      end

      private_class_method :new

      private

      attr_reader :input, :filename

      def json?
        return false if filename && ::File.extname(filename) == ".yaml"
        json_filename = filename && ::File.extname(filename) == ".json"
        json_filename || input.strip[0] == "{"
      end

      def parse_json
        JSON.parse(input)
      end

      def parse_yaml
        YAML.safe_load(input, [Date, Time], [], true)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
openapi3_parser-0.7.0 lib/openapi3_parser/source_input/string_parser.rb
openapi3_parser-0.6.1 lib/openapi3_parser/source_input/string_parser.rb
openapi3_parser-0.6.0 lib/openapi3_parser/source_input/string_parser.rb
openapi3_parser-0.5.2 lib/openapi3_parser/source_input/string_parser.rb