Class: GoonModelGen::Golang::Modifier
- Defined in:
- lib/goon_model_gen/golang/modifier.rb
Constant Summary collapse
- PATTERN =
/\A\*|\A\[\d*\]/
Instance Attribute Summary collapse
-
#prefix ⇒ Object
readonly
Returns the value of attribute prefix.
-
#target ⇒ Object
readonly
Returns the value of attribute target.
-
#target_name ⇒ Object
readonly
Returns the value of attribute target_name.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(prefix, target) ⇒ Modifier
constructor
A new instance of Modifier.
- #name ⇒ Object
- #package ⇒ Object
- #qualified_name(pkg2alias = nil) ⇒ string
- #resolve(pkgs) ⇒ Object
Methods inherited from Type
Constructor Details
#initialize(prefix, target) ⇒ Modifier
Returns a new instance of Modifier.
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/goon_model_gen/golang/modifier.rb', line 10 def initialize(prefix, target) @prefix = prefix case target when Type @target = target @target_name = target.name else @target = nil @target_name = target.to_s end end |
Instance Attribute Details
#prefix ⇒ Object (readonly)
Returns the value of attribute prefix.
8 9 10 |
# File 'lib/goon_model_gen/golang/modifier.rb', line 8 def prefix @prefix end |
#target ⇒ Object (readonly)
Returns the value of attribute target.
9 10 11 |
# File 'lib/goon_model_gen/golang/modifier.rb', line 9 def target @target end |
#target_name ⇒ Object (readonly)
Returns the value of attribute target_name.
8 9 10 |
# File 'lib/goon_model_gen/golang/modifier.rb', line 8 def target_name @target_name end |
Class Method Details
.parse(s) ⇒ Proc
47 48 49 50 51 52 53 54 55 |
# File 'lib/goon_model_gen/golang/modifier.rb', line 47 def parse(s) parts = parse_expression(s) t = yield(parts.shift) return nil unless t parts.each do |part| t = new(part, t) end t end |
.parse_expression(s) ⇒ Array<String>
59 60 61 62 |
# File 'lib/goon_model_gen/golang/modifier.rb', line 59 def parse_expression(s) m = s.match(PATTERN) m.nil? ? [s] : parse_expression(s.sub(PATTERN, '')) + [m[0]] end |
Instance Method Details
#name ⇒ Object
26 27 28 |
# File 'lib/goon_model_gen/golang/modifier.rb', line 26 def name prefix + target.name end |
#package ⇒ Object
22 23 24 |
# File 'lib/goon_model_gen/golang/modifier.rb', line 22 def package target.package end |
#qualified_name(pkg2alias = nil) ⇒ string
32 33 34 |
# File 'lib/goon_model_gen/golang/modifier.rb', line 32 def qualified_name(pkg2alias = nil) prefix + target.qualified_name(pkg2alias) end |
#resolve(pkgs) ⇒ Object
37 38 39 40 |
# File 'lib/goon_model_gen/golang/modifier.rb', line 37 def resolve(pkgs) return if target @target = pkgs.type_for(target_name) || raise("#{target_name.inspect} not found") end |