Sha256: 5373a107beb0c68f4e3cd82ac4ed75611ad7d0f54e0fcfea94ccd2430daac937

Contents?: true

Size: 1.63 KB

Versions: 4

Compression:

Stored size: 1.63 KB

Contents

module OasParser
  class AbstractAttribute
    include OasParser::RawAccessor

    def name(format = nil)
      default = @name || raw['name']
      return default unless format
      case format
      when 'text/xml'
        has_xml_name? ? xml_name : default
      else default
      end
    end

    def enum
      raw['enum'] || (schema ? schema['enum'] : nil)
    end

    def array?
      type == 'array'
    end

    def object?
      type == 'object'
    end

    def collection?
      array? || object?
    end

    def empty?
      raise 'Called empty? on non collection type' unless collection?
      return true if object? && raw['properties'].blank?
      return true if array? && items.blank?
      false
    end

    def properties
      return nil unless collection?
      return [] if empty?
      return convert_property_schema_to_properties(raw['properties']) if object?
      return convert_property_schema_to_properties(items) if array?
      nil
    end

    def has_xml_options?
      raw['xml'].present?
    end

    def is_xml_attribute?
      return false unless has_xml_options?
      raw['xml']['attribute'] || false
    end

    def is_xml_text?
      # See: https://github.com/OAI/OpenAPI-Specification/issues/630#issuecomment-350680346
      return false unless has_xml_options?
      return true if raw['xml']['text'] || false
      raw['xml']['x-text'] || false
    end

    def has_xml_name?
      return false unless has_xml_options?
      xml_name || false
    end

    def xml_name
      raw['xml']['name']
    end

    def subproperties_are_one_of_many?
      return false unless array?
      items['oneOf'].present?
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
oas_parser-0.12.0 lib/oas_parser/abstract_attribute.rb
oas_parser-0.11.2 lib/oas_parser/abstract_attribute.rb
oas_parser-0.11.1 lib/oas_parser/abstract_attribute.rb
oas_parser-0.11.0 lib/oas_parser/abstract_attribute.rb