# File lib/uri_template/colon.rb, line 169
  def extract(uri)
    md = self.to_r.match(uri)
    return nil unless md
    result = {}
    splat = []
    self.tokens.select{|tk| tk.kind_of? URITemplate::Expression }.each_with_index do |tk,i|
      if tk.kind_of? Token::Splat
        splat << md[i+1]
        result['splat'] = splat unless result.key? 'splat'
      else
        result[tk.name] = Utils.unescape_url( md[i+1] )
      end
    end
    if block_given?
      return yield(result)
    end
    return result
  end