Class: Class2

Inherits:
Object
  • Object
show all
Defined in:
lib/class2.rb,
lib/class2/version.rb

Defined Under Namespace

Modules: LowerCamelCase, SnakeCase, StrictConstructor, UpperCamelCase

Constant Summary collapse

CONVERSIONS =
{
  Array     => lambda { |v| "Array(#{v})" },
  Date      => lambda { |v| "#{v} && Date.parse(#{v})" },
  DateTime  => lambda { |v| "#{v} && DateTime.parse(#{v})" },
  Float     => lambda { |v| "#{v} && Float(#{v})" },
  Hash      => lambda { |v| sprintf "%s.respond_to?(:to_h) ? %s.to_h : %s", v, v, v },
  Integer   => lambda { |v| "#{v} && Integer(#{v})" },
  String    => lambda { |v| "#{v} && String(#{v})" },
  TrueClass => lambda do |v|
    sprintf '["1", 1, 1.0, true].freeze.include?(%s.is_a?(String) ? %s.strip : %s)', v, v, v
  end
}
VERSION =
"0.4.0"

Class Method Summary collapse

Class Method Details

.new(*argz, &block) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/class2.rb', line 45

def new(*argz, &block)
  specs = argz
  namespace = Object

  if specs[0].is_a?(String) || specs[0].is_a?(Module)
    namespace = specs[0].is_a?(String) ? create_namespace(specs.shift) : specs.shift
  end

  specs.each do |spec|
    spec = [spec] unless spec.respond_to?(:each)
    spec.each { |klass, attributes| make_class(namespace, klass, attributes, block) }
  end

  nil
end