class RBS::Location::WithChildren
Attributes
optional_children[R]
required_children[R]
Public Class Methods
new(buffer:, start_pos:, end_pos:)
click to toggle source
Calls superclass method
RBS::Location::new
# File rbs-1.4.0/lib/rbs/location.rb, line 150 def initialize(buffer:, start_pos:, end_pos:) super(buffer: buffer, start_pos: start_pos, end_pos: end_pos) @optional_children = {} @required_children = {} end
Public Instance Methods
[](key)
click to toggle source
# File rbs-1.4.0/lib/rbs/location.rb, line 163 def [](key) case when required_children.key?(_ = key) range = required_children[_ = key] Location.new(buffer: buffer, start_pos: range.begin, end_pos: range.end) when optional_children.key?(_ = key) range = required_children[_ = key] || optional_children[_ = key] if range Location.new(buffer: buffer, start_pos: range.begin, end_pos: range.end) end else raise "Unknown key given: `#{key}`" end end
initialize_copy(from)
click to toggle source
# File rbs-1.4.0/lib/rbs/location.rb, line 157 def initialize_copy(from) required_children.merge!(from.required_children) optional_children.merge!(from.optional_children) self end
merge_optional(hash)
click to toggle source
# File rbs-1.4.0/lib/rbs/location.rb, line 197 def merge_optional(hash) this = dup h = hash.transform_values do |value| case value when Range value when Location value.range else nil end end this.optional_children.merge!(h) this end
merge_required(hash)
click to toggle source
# File rbs-1.4.0/lib/rbs/location.rb, line 178 def merge_required(hash) this = dup h = hash.transform_values do |value| case value when Range value when Location value.range else raise end end this.required_children.merge!(h) this end