Sha256: 170d961ca08103497dce50c513997ce975429f04beacd889e6eebd1318bf7ff6

Contents?: true

Size: 836 Bytes

Versions: 4

Compression:

Stored size: 836 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, [], [], true)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
openapi3_parser-0.5.1 lib/openapi3_parser/source_input/string_parser.rb
openapi3_parser-0.5.0 lib/openapi3_parser/source_input/string_parser.rb
openapi3_parser-0.4.0 lib/openapi3_parser/source_input/string_parser.rb
openapi3_parser-0.3.0 lib/openapi3_parser/source_input/string_parser.rb