Method: When::Parts::Resource._decode

Defined in:
lib/when_exe/parts/resource.rb

._decode(iri) ⇒ Object



498
499
500
501
502
503
504
505
506
507
508
509
510
511
# File 'lib/when_exe/parts/resource.rb', line 498

def _decode(iri)
  iri = iri.gsub(When::Parts::Resource::IRIDecode) {|c| When::Parts::Resource::IRIDecodeTable[c.upcase]}
  return iri unless iri =~ /%28/

  begin
    unless iri.gsub!(/%28.*?%29/) {|token|
      token.gsub(/%([\dA-F]{2})/i) {$1.to_i(16).chr}
    }
      raise ArgumentError, 'Brackets do not correspond: ' + iri 
    end
  end while iri =~ /%28/
  iri = $1 if iri =~ /\A\((.*)\)\z/
  iri
end