class GoonModelGen::Golang::Modifier

Constants

PATTERN

Attributes

prefix[R]
target[R]
target_name[R]

Public Class Methods

new(prefix, target) click to toggle source
# 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
parse(s) { |shift| ... } click to toggle source

@param s [String] @return [Proc]

# 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) click to toggle source

@param s [String] @return [Array<String>]

# 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

Public Instance Methods

name() click to toggle source
# File lib/goon_model_gen/golang/modifier.rb, line 26
def name
  prefix + target.name
end
package() click to toggle source
# File lib/goon_model_gen/golang/modifier.rb, line 22
def package
  target.package
end
qualified_name(pkg2alias = nil) click to toggle source

@param pkg2alias [Hash<String,String>] @return [string]

# File lib/goon_model_gen/golang/modifier.rb, line 32
def qualified_name(pkg2alias = nil)
  prefix + target.qualified_name(pkg2alias)
end
resolve(pkgs) click to toggle source

@param pkgs [Packages]

# 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