gorillib 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.textile +11 -0
- data/VERSION +1 -1
- data/gorillib.gemspec +4 -4
- data/lib/gorillib/hashlike.rb +4 -4
- data/lib/gorillib/receiver/active_model_shim.rb +18 -5
- data/lib/gorillib/receiver/acts_as_hash.rb +5 -3
- data/lib/gorillib/receiver/locale/en.yml +27 -0
- data/lib/gorillib/receiver_model.rb +21 -0
- data/spec/hashlike/behave_same_as_hash_spec.rb +2 -2
- metadata +5 -5
- data/spec/hashlike/hashlike_via_accessors_fuzzing_spec.rb +0 -37
data/CHANGELOG.textile
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
h3. 2011-06-29 - Version 0.1.3: Fancier receivers
|
2
|
+
|
3
|
+
* can now mix activemodel into a receiver, getting all its validation and other awesomeness
|
4
|
+
* added receiver_model as an experimental 'I'm a fancy cadillac-style receiver'
|
5
|
+
|
6
|
+
h3. 2011-06-24 Version 0.1.2: Receiver body fixes
|
7
|
+
|
8
|
+
* Better @Object.try@ (via active_support)
|
9
|
+
* Receiver body can now be an interpolated string or a hash; this lets you use anonymous classes. Added tuple methods (does an in-order traversal).
|
10
|
+
* Bugfix for inclusion order in ActsAsHash
|
11
|
+
|
1
12
|
h3. Version 0.1.0: Hashlike refactor, Receiver arrives
|
2
13
|
|
3
14
|
v0.1.0 brings
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/gorillib.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gorillib}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Infochimps"]
|
12
|
-
s.date = %q{2011-06-
|
12
|
+
s.date = %q{2011-06-29}
|
13
13
|
s.description = %q{Gorillib: infochimps lightweight subset of ruby convenience methods}
|
14
14
|
s.email = %q{coders@infochimps.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -71,8 +71,10 @@ Gem::Specification.new do |s|
|
|
71
71
|
"lib/gorillib/receiver/active_model_shim.rb",
|
72
72
|
"lib/gorillib/receiver/acts_as_hash.rb",
|
73
73
|
"lib/gorillib/receiver/acts_as_loadable.rb",
|
74
|
+
"lib/gorillib/receiver/locale/en.yml",
|
74
75
|
"lib/gorillib/receiver/tree_diff.rb",
|
75
76
|
"lib/gorillib/receiver/validations.rb",
|
77
|
+
"lib/gorillib/receiver_model.rb",
|
76
78
|
"lib/gorillib/some.rb",
|
77
79
|
"lib/gorillib/string/constantize.rb",
|
78
80
|
"lib/gorillib/string/human.rb",
|
@@ -97,7 +99,6 @@ Gem::Specification.new do |s|
|
|
97
99
|
"spec/hash/zip_spec.rb",
|
98
100
|
"spec/hashlike/behave_same_as_hash_spec.rb",
|
99
101
|
"spec/hashlike/hashlike_behavior_spec.rb",
|
100
|
-
"spec/hashlike/hashlike_via_accessors_fuzzing_spec.rb",
|
101
102
|
"spec/hashlike/hashlike_via_accessors_spec.rb",
|
102
103
|
"spec/hashlike_spec.rb",
|
103
104
|
"spec/logger/log_spec.rb",
|
@@ -152,7 +153,6 @@ Gem::Specification.new do |s|
|
|
152
153
|
"spec/hash/zip_spec.rb",
|
153
154
|
"spec/hashlike/behave_same_as_hash_spec.rb",
|
154
155
|
"spec/hashlike/hashlike_behavior_spec.rb",
|
155
|
-
"spec/hashlike/hashlike_via_accessors_fuzzing_spec.rb",
|
156
156
|
"spec/hashlike/hashlike_via_accessors_spec.rb",
|
157
157
|
"spec/hashlike_spec.rb",
|
158
158
|
"spec/logger/log_spec.rb",
|
data/lib/gorillib/hashlike.rb
CHANGED
@@ -803,10 +803,10 @@ module Gorillib
|
|
803
803
|
|
804
804
|
def self.included(base)
|
805
805
|
base.class_eval do
|
806
|
-
|
807
|
-
unless
|
808
|
-
|
809
|
-
|
806
|
+
include EnumerateFromKeys unless method_defined?(:each_pair)
|
807
|
+
unless include?(Enumerable)
|
808
|
+
include Enumerable
|
809
|
+
include OverrideEnumerable
|
810
810
|
end
|
811
811
|
|
812
812
|
# included here so they win out over Enumerable
|
@@ -1,19 +1,32 @@
|
|
1
|
-
require 'active_model'
|
1
|
+
# require 'active_model'
|
2
|
+
|
3
|
+
require 'active_model/deprecated_error_methods'
|
4
|
+
require 'active_model/errors'
|
5
|
+
require 'active_model/naming'
|
6
|
+
require 'active_model/validator'
|
7
|
+
require 'active_model/translation'
|
8
|
+
require 'active_model/validations'
|
9
|
+
require 'active_support/i18n'
|
10
|
+
I18n.load_path << File.join(File.expand_path(File.dirname(__FILE__)), 'locale/en.yml')
|
2
11
|
|
3
12
|
module Receiver
|
4
|
-
|
5
|
-
extend ActiveModel::Naming
|
13
|
+
module ActiveModelShim
|
6
14
|
|
7
15
|
def to_model
|
8
16
|
self
|
9
17
|
end
|
10
18
|
|
11
|
-
def valid?() true end
|
12
19
|
def new_record?() true end
|
13
20
|
def destroyed?() false end
|
14
|
-
|
15
21
|
def errors
|
16
22
|
@_errors ||= ActiveModel::Errors.new(self)
|
17
23
|
end
|
24
|
+
|
25
|
+
def self.included(base)
|
26
|
+
base.class_eval do
|
27
|
+
extend ActiveModel::Naming
|
28
|
+
include ActiveModel::Validations
|
29
|
+
end
|
30
|
+
end
|
18
31
|
end
|
19
32
|
end
|
@@ -185,9 +185,11 @@ module Receiver
|
|
185
185
|
end
|
186
186
|
|
187
187
|
def self.included base
|
188
|
-
base.
|
189
|
-
|
190
|
-
|
188
|
+
base.class_eval do
|
189
|
+
include Gorillib::Hashlike
|
190
|
+
extend ClassMethods
|
191
|
+
include InstanceMethods
|
192
|
+
end
|
191
193
|
end
|
192
194
|
end
|
193
195
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
en:
|
2
|
+
errors:
|
3
|
+
# The default format to use in full error messages.
|
4
|
+
format: "%{attribute} %{message}"
|
5
|
+
|
6
|
+
# The values :model, :attribute and :value are always available for interpolation
|
7
|
+
# The value :count is available when applicable. Can be used for pluralization.
|
8
|
+
messages:
|
9
|
+
inclusion: "is not included in the list"
|
10
|
+
exclusion: "is reserved"
|
11
|
+
invalid: "is invalid"
|
12
|
+
confirmation: "doesn't match confirmation"
|
13
|
+
accepted: "must be accepted"
|
14
|
+
empty: "can't be empty"
|
15
|
+
blank: "can't be blank"
|
16
|
+
too_long: "is too long (maximum is %{count} characters)"
|
17
|
+
too_short: "is too short (minimum is %{count} characters)"
|
18
|
+
wrong_length: "is the wrong length (should be %{count} characters)"
|
19
|
+
not_a_number: "is not a number"
|
20
|
+
not_an_integer: "must be an integer"
|
21
|
+
greater_than: "must be greater than %{count}"
|
22
|
+
greater_than_or_equal_to: "must be greater than or equal to %{count}"
|
23
|
+
equal_to: "must be equal to %{count}"
|
24
|
+
less_than: "must be less than %{count}"
|
25
|
+
less_than_or_equal_to: "must be less than or equal to %{count}"
|
26
|
+
odd: "must be odd"
|
27
|
+
even: "must be even"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'gorillib/hashlike'
|
2
|
+
require 'gorillib/hashlike/tree_merge'
|
3
|
+
require 'gorillib/receiver'
|
4
|
+
require 'gorillib/receiver/acts_as_hash'
|
5
|
+
require 'gorillib/receiver/acts_as_loadable'
|
6
|
+
require 'gorillib/receiver/active_model_shim'
|
7
|
+
|
8
|
+
module Gorillib
|
9
|
+
module ReceiverModel
|
10
|
+
def self.included base
|
11
|
+
base.class_eval do
|
12
|
+
include Receiver
|
13
|
+
include Receiver::ActsAsHash
|
14
|
+
include Receiver::ActsAsLoadable
|
15
|
+
include Gorillib::Hashlike
|
16
|
+
include Gorillib::Hashlike::TreeMerge
|
17
|
+
include Receiver::ActiveModelShim
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__)+'/../spec_helper'
|
2
2
|
require 'enumerator'
|
3
3
|
require 'gorillib/hashlike'
|
4
|
+
require 'gorillib/enumerable/sum'
|
4
5
|
|
5
6
|
require GORILLIB_ROOT_DIR('spec/support/hashlike_helper')
|
6
7
|
require GORILLIB_ROOT_DIR('spec/support/hashlike_fuzzing_helper')
|
@@ -53,7 +54,6 @@ describe Gorillib::Hashlike do
|
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
56
|
-
|
57
57
|
#
|
58
58
|
# With a few exceptions (see HASHLIKE_DEPENDENT_METHODS), all hashlike methods go through only the following core methods:
|
59
59
|
#
|
@@ -64,7 +64,7 @@ describe Gorillib::Hashlike do
|
|
64
64
|
# these exceptions call a tightly-bound peer:
|
65
65
|
#
|
66
66
|
HASHLIKE_DEPENDENT_METHODS = Hash.new([]).merge({
|
67
|
-
:merge => [:update], :rassoc => [:key], :flatten => [:to_hash], :invert => [:to_hash],
|
67
|
+
:merge => [:update], :rassoc => [:key], :flatten => [:to_hash], :invert => [:to_hash], :sum => [:inject, :map],
|
68
68
|
:keep_if => [:select!], :delete_if => [:reject!], :select => [:select!, :keep_if], :reject => [:reject!, :delete_if],
|
69
69
|
})
|
70
70
|
Enumerable.public_instance_methods.map(&:to_sym).each{|meth| HASHLIKE_DEPENDENT_METHODS[meth] << :each }
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: gorillib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Infochimps
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-06-
|
13
|
+
date: 2011-06-29 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -242,8 +242,10 @@ files:
|
|
242
242
|
- lib/gorillib/receiver/active_model_shim.rb
|
243
243
|
- lib/gorillib/receiver/acts_as_hash.rb
|
244
244
|
- lib/gorillib/receiver/acts_as_loadable.rb
|
245
|
+
- lib/gorillib/receiver/locale/en.yml
|
245
246
|
- lib/gorillib/receiver/tree_diff.rb
|
246
247
|
- lib/gorillib/receiver/validations.rb
|
248
|
+
- lib/gorillib/receiver_model.rb
|
247
249
|
- lib/gorillib/some.rb
|
248
250
|
- lib/gorillib/string/constantize.rb
|
249
251
|
- lib/gorillib/string/human.rb
|
@@ -268,7 +270,6 @@ files:
|
|
268
270
|
- spec/hash/zip_spec.rb
|
269
271
|
- spec/hashlike/behave_same_as_hash_spec.rb
|
270
272
|
- spec/hashlike/hashlike_behavior_spec.rb
|
271
|
-
- spec/hashlike/hashlike_via_accessors_fuzzing_spec.rb
|
272
273
|
- spec/hashlike/hashlike_via_accessors_spec.rb
|
273
274
|
- spec/hashlike_spec.rb
|
274
275
|
- spec/logger/log_spec.rb
|
@@ -315,7 +316,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
315
316
|
requirements:
|
316
317
|
- - ">="
|
317
318
|
- !ruby/object:Gem::Version
|
318
|
-
hash:
|
319
|
+
hash: 1350507123130852997
|
319
320
|
segments:
|
320
321
|
- 0
|
321
322
|
version: "0"
|
@@ -348,7 +349,6 @@ test_files:
|
|
348
349
|
- spec/hash/zip_spec.rb
|
349
350
|
- spec/hashlike/behave_same_as_hash_spec.rb
|
350
351
|
- spec/hashlike/hashlike_behavior_spec.rb
|
351
|
-
- spec/hashlike/hashlike_via_accessors_fuzzing_spec.rb
|
352
352
|
- spec/hashlike/hashlike_via_accessors_spec.rb
|
353
353
|
- spec/hashlike_spec.rb
|
354
354
|
- spec/logger/log_spec.rb
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# require File.dirname(__FILE__)+'/../spec_helper'
|
2
|
-
# require GORILLIB_ROOT_DIR('spec/support/hashlike_fuzzing_helper')
|
3
|
-
# require 'gorillib/hashlike'
|
4
|
-
# require 'gorillib/hashlike/hashlike_via_accessors'
|
5
|
-
#
|
6
|
-
# class UsingHashlikeViaAccessors
|
7
|
-
# include Gorillib::Hashlike::HashlikeViaAccessors
|
8
|
-
# include Gorillib::Hashlike
|
9
|
-
#
|
10
|
-
# attr_accessor :a, :b, :c, :nil_val, :false_val, :z
|
11
|
-
#
|
12
|
-
# # We override these just to be able to compare exceptions.
|
13
|
-
# def to_s()
|
14
|
-
# '{' + [:a, :b, :c, :nil_val, :false_val, :z].map{|k| [k, self[k]].join('=>') }.join(',') + '}'
|
15
|
-
# end
|
16
|
-
# def ==(other_hash)
|
17
|
-
# (length == other_hash.length) && all?{|k,v| v == other_hash[k] }
|
18
|
-
# end
|
19
|
-
# end
|
20
|
-
#
|
21
|
-
#
|
22
|
-
# describe Gorillib::Hashlike::HashlikeViaAccessors do
|
23
|
-
# include HashlikeFuzzingHelper
|
24
|
-
#
|
25
|
-
#
|
26
|
-
# before do
|
27
|
-
# @total = 0
|
28
|
-
# hsh = { :a => 3, :b => 4, :c => nil, :nil_val => nil, :false_val => false, :z => nil }
|
29
|
-
# @hsh_symk = hsh.dup
|
30
|
-
# @hsh_strk = {} ; hsh.each{|k,v| @hsh_strk[k.to_s] = v }
|
31
|
-
# @hsh_wia = hsh.with_indifferent_access
|
32
|
-
# @hshlike = InternalHash.new.merge(hsh)
|
33
|
-
#
|
34
|
-
# p [@hshlike]
|
35
|
-
# end
|
36
|
-
#
|
37
|
-
# end
|