Class: Klenod::Build::ModuleId

Inherits:
Object
  • Object
show all
Defined in:
lib/klenod/build/module_id.rb

Constant Summary collapse

SCHEME_PATTERN =
/\A[A-Za-z][A-Za-z0-9+.-]*:/

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value, query = nil) ⇒ ModuleId

Returns a new instance of ModuleId.



14
15
16
17
18
19
20
21
22
# File 'lib/klenod/build/module_id.rb', line 14

def initialize(value, query = nil)
  @url = absolute_url_for(value.to_s)
  @url = @url.with(query: query) if query

  @scheme = @url.scheme.to_sym
  @host = @url.authority
  @uri_path = absolute_uri_path(@url.path)
  @query = @url.query
end

Instance Attribute Details

#hostObject (readonly)

Returns the value of attribute host.



24
25
26
# File 'lib/klenod/build/module_id.rb', line 24

def host
  @host
end

#queryObject (readonly)

Returns the value of attribute query.



24
25
26
# File 'lib/klenod/build/module_id.rb', line 24

def query
  @query
end

#schemeObject (readonly)

Returns the value of attribute scheme.



24
25
26
# File 'lib/klenod/build/module_id.rb', line 24

def scheme
  @scheme
end

#uri_pathObject (readonly)

Returns the value of attribute uri_path.



24
25
26
# File 'lib/klenod/build/module_id.rb', line 24

def uri_path
  @uri_path
end

Class Method Details

.parse(value) ⇒ Object



10
11
12
# File 'lib/klenod/build/module_id.rb', line 10

def self.parse(value)
  new(value)
end

Instance Method Details

#dirnameObject



53
54
55
# File 'lib/klenod/build/module_id.rb', line 53

def dirname
  File.dirname(relative_path)
end

#eql?(other) ⇒ Boolean Also known as: ==

Returns:

  • (Boolean)


61
62
63
# File 'lib/klenod/build/module_id.rb', line 61

def eql?(other)
  other.is_a?(self.class) && to_s == other.to_s
end

#extnameObject



57
58
59
# File 'lib/klenod/build/module_id.rb', line 57

def extname
  File.extname(uri_path)
end

#hashObject



66
67
68
# File 'lib/klenod/build/module_id.rb', line 66

def hash
  to_s.hash
end

#merge(specifier) ⇒ Object



26
27
28
29
30
31
# File 'lib/klenod/build/module_id.rb', line 26

def merge(specifier)
  specifier = specifier.to_s
  return self.class.parse(specifier) if explicit_scheme?(specifier)

  self.class.parse((@url + Protocol::URL[specifier]).to_s)
end

#pathObject



37
38
39
40
41
42
43
44
45
46
# File 'lib/klenod/build/module_id.rb', line 37

def path
  case scheme
  when :app
    relative_path
  when :virtual
    "virtual:#{relative_path}"
  else
    host ? "#{scheme}://#{host}#{uri_path}" : "#{scheme}:#{relative_path}"
  end
end

#relative_pathObject Also known as: bare_path



48
49
50
# File 'lib/klenod/build/module_id.rb', line 48

def relative_path
  uri_path.delete_prefix("/")
end

#to_sObject



33
34
35
# File 'lib/klenod/build/module_id.rb', line 33

def to_s
  @url.to_s
end