class Openapi3Parser::Source::Pointer
A class to decorate the array of fields that make up a pointer and provide common means to convert it into different representations.
Attributes
absolute[R]
segments[R]
Public Class Methods
from_fragment(fragment)
click to toggle source
# File lib/openapi3_parser/source/pointer.rb, line 10 def self.from_fragment(fragment) fragment = fragment[1..-1] if fragment.start_with?("#") absolute = fragment[0] == "/" segments = fragment.split("/").map do |part| next if part == "" unescaped = CGI.unescape(part.gsub("%20", "+")) unescaped.match?(/\A\d+\z/) ? unescaped.to_i : unescaped end new(segments.compact, absolute: absolute) end
merge_pointers(base_pointer, new_pointer)
click to toggle source
# File lib/openapi3_parser/source/pointer.rb, line 22 def self.merge_pointers(base_pointer, new_pointer) MergePointers.call(base_pointer, new_pointer) end
new(segments, absolute: true)
click to toggle source
@param [::Array] segments @param [Boolean] absolute
# File lib/openapi3_parser/source/pointer.rb, line 30 def initialize(segments, absolute: true) @segments = segments.freeze @absolute = absolute end
Public Instance Methods
==(other)
click to toggle source
# File lib/openapi3_parser/source/pointer.rb, line 35 def ==(other) segments == other.segments end
fragment()
click to toggle source
# File lib/openapi3_parser/source/pointer.rb, line 39 def fragment fragment = segments.map { |s| CGI.escape(s.to_s).gsub("+", "%20") } .join("/") "##{absolute ? fragment.prepend('/') : fragment}" end
inspect()
click to toggle source
# File lib/openapi3_parser/source/pointer.rb, line 49 def inspect %{#{self.class.name}(segments: #{segments}, fragment: "#{fragment}")} end
root?()
click to toggle source
# File lib/openapi3_parser/source/pointer.rb, line 53 def root? segments.empty? end
to_s()
click to toggle source
# File lib/openapi3_parser/source/pointer.rb, line 45 def to_s fragment end