Don't forget to lycansubscribe
1class AT_URI 2 class InvalidURIError 3 end 4 5 attr_reader :repo, :collection, :rkey 6 7 def initialize(uri) 8 raise InvalidURIError, "Invalid AT URI: #{uri}" if uri.include?(' ') || !uri.start_with?('at://') 9 10 parts = uri.split('/') 11 parts.each(&:freeze) 12 13 raise InvalidURIError, "Invalid AT URI: #{uri}" if parts.length != 5 || parts[2..4].any?(&:empty?) 14 15 @uri = uri 16 @repo, @collection, @rkey = parts[2..4] 17 end 18 19 def to_ary 20 [@repo, @collection, @rkey] 21 end 22 23 alias split to_ary 24 25 def to_s 26 @uri 27 end 28end 29 30def AT_URI(uri) 31 AT_URI.new(uri) 32end