Sha256: 8a802cd8662599272510052aa516d715be2f4e59fa0436451939dfb3fcd68e1d

Contents?: true

Size: 961 Bytes

Versions: 4

Compression:

Stored size: 961 Bytes

Contents

require 'active_support/inflector'
require 'sugar-high/array'

class Module
  [:include, :extend].each do |name|
    plural = name.to_s.pluralize
    class_eval %{
      def #{plural} *module_names
        module_names.to_symbols.each do |name|
          class_eval %{
            #{name} \#{name.to_s.camelize}
          }
        end
      end

      def #{name}_from module_name, *sub_modules
        sub_modules.to_symbols.each do |name|
          class_eval %{
            #{name} \#{module_name.to_s.camelize}::\#{name.to_s.camelize}
          }
        end
      end
    }
  end

  def includes_and_extends *module_names
    includes module_names
    extends module_names
  end

  def includes_and_extends_from module_name, *sub_modules
    includes module_name, *sub_modules
    extends module_name, *sub_modules
  end

  alias_method :extends_and_includes, :includes_and_extends
  alias_method :extends_and_includes_from, :includes_and_extends_from
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sugar-high-0.7.3 lib/sugar-high/includes.rb
sugar-high-0.7.2 lib/sugar-high/includes.rb
sugar-high-0.7.1 lib/sugar-high/includes.rb
sugar-high-0.7.0 lib/sugar-high/includes.rb