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.


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

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

Instance Attribute Details

#mappingHash (readonly)


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

def mapping
  @mapping
end

#templateAddressable::Template (readonly)


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

def template
  @template
end

#uriAddressable::URI (readonly)


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

def uri
  @uri
end

Instance Method Details

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

Accesses captured values by name or by index.


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

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.


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

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


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

def pre_match
  ""
end

#to_aArray


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

def to_a
  [to_s, *values]
end

#to_sString Also known as: string


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

def to_s
  uri.to_s
end

#valuesArray Also known as: captures


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

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:


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

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

#variablesArray Also known as: keys, names


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

def variables
  self.template.variables
end