object_sugar 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 4
9
- version: 0.0.4
8
+ - 5
9
+ version: 0.0.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Robert Zotter
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-02-22 00:00:00 -08:00
17
+ date: 2011-03-21 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -27,13 +27,8 @@ extensions: []
27
27
 
28
28
  extra_rdoc_files: []
29
29
 
30
- files:
31
- - .gitignore
32
- - Gemfile
33
- - Rakefile
34
- - lib/object_sugar.rb
35
- - lib/object_sugar/version.rb
36
- - object_sugar.gemspec
30
+ files: []
31
+
37
32
  has_rdoc: true
38
33
  homepage: ""
39
34
  licenses: []
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- # Specify your gem's dependencies in object_sugar.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- require 'bundler'
2
- Bundler::GemHelper.install_tasks
@@ -1,3 +0,0 @@
1
- module ObjectSugar
2
- VERSION = "0.0.4"
3
- end
data/lib/object_sugar.rb DELETED
@@ -1,176 +0,0 @@
1
- module ObjectSugar
2
-
3
- ##
4
- # Setup
5
-
6
- def self.setup!
7
- extend_object_with_constant_constant_helpers!
8
- extend_class_and_module_with_constants!
9
- extend_class_and_module_with_value_enums!
10
- extend_class_and_module_with_bitwise_enums!
11
- end
12
-
13
- ##
14
- # Extend object with helper methods to create class/module constants
15
-
16
- def self.extend_object_with_constant_constant_helpers!
17
- Object.class_eval do
18
- private
19
-
20
- ##
21
- # Creates a class +name+ and creates constants for each +args+
22
- #
23
- # Also accepts hashes as key/value pairs for constant
24
- #
25
- # class Foo
26
- # object_constants :my_constants, :one, :two, :three => "tre"
27
- # end
28
- #
29
- # Will create the following constants, values on class Foo
30
- #
31
- # Foo::MyConstants::ONE => ONE
32
- # Foo::MyConstants::TWO => TWO
33
- # Foo::MyConstants::THREE => tre
34
-
35
- def create_constants(name, *args)
36
- klass = const_set( name.to_s.camelize.to_sym, Class.new )
37
- klass.extend ObjectSugar::InstanceMethods
38
-
39
- args.flatten.each do |enum|
40
- if enum.is_a?(Hash)
41
- enum.each { |key, value| klass.const_set(key.to_s.underscore.upcase, value) }
42
- else
43
- key, value = Array.new(2, enum.to_s.underscore.upcase)
44
- klass.const_set(key, value)
45
- end
46
- end
47
-
48
- klass
49
- end
50
-
51
- ##
52
- # Creates a class +name+ on self and creates a simple enumeration whereas
53
- # each subsequent argument in +args+ has a value +factor+^index
54
-
55
- def create_enum(name, factor, *args)
56
- klass = const_set( name.to_s.camelize.to_sym, Class.new )
57
- klass.extend ObjectSugar::InstanceMethods
58
-
59
- args.flatten.each_with_index { |const, index|
60
- value = (factor == 1) ? (factor * index) : (factor.power!( index ))
61
-
62
- klass.const_set( const.to_s.underscore.upcase, value.to_i )
63
- }
64
-
65
- klass
66
- end
67
-
68
- ##
69
- # Create a constant with a name of the pluralized version of +name+
70
- # that returns all of the class constants of +name+
71
- #
72
- # class Foo
73
- # object_constants :my_constants, :one, :two, :three
74
- # end
75
- #
76
- # Will add the following constant on class Foo
77
- #
78
- # Foo::MY_CONSTANTS
79
- #
80
- # Which would return
81
- # => ONE, TWO, THREE
82
-
83
- def create_pluralized_constant(name)
84
- pluralized = ActiveSupport::Inflector.pluralize( name.to_s ).upcase.to_sym
85
- constants = const_get( name.to_s.camelize.to_sym ).constants
86
-
87
- const_set( pluralized, constants ) unless const_defined?( pluralized )
88
- end
89
- end
90
- end
91
-
92
- ##
93
- # Extend with #object_constants
94
-
95
- def self.extend_class_and_module_with_constants!
96
- [Class, Module].each do |object|
97
- object.class_eval do
98
- def object_constants(name, *args)
99
- create_constants(name, *args)
100
- create_pluralized_constant(name)
101
- end
102
- end
103
- end
104
- end
105
-
106
- ##
107
- # Extend with #value_enums
108
-
109
- def self.extend_class_and_module_with_value_enums!
110
- [Class, Module].each do |object|
111
- object.class_eval do
112
- def value_enums(name, *args)
113
- create_enum( name, 1, *args )
114
- create_pluralized_constant( name )
115
- end
116
- end
117
- end
118
- end
119
-
120
- ##
121
- # Extend with #bitwise_enums
122
-
123
- def self.extend_class_and_module_with_bitwise_enums!
124
- [Class, Module].each do |object|
125
- object.class_eval do
126
- def bitwise_enums(name, *args)
127
- create_enum( name, 2, *args )
128
- create_pluralized_constant( name )
129
- end
130
- end
131
- end
132
- end
133
-
134
- module InstanceMethods
135
- include Enumerable
136
-
137
- ##
138
- # Iterate over each const name and value
139
-
140
- def each(&block)
141
- constants.each { |c| yield(c, const_get(c)) }
142
- end
143
-
144
- ##
145
- # Names
146
-
147
- def names
148
- map(&:first)
149
- end
150
-
151
- ##
152
- # Values
153
-
154
- def values
155
- map(&:last)
156
- end
157
-
158
- ##
159
- # Find Name
160
-
161
- def find_name(&block)
162
- _found = find(&block)
163
- _found ? _found.first : nil
164
- end
165
-
166
- ##
167
- # Find Value
168
-
169
- def find_value(&block)
170
- _found = find(&block)
171
- _found ? _found.last : nil
172
- end
173
- end
174
- end
175
-
176
- ObjectSugar.setup!
data/object_sugar.gemspec DELETED
@@ -1,21 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "object_sugar/version"
4
-
5
- Gem::Specification.new do |s|
6
- s.name = "object_sugar"
7
- s.version = ObjectSugar::VERSION
8
- s.platform = Gem::Platform::RUBY
9
- s.authors = ["Robert Zotter"]
10
- s.email = ["robertzotter@ioffer.com"]
11
- s.homepage = ""
12
- s.summary = %q{Object sweetness}
13
- s.description = %q{Object sweetness}
14
-
15
- s.rubyforge_project = "object_sugar"
16
-
17
- s.files = `git ls-files`.split("\n")
18
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
- s.require_paths = ["lib"]
21
- end