class GGem::Gem

Constants

NoNameError

Attributes

name[R]
root_path[R]

Public Class Methods

new(path, name) click to toggle source
# File lib/ggem/gem.rb, line 13
def initialize(path, name)
  raise NoNameError if name.to_s.empty?
  @root_path, self.name = path, name
end

Public Instance Methods

module_name() click to toggle source
# File lib/ggem/gem.rb, line 31
def module_name
  transforms = {
    "_" => "",
    "-" => "",
  }
  @module_name ||= transform_name(transforms, &:capitalize)
end
name=(name) click to toggle source
# File lib/ggem/gem.rb, line 27
def name=(name)
  @name = normalize_name(name)
end
path() click to toggle source
# File lib/ggem/gem.rb, line 23
def path
  File.join(@root_path, @name)
end
ruby_name() click to toggle source
# File lib/ggem/gem.rb, line 39
def ruby_name
  @ruby_name ||= transform_name(&:downcase)
end
save!() click to toggle source
# File lib/ggem/gem.rb, line 18
def save!
  GGem::Template.new(self).save
  self
end

Private Instance Methods

normalize_name(name) click to toggle source
# File lib/ggem/gem.rb, line 45
def normalize_name(name)
  und_camelcs = [/([A-Z])([a-z])/, '_\1\2']
  rm_dup_und  = [/_+/, "_"]
  rm_lead_und = [/^_/, ""]
  name.gsub(*und_camelcs).gsub(*rm_dup_und).sub(*rm_lead_und).downcase
end
transform_name(conditions = {}, &block) click to toggle source
# File lib/ggem/gem.rb, line 52
def transform_name(conditions = {}, &block)
  n = (block ? block.call(name) : name)
  conditions.each do |on, glue|
    if (a = n.split(on)).size > 1
      n = a.map{ |part| block&.call(part) }.join(glue)
    end
  end
  n
end