Class: Ace::Support::Nav::Atoms::UriParser

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/support/nav/atoms/uri_parser.rb

Overview

Parses resource URIs

Instance Method Summary collapse

Constructor Details

#initialize(config_loader: nil) ⇒ UriParser

Returns a new instance of UriParser.



11
12
13
# File 'lib/ace/support/nav/atoms/uri_parser.rb', line 11

def initialize(config_loader: nil)
  @config_loader = config_loader || Molecules::ConfigLoader.new
end

Instance Method Details

#extract_protocol(uri_string) ⇒ Object



42
43
44
45
# File 'lib/ace/support/nav/atoms/uri_parser.rb', line 42

def extract_protocol(uri_string)
  return nil unless uri_string.include?("://")
  uri_string.split("://", 2)[0]
end

#parse(uri_string) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ace/support/nav/atoms/uri_parser.rb', line 15

def parse(uri_string)
  return nil unless uri_string.is_a?(String)
  return nil unless uri_string.include?("://")

  parts = uri_string.split("://", 2)
  protocol = parts[0]
  rest = parts[1]

  return nil unless valid_protocol?(protocol)
  return {protocol: protocol, source: nil, path: nil} if rest.nil? || rest.empty?

  # Check for source-specific syntax (@source/path or @source)
  if rest.start_with?("@")
    parse_source_specific(protocol, rest)
  else
    {protocol: protocol, source: nil, path: rest}
  end
end

#valid_protocol?(protocol) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/ace/support/nav/atoms/uri_parser.rb', line 34

def valid_protocol?(protocol)
  @config_loader.valid_protocol?(protocol)
end

#valid_protocolsObject



38
39
40
# File 'lib/ace/support/nav/atoms/uri_parser.rb', line 38

def valid_protocols
  @config_loader.valid_protocols
end