class GoonModelGen::Golang::Package

Attributes

files[R]
path[R]
types[R]

Public Class Methods

new(path) click to toggle source

@param path [String]

# File lib/goon_model_gen/golang/package.rb, line 23
def initialize(path)
  @path = path
  @types = []
  @files = []
end
regularize_name(name) click to toggle source
# File lib/goon_model_gen/golang/package.rb, line 13
def regularize_name(name)
  name.gsub(/[\-\_]/, '').downcase
end

Public Instance Methods

add(type) click to toggle source

@param type [Type]

# File lib/goon_model_gen/golang/package.rb, line 49
def add(type)
  types.push(type)
  type.package = self
end
add_file(file) click to toggle source

@param file [File]

# File lib/goon_model_gen/golang/package.rb, line 43
def add_file(file)
  files.push(file)
  file.package = self
end
basename() click to toggle source
# File lib/goon_model_gen/golang/package.rb, line 29
def basename
  @basename ||= (path ? ::File.basename(path, '.*') : nil)
end
find_or_new_file(name) click to toggle source

@param name [string] @return [File]

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

@param name [string] @param [Type]

# File lib/goon_model_gen/golang/package.rb, line 102
def lookup(name)
  name_to_type_map[name]
end
merge!(other) click to toggle source
# 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() click to toggle source
# 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() click to toggle source

@return [Hash<String,Type>]

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

@param name [string] @return [CombinationType]

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

@param name [string] @param base_type [String] @return [Enum]

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

@param name [string] @return [File]

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

@param name [string] @param base_type_package_path [String] @param base_type_name [String] @return [Slice]

# 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) click to toggle source
# File lib/goon_model_gen/golang/package.rb, line 54
def new_struct(name)
  Struct.new(name).tap{|s| add(s) }
end