Class: Addressable::Template::MatchData

Inherits:
Object
  • Object
show all
Defined in:
lib/addressable/template.rb

Overview

This class represents the data that is extracted when a Template is matched against a URI.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(uri, template, mapping) ⇒ MatchData

Creates a new MatchData object. MatchData objects should never be instantiated directly.



103
104
105
106
107
# File 'lib/addressable/template.rb', line 103

def initialize(uri, template, mapping)
  @uri = uri.dup.freeze
  @template = template
  @mapping = mapping.dup.freeze
end

Instance Attribute Details

#mappingHash (readonly)



125
126
127
# File 'lib/addressable/template.rb', line 125

def mapping
  @mapping
end

#templateAddressable::Template (readonly)



117
118
119
# File 'lib/addressable/template.rb', line 117

def template
  @template
end

#uriAddressable::URI (readonly)



112
113
114
# File 'lib/addressable/template.rb', line 112

def uri
  @uri
end

Instance Method Details

#[](key, len = nil) ⇒ Array, ...

Accesses captured values by name or by index.



170
171
172
173
174
175
176
177
178
# File 'lib/addressable/template.rb', line 170

def [](key, len = nil)
  if len
    to_a[key, len]
  elsif String === key or Symbol === key
    mapping[key.to_s]
  else
    to_a[key]
  end
end

#inspectString

Returns a String representation of the MatchData’s state.



213
214
215
216
# File 'lib/addressable/template.rb', line 213

def inspect
  sprintf("#<%s:%#0x RESULT:%s>",
    self.class.to_s, self.object_id, self.mapping.inspect)
end

#pre_matchString Also known as: post_match

Dummy method for code expecting a ::MatchData instance



222
223
224
# File 'lib/addressable/template.rb', line 222

def pre_match
  ""
end

#to_aArray



184
185
186
# File 'lib/addressable/template.rb', line 184

def to_a
  [to_s, *values]
end

#to_sString Also known as: string



191
192
193
# File 'lib/addressable/template.rb', line 191

def to_s
  uri.to_s
end

#valuesArray Also known as: captures



143
144
145
146
147
148
# File 'lib/addressable/template.rb', line 143

def values
  @values ||= self.variables.inject([]) do |accu, key|
    accu << self.mapping[key]
    accu
  end
end

#values_at(*indexes) ⇒ Array

Returns multiple captured values at once.

See Also:



205
206
207
# File 'lib/addressable/template.rb', line 205

def values_at(*indexes)
  indexes.map { |i| self[i] }
end

#variablesArray Also known as: keys, names



132
133
134
# File 'lib/addressable/template.rb', line 132

def variables
  self.template.variables
end