Class: GoonModelGen::Golang::Package
- Inherits:
-
Object
- Object
- GoonModelGen::Golang::Package
- Defined in:
- lib/goon_model_gen/golang/package.rb
Instance Attribute Summary collapse
-
#files ⇒ Object
readonly
Returns the value of attribute files.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#types ⇒ Object
readonly
Returns the value of attribute types.
Class Method Summary collapse
Instance Method Summary collapse
- #add(type) ⇒ Object
- #add_file(file) ⇒ Object
- #basename ⇒ Object
- #find_or_new_file(name) ⇒ File
-
#initialize(path) ⇒ Package
constructor
A new instance of Package.
- #lookup(name) ⇒ Object
- #merge!(other) ⇒ Object
- #name ⇒ Object
- #name_to_type_map ⇒ Hash<String,Type>
- #new_combination_type(name) ⇒ CombinationType
- #new_enum(name, base_type) ⇒ Enum
- #new_file(name) ⇒ File
- #new_named_slice(name, base_type_name, base_type_package_path = nil) ⇒ Slice
- #new_struct(name) ⇒ Object
Constructor Details
#initialize(path) ⇒ Package
Returns a new instance of Package.
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
#files ⇒ Object (readonly)
Returns the value of attribute files.
20 21 22 |
# File 'lib/goon_model_gen/golang/package.rb', line 20 def files @files end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
18 19 20 |
# File 'lib/goon_model_gen/golang/package.rb', line 18 def path @path end |
#types ⇒ Object (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
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
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 |
#basename ⇒ Object
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
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
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 |
#name ⇒ Object
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_map ⇒ 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
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
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
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
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 |