Class: GoonModelGen::Golang::Modifier

Inherits:
Type
  • Object
show all
Defined in:
lib/goon_model_gen/golang/modifier.rb

Constant Summary collapse

PATTERN =
/\A\*|\A\[\d*\]/

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Type

#memo

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

#prefixObject (readonly)

Returns the value of attribute prefix.



8
9
10
# File 'lib/goon_model_gen/golang/modifier.rb', line 8

def prefix
  @prefix
end

#targetObject (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_nameObject (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

Parameters:

  • s (String)

Returns:

  • (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>

Parameters:

  • s (String)

Returns:

  • (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

#nameObject



26
27
28
# File 'lib/goon_model_gen/golang/modifier.rb', line 26

def name
  prefix + target.name
end

#packageObject



22
23
24
# File 'lib/goon_model_gen/golang/modifier.rb', line 22

def package
  target.package
end

#qualified_name(pkg2alias = nil) ⇒ string

Parameters:

  • pkg2alias (Hash<String,String>) (defaults to: nil)

Returns:

  • (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

Parameters:



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