Class: GoonModelGen::Golang::Package

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Package

Returns a new instance of Package.

Parameters:

  • path (String)


23
24
25
26
27
# File 'lib/goon_model_gen/golang/package.rb', line 23

def initialize(path)
  @path = path
  @types = []
  @files = []
end

Instance Attribute Details

#filesObject (readonly)

Returns the value of attribute files.



20
21
22
# File 'lib/goon_model_gen/golang/package.rb', line 20

def files
  @files
end

#pathObject (readonly)

Returns the value of attribute path.



18
19
20
# File 'lib/goon_model_gen/golang/package.rb', line 18

def path
  @path
end

#typesObject (readonly)

Returns the value of attribute types.



19
20
21
# File 'lib/goon_model_gen/golang/package.rb', line 19

def types
  @types
end

Class Method Details

.regularize_name(name) ⇒ Object



13
14
15
# File 'lib/goon_model_gen/golang/package.rb', line 13

def regularize_name(name)
  name.gsub(/[\-\_]/, '').downcase
end

Instance Method Details

#add(type) ⇒ Object

Parameters:



49
50
51
52
# File 'lib/goon_model_gen/golang/package.rb', line 49

def add(type)
  types.push(type)
  type.package = self
end

#add_file(file) ⇒ Object

Parameters:



43
44
45
46
# File 'lib/goon_model_gen/golang/package.rb', line 43

def add_file(file)
  files.push(file)
  file.package = self
end

#basenameObject



29
30
31
# File 'lib/goon_model_gen/golang/package.rb', line 29

def basename
  @basename ||= (path ? ::File.basename(path, '.*') : nil)
end

#find_or_new_file(name) ⇒ File

Parameters:

  • name (string)

Returns:



81
82
83
# File 'lib/goon_model_gen/golang/package.rb', line 81

def find_or_new_file(name)
  files.detect{|f| f.name == name} || new_file(name)
end

#lookup(name) ⇒ Object

Parameters:

  • name (string)
  • (Type)


102
103
104
# File 'lib/goon_model_gen/golang/package.rb', line 102

def lookup(name)
  name_to_type_map[name]
end

#merge!(other) ⇒ Object



37
38
39
40
# File 'lib/goon_model_gen/golang/package.rb', line 37

def merge!(other)
  other.types.each{|t| add(t) unless types.any?{|oldt| oldt.name == t.name }  }
  other.files.each{|f| add_file(f)  unless files.any?{|oldf| oldf.name == f.name } }
end

#nameObject



33
34
35
# File 'lib/goon_model_gen/golang/package.rb', line 33

def name
  @name ||= basename ? self.class.regularize_name(basename) : nil
end

#name_to_type_mapHash<String,Type>

Returns:

  • (Hash<String,Type>)


94
95
96
97
98
# File 'lib/goon_model_gen/golang/package.rb', line 94

def name_to_type_map
  @name_to_type_map ||= types.each_with_object({}) do |t,d|
    d[t.name] = t
  end
end

#new_combination_type(name) ⇒ CombinationType

Parameters:

  • name (string)

Returns:



75
76
77
# File 'lib/goon_model_gen/golang/package.rb', line 75

def new_combination_type(name)
  CombinationType.new(name).tap{|s| add(s) }
end

#new_enum(name, base_type) ⇒ Enum

Parameters:

  • name (string)
  • base_type (String)

Returns:



61
62
63
# File 'lib/goon_model_gen/golang/package.rb', line 61

def new_enum(name, base_type)
  Enum.new(name, base_type).tap{|s| add(s) }
end

#new_file(name) ⇒ File

Parameters:

  • name (string)

Returns:



87
88
89
90
91
# File 'lib/goon_model_gen/golang/package.rb', line 87

def new_file(name)
  File.new(name).tap do |f|
    add_file(f)
  end
end

#new_named_slice(name, base_type_name, base_type_package_path = nil) ⇒ Slice

Parameters:

  • name (string)
  • base_type_package_path (String) (defaults to: nil)
  • base_type_name (String)

Returns:

  • (Slice)


69
70
71
# File 'lib/goon_model_gen/golang/package.rb', line 69

def new_named_slice(name, base_type_name, base_type_package_path = nil)
  NamedSlice.new(name, base_type_name, base_type_package_path).tap{|s| add(s) }
end

#new_struct(name) ⇒ Object



54
55
56
# File 'lib/goon_model_gen/golang/package.rb', line 54

def new_struct(name)
  Struct.new(name).tap{|s| add(s) }
end