Class: Gitomator::Util::Repo::NameResolver
- Inherits:
-
Object
- Object
- Gitomator::Util::Repo::NameResolver
- Defined in:
- lib/gitomator/util/repo/name_resolver.rb
Overview
Convenience class dealing with repo names of the format ‘NAMESPACE/REPO:BRANCH`.
Instance Attribute Summary collapse
-
#default_namespace ⇒ Object
readonly
Returns the value of attribute default_namespace.
Instance Method Summary collapse
- #branch(name) ⇒ Object
- #full_name(repo_name) ⇒ Object
-
#initialize(default_namespace = nil) ⇒ NameResolver
constructor
A new instance of NameResolver.
- #name_only(name) ⇒ Object
- #namespace(name) ⇒ Object
-
#tokenize(name) ⇒ Object
Given a string of the format “namespace/name:branch”, return an array with three strings: 1.
Constructor Details
#initialize(default_namespace = nil) ⇒ NameResolver
Returns a new instance of NameResolver.
13 14 15 |
# File 'lib/gitomator/util/repo/name_resolver.rb', line 13 def initialize(default_namespace=nil) @default_namespace = default_namespace end |
Instance Attribute Details
#default_namespace ⇒ Object (readonly)
Returns the value of attribute default_namespace.
11 12 13 |
# File 'lib/gitomator/util/repo/name_resolver.rb', line 11 def default_namespace @default_namespace end |
Instance Method Details
#branch(name) ⇒ Object
35 36 37 |
# File 'lib/gitomator/util/repo/name_resolver.rb', line 35 def branch(name) tokenize(name)[2] end |
#full_name(repo_name) ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/gitomator/util/repo/name_resolver.rb', line 18 def full_name(repo_name) namespace, name = tokenize(repo_name) if namespace.nil? return name else return "#{namespace}/#{name}" end end |
#name_only(name) ⇒ Object
31 32 33 |
# File 'lib/gitomator/util/repo/name_resolver.rb', line 31 def name_only(name) tokenize(name)[1] end |
#namespace(name) ⇒ Object
27 28 29 |
# File 'lib/gitomator/util/repo/name_resolver.rb', line 27 def namespace(name) tokenize(name)[0] end |
#tokenize(name) ⇒ Object
Given a string of the format “namespace/name:branch”, return an array with three strings:
1. Namespace
2. Repo-name
3. branch
If the namespace is missing, self’s default namespace will be used.
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/gitomator/util/repo/name_resolver.rb', line 50 def tokenize(name) m = /^([\w-]+\/)?([\w-]+)(\:[\w-]+)?$/.match(name) raise "Invalid repo name, '#{name}'." if m.nil? namespace = m[1] || @default_namespace namespace = namespace.gsub('/', '') unless namespace.nil? repo = m[2] branch = m[3] branch = branch.gsub(':', '') unless branch.nil? return [namespace, repo, branch] end |