enumerated_field 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +0 -1
- data/CHANGELOG +67 -0
- data/README.md +26 -0
- data/lib/enumerated_field.rb +2 -2
- data/lib/enumerated_field/version.rb +1 -1
- data/test/enumerated_field_test.rb +3 -2
- metadata +22 -23
data/.travis.yml
CHANGED
data/CHANGELOG
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
|
2
|
+
v0.0.2
|
3
|
+
|
4
|
+
* bumped version
|
5
|
+
* added allow_blank choice for validation
|
6
|
+
* added :allow_nil => true choice to accept nil values for validation
|
7
|
+
* more tweaks to the README
|
8
|
+
* added README entry for the constants
|
9
|
+
* cleaning up validation test descriptions
|
10
|
+
* added constants for the enumerated keys
|
11
|
+
* merged add_validation into master
|
12
|
+
* updated validation tests to use shoulda
|
13
|
+
* merged master, with jon's additions, into branch
|
14
|
+
* Merge pull request #1 from jonkarna/master
|
15
|
+
* switched from not validating by default to validation by default
|
16
|
+
* cleared TODO
|
17
|
+
* add activemodel as a dependency (for validations)
|
18
|
+
* updated readme and included validation information
|
19
|
+
* Added rake test to make executing tests easier
|
20
|
+
* Added test for the #{field_name}_values class method. Reformatted existing tests to use shoulda.
|
21
|
+
* Added turn and shoulda to development dependencies to spice up the testing
|
22
|
+
* Forgot to pass options as a splat within the instance method
|
23
|
+
* Added (field_name)_values method to class
|
24
|
+
* moved ActiveModel from the module to the test since it is a development dependency, not a dependency of the gem
|
25
|
+
* testing the contra example that unless you specify to validate, it won't
|
26
|
+
* added TODO
|
27
|
+
* added capability to validate that the value is in the enumerated list
|
28
|
+
|
29
|
+
v0.0.3
|
30
|
+
|
31
|
+
* bumped version
|
32
|
+
* added code to handle creating constants from constant-unsafe keys
|
33
|
+
|
34
|
+
v0.0.4
|
35
|
+
|
36
|
+
* bumped gem version
|
37
|
+
* fixed error about undefined method validates in Apple
|
38
|
+
* Merge pull request #2 from jonkarna/master
|
39
|
+
* Added test for validating a string value that has an equivalent value in the enumerated field key list
|
40
|
+
* Added string equivalent of symbol key to validation and vice versa
|
41
|
+
|
42
|
+
v0.1.0
|
43
|
+
|
44
|
+
* bumped to version 0.1.0
|
45
|
+
* Updated gem to handle strings and symbols as equivalent keys
|
46
|
+
|
47
|
+
v0.2.0
|
48
|
+
|
49
|
+
* Bumped version number
|
50
|
+
* added jon and me to the list of authors
|
51
|
+
* tweaking who gets alerted from travis-ci
|
52
|
+
* tweaking which rubies to target
|
53
|
+
* trying again to trigger travis
|
54
|
+
* adding travis configuration
|
55
|
+
* triggering travis-ci
|
56
|
+
* More comprehensive active record scope test
|
57
|
+
* Made test the default rake task, in prep for integration with Travis CI
|
58
|
+
* Moved models to test_helper
|
59
|
+
* Apple fixture file
|
60
|
+
* Changed Apple to be an ActiveRecord model. Moved models to test_helper. Loading fixtures.
|
61
|
+
* Added section of code for adding scopes if a decendent from ActiveRecord::Base
|
62
|
+
* Added activerecord and sqlite3 to dev dependencies
|
63
|
+
* hard-wrap README
|
64
|
+
* add activesupport to gem dependencies
|
65
|
+
* tests pass with ruby 1.9
|
66
|
+
* fix test load path for ruby 1.9
|
67
|
+
* changed to use class_eval for the values_array
|
data/README.md
CHANGED
@@ -80,6 +80,16 @@ these.
|
|
80
80
|
> Hike.trail_values # or get it from the class instead of the instance, if you like
|
81
81
|
=> [['Pacific Crest Trail', 'pct'], ['Continental Divide Trail', 'cdt'], ['Superior Hiking Trail', 'sht']]
|
82
82
|
|
83
|
+
### ActiveRecord Scopes
|
84
|
+
|
85
|
+
These scopes are only created when your object is an ActiveRecord model.
|
86
|
+
|
87
|
+
# performs Hike.where(:trail => Hike::TRAIL_CDT)
|
88
|
+
> Hike.trail_cdt
|
89
|
+
|
90
|
+
# performs Hike.where(:duration => Hike::DURATION_LONG)
|
91
|
+
> Hike.duration_long
|
92
|
+
|
83
93
|
### Use Constants for Keys
|
84
94
|
|
85
95
|
> Hike::TRAIL_PCT
|
@@ -87,6 +97,22 @@ these.
|
|
87
97
|
> Hike::TRAIL_SHT
|
88
98
|
=> :sht
|
89
99
|
|
100
|
+
### Display Specified Value
|
101
|
+
|
102
|
+
> hike.trail_display_for("sht")
|
103
|
+
=> "Superior Hiking Trail"
|
104
|
+
|
105
|
+
> hike.duration_display_for("short")
|
106
|
+
=> "Short"
|
107
|
+
|
108
|
+
### Value for Specified Display
|
109
|
+
|
110
|
+
> hike.trail_value_for("Superior Hiking Trail")
|
111
|
+
=> "sht"
|
112
|
+
|
113
|
+
> hike.duration_value_for("Short")
|
114
|
+
=> "short"
|
115
|
+
|
90
116
|
These methods are all prefixed with the field name by design, which
|
91
117
|
allows multiple fields on a model to exist which potentially have the
|
92
118
|
same values.
|
data/lib/enumerated_field.rb
CHANGED
@@ -11,7 +11,7 @@ module EnumeratedField
|
|
11
11
|
|
12
12
|
# ex. enum_field(:league, [['National Football League', :nfl], ['Major League Baseball', :mlb]])
|
13
13
|
# field_name typically corresponds to the database column name
|
14
|
-
# values_array is a double array (not a hash to preserve order for when order matters.. ie select options)
|
14
|
+
# values_array is a double array (not a hash to preserve order for when order matters.. ie select options)
|
15
15
|
def enum_field(field_name, values_array, options = {})
|
16
16
|
values_hash = ActiveSupport::HashWithIndifferentAccess.new
|
17
17
|
values_array.each { |value, key| values_hash[key] = value }
|
@@ -51,7 +51,7 @@ module EnumeratedField
|
|
51
51
|
:allow_nil => options[:allow_nil], :allow_blank => options[:allow_blank]
|
52
52
|
end
|
53
53
|
|
54
|
-
|
54
|
+
values_array.each do |value, key|
|
55
55
|
const_name = "#{field_name}_#{key}".upcase.gsub(/[^\w_]/, "_").to_sym
|
56
56
|
const_set(const_name, key)
|
57
57
|
end
|
@@ -17,8 +17,8 @@ class EnumeratedFieldTest < Test::Unit::TestCase
|
|
17
17
|
end
|
18
18
|
|
19
19
|
should 'create contstants for the field keys' do
|
20
|
-
assert_equal
|
21
|
-
assert_equal
|
20
|
+
assert_equal :chiquita, Banana::BRAND_CHIQUITA
|
21
|
+
assert_equal :delmonte, Banana::BRAND_DELMONTE
|
22
22
|
end
|
23
23
|
|
24
24
|
should 'create underscored constants from field keys which contain invalid constant name characters' do
|
@@ -59,6 +59,7 @@ class EnumeratedFieldTest < Test::Unit::TestCase
|
|
59
59
|
|
60
60
|
should 'have 2 values without first option' do
|
61
61
|
assert_equal @red_apple.color_values.length, 2
|
62
|
+
assert_equal @red_apple.color_values, [['Red', :red], ['Green', :green]]
|
62
63
|
end
|
63
64
|
|
64
65
|
should 'have 3 values with first option' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumerated_field
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,12 +11,11 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2011-
|
15
|
-
default_executable:
|
14
|
+
date: 2011-10-05 00:00:00.000000000Z
|
16
15
|
dependencies:
|
17
16
|
- !ruby/object:Gem::Dependency
|
18
17
|
name: activemodel
|
19
|
-
requirement: &
|
18
|
+
requirement: &2153550040 !ruby/object:Gem::Requirement
|
20
19
|
none: false
|
21
20
|
requirements:
|
22
21
|
- - ! '>='
|
@@ -24,10 +23,10 @@ dependencies:
|
|
24
23
|
version: '0'
|
25
24
|
type: :runtime
|
26
25
|
prerelease: false
|
27
|
-
version_requirements: *
|
26
|
+
version_requirements: *2153550040
|
28
27
|
- !ruby/object:Gem::Dependency
|
29
28
|
name: activesupport
|
30
|
-
requirement: &
|
29
|
+
requirement: &2153549260 !ruby/object:Gem::Requirement
|
31
30
|
none: false
|
32
31
|
requirements:
|
33
32
|
- - ! '>='
|
@@ -35,10 +34,10 @@ dependencies:
|
|
35
34
|
version: '0'
|
36
35
|
type: :runtime
|
37
36
|
prerelease: false
|
38
|
-
version_requirements: *
|
37
|
+
version_requirements: *2153549260
|
39
38
|
- !ruby/object:Gem::Dependency
|
40
39
|
name: rake
|
41
|
-
requirement: &
|
40
|
+
requirement: &2153548240 !ruby/object:Gem::Requirement
|
42
41
|
none: false
|
43
42
|
requirements:
|
44
43
|
- - ! '>='
|
@@ -46,10 +45,10 @@ dependencies:
|
|
46
45
|
version: '0'
|
47
46
|
type: :development
|
48
47
|
prerelease: false
|
49
|
-
version_requirements: *
|
48
|
+
version_requirements: *2153548240
|
50
49
|
- !ruby/object:Gem::Dependency
|
51
50
|
name: bundler
|
52
|
-
requirement: &
|
51
|
+
requirement: &2153546240 !ruby/object:Gem::Requirement
|
53
52
|
none: false
|
54
53
|
requirements:
|
55
54
|
- - ! '>='
|
@@ -57,10 +56,10 @@ dependencies:
|
|
57
56
|
version: '0'
|
58
57
|
type: :development
|
59
58
|
prerelease: false
|
60
|
-
version_requirements: *
|
59
|
+
version_requirements: *2153546240
|
61
60
|
- !ruby/object:Gem::Dependency
|
62
61
|
name: turn
|
63
|
-
requirement: &
|
62
|
+
requirement: &2153545020 !ruby/object:Gem::Requirement
|
64
63
|
none: false
|
65
64
|
requirements:
|
66
65
|
- - ! '>='
|
@@ -68,10 +67,10 @@ dependencies:
|
|
68
67
|
version: '0'
|
69
68
|
type: :development
|
70
69
|
prerelease: false
|
71
|
-
version_requirements: *
|
70
|
+
version_requirements: *2153545020
|
72
71
|
- !ruby/object:Gem::Dependency
|
73
72
|
name: shoulda
|
74
|
-
requirement: &
|
73
|
+
requirement: &2153544100 !ruby/object:Gem::Requirement
|
75
74
|
none: false
|
76
75
|
requirements:
|
77
76
|
- - ! '>='
|
@@ -79,10 +78,10 @@ dependencies:
|
|
79
78
|
version: '0'
|
80
79
|
type: :development
|
81
80
|
prerelease: false
|
82
|
-
version_requirements: *
|
81
|
+
version_requirements: *2153544100
|
83
82
|
- !ruby/object:Gem::Dependency
|
84
83
|
name: activerecord
|
85
|
-
requirement: &
|
84
|
+
requirement: &2153542200 !ruby/object:Gem::Requirement
|
86
85
|
none: false
|
87
86
|
requirements:
|
88
87
|
- - ! '>='
|
@@ -90,10 +89,10 @@ dependencies:
|
|
90
89
|
version: '0'
|
91
90
|
type: :development
|
92
91
|
prerelease: false
|
93
|
-
version_requirements: *
|
92
|
+
version_requirements: *2153542200
|
94
93
|
- !ruby/object:Gem::Dependency
|
95
94
|
name: sqlite3
|
96
|
-
requirement: &
|
95
|
+
requirement: &2153541380 !ruby/object:Gem::Requirement
|
97
96
|
none: false
|
98
97
|
requirements:
|
99
98
|
- - ! '>='
|
@@ -101,7 +100,7 @@ dependencies:
|
|
101
100
|
version: '0'
|
102
101
|
type: :development
|
103
102
|
prerelease: false
|
104
|
-
version_requirements: *
|
103
|
+
version_requirements: *2153541380
|
105
104
|
description: EnumeratedField is a library that provides some nice methods when a string
|
106
105
|
column is used like an enumeration, meaning there is a list of allowable values
|
107
106
|
for the string column.
|
@@ -115,6 +114,7 @@ extra_rdoc_files: []
|
|
115
114
|
files:
|
116
115
|
- .gitignore
|
117
116
|
- .travis.yml
|
117
|
+
- CHANGELOG
|
118
118
|
- Gemfile
|
119
119
|
- README.md
|
120
120
|
- Rakefile
|
@@ -124,7 +124,6 @@ files:
|
|
124
124
|
- test/enumerated_field_test.rb
|
125
125
|
- test/fixtures/apples.yml
|
126
126
|
- test/test_helper.rb
|
127
|
-
has_rdoc: true
|
128
127
|
homepage: https://github.com/tstmedia/enumerated_field
|
129
128
|
licenses: []
|
130
129
|
post_install_message:
|
@@ -139,7 +138,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
139
138
|
version: '0'
|
140
139
|
segments:
|
141
140
|
- 0
|
142
|
-
hash:
|
141
|
+
hash: -3545795576421567660
|
143
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
143
|
none: false
|
145
144
|
requirements:
|
@@ -148,10 +147,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
147
|
version: '0'
|
149
148
|
segments:
|
150
149
|
- 0
|
151
|
-
hash:
|
150
|
+
hash: -3545795576421567660
|
152
151
|
requirements: []
|
153
152
|
rubyforge_project: enumerated_field
|
154
|
-
rubygems_version: 1.6
|
153
|
+
rubygems_version: 1.8.6
|
155
154
|
signing_key:
|
156
155
|
specification_version: 3
|
157
156
|
summary: EnumeratedField is a library that provides some nice methods when a string
|