Method: When::Parts::Resource._decode

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

._decode(iri) ⇒ Object



415
416
417
418
419
420
421
422
423
424
425
426
427
428
# File 'lib/when_exe/parts/resource.rb', line 415

def _decode(iri)
  return iri unless iri =~ /%28/

  iri = iri.dup
  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