Sha256: ded6eef69e047f009328530f2f81f6dc0757531ca50e0797295dafda65ebca99

Contents?: true

Size: 1.06 KB

Versions: 2

Compression:

Stored size: 1.06 KB

Contents

require 'fileutils'
require 'ggem/template'

module GGem
  class Gem

    attr_reader :root_path, :name

    def initialize(path, name)
      @root_path = path
      self.name = name
    end

    def path
      File.join(root_path, name)
    end

    def name=(name)
      @name = name.
        gsub(/([A-Z])([a-z])/, '_\1\2').
        gsub(/_+/, '_').
        sub(/^_/, '').
        downcase
    end

    def module_name
      @module_name ||= transform_name({
        '_' => '',
        '-' => '::'
      }) {|part| part.capitalize }
    end
    def ruby_name
      @ruby_name ||= transform_name({
        '-' => '/'
      }) {|part| part.downcase }
    end

    def save
      Template.new(self).tap do |t|
        t.save
        t.init
      end
    end

    private

    def transform_name(conditions, &block)
      n = (block ? block.call(self.name) : self.name)
      conditions.each do |on, glue|
        if (a = n.split(on)).size > 1
          n = a.collect do |part|
            block.call(part) if block
          end.join(glue)
        end
      end
      n
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ggem-1.2.1 lib/ggem/gem.rb
ggem-1.2.0 lib/ggem/gem.rb