flag_shih_tzu 0.3.12 → 0.3.13
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.
- checksums.yaml +4 -4
- data/.travis.yml +17 -1
- data/{CHANGELOG → CHANGELOG.md} +22 -0
- data/README.md +3 -3
- data/lib/flag_shih_tzu.rb +58 -8
- data/lib/flag_shih_tzu/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2714d0ae0f43d03bd6e24a3ac96ec0a5a2126ec
|
4
|
+
data.tar.gz: 5f31617f4cb4c1ef1e3ad3ccc3db9a813004bfa7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4494baacf8d5733f126459e7880e5cb33e8465a59de8d709262da9734c447c49085d5b165c7bbfc468ec7479f9965371384b6a55d0f43ef9edb227783c1cafe1
|
7
|
+
data.tar.gz: bd3ef847e260134e8ed842fe6c176473f56538e677ec3396285babfba7d4c5213acf920a141667620c7351de8696316b84500503d29def67ec4c854475627ed2
|
data/.travis.yml
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
rvm:
|
2
|
-
- 1.9.2
|
3
2
|
- 1.9.3
|
4
3
|
- 2.0.0
|
5
4
|
- 2.1.2
|
5
|
+
- 2.2.1
|
6
6
|
gemfile:
|
7
7
|
- gemfiles/Gemfile.activerecord-2.3.x
|
8
8
|
- gemfiles/Gemfile.activerecord-3.0.x
|
@@ -12,6 +12,22 @@ gemfile:
|
|
12
12
|
- gemfiles/Gemfile.activerecord-4.1.x
|
13
13
|
matrix:
|
14
14
|
exclude:
|
15
|
+
- rvm: 2.2.1
|
16
|
+
gemfile: gemfiles/Gemfile.activerecord-2.3.x
|
17
|
+
- rvm: 2.2.1
|
18
|
+
gemfile: gemfiles/Gemfile.activerecord-3.0.x
|
19
|
+
- rvm: 2.2.1
|
20
|
+
gemfile: gemfiles/Gemfile.activerecord-3.1.x
|
21
|
+
- rvm: 2.2.1
|
22
|
+
gemfile: gemfiles/Gemfile.activerecord-3.2.x
|
23
|
+
- rvm: 2.2.1
|
24
|
+
gemfile: gemfiles/Gemfile.activerecord-4.0.x
|
25
|
+
- rvm: 2.1.2
|
26
|
+
gemfile: gemfiles/Gemfile.activerecord-2.3.x
|
27
|
+
- rvm: 2.1.2
|
28
|
+
gemfile: gemfiles/Gemfile.activerecord-3.0.x
|
29
|
+
- rvm: 2.1.2
|
30
|
+
gemfile: gemfiles/Gemfile.activerecord-3.1.x
|
15
31
|
- rvm: 2.1.2
|
16
32
|
gemfile: gemfiles/Gemfile.activerecord-2.3.x
|
17
33
|
- rvm: 2.1.2
|
data/{CHANGELOG → CHANGELOG.md}
RENAMED
@@ -1,4 +1,18 @@
|
|
1
|
+
Version 0.3.13 - MAR.13.2015
|
2
|
+
|
3
|
+
* methods for use with form builders like simple_form by Peter Boling
|
4
|
+
|
5
|
+
- chained_flags_with_signature
|
6
|
+
- chained_#{colmn}_with_signature
|
7
|
+
- as_flag_collection
|
8
|
+
- as_#{colmn.singularize}_collection
|
9
|
+
- selected_flags=
|
10
|
+
- selected_#{colmn}= (already existed)
|
11
|
+
* Testing on Travis: added Ruby 2.2.1
|
12
|
+
* Testing on Travis: removed Ruby 1.9.2
|
13
|
+
|
1
14
|
Version 0.3.12 - OCT.01.2014
|
15
|
+
|
2
16
|
* Improve testing instructions in readme by Peter Boling
|
3
17
|
* fix check_flag_column to return false after warn by Peter Boling
|
4
18
|
* bash script for running complete test suite on Ruby 1.9.3 and Ruby 2.1.2 by Peter Boling
|
@@ -9,34 +23,41 @@ Version 0.3.12 - OCT.01.2014
|
|
9
23
|
* Use Kernel#warn instead of puts by Peter Boling
|
10
24
|
|
11
25
|
Version 0.3.11 - JUL.09.2014
|
26
|
+
|
12
27
|
* Rename some ambigously-named methods mixed into AR::Base by jdelStrother
|
13
28
|
* Add dynamic ".*_values_for" helpers by atipugin
|
14
29
|
|
15
30
|
Version 0.3.10 - NOV.26.2013
|
31
|
+
|
16
32
|
* Can run tests without coverage by specifying NOCOVER=true by Peter Boling
|
17
33
|
* Improved test coverage by Peter Boling
|
18
34
|
* Improved documentation by Peter Boling
|
19
35
|
* Readme converted to Markdown by Peter Boling
|
20
36
|
|
21
37
|
Version 0.3.9 - NOV.25.2013
|
38
|
+
|
22
39
|
* Removed runtime dependency on active record and active support by Peter Boling
|
23
40
|
* Fixed Coveralls Configuration by Peter Boling
|
24
41
|
* Improved Readme by Peter Boling
|
25
42
|
|
26
43
|
Version 0.3.8 - NOV.24.2013
|
44
|
+
|
27
45
|
* Improved Readme / Documentation by Peter Boling
|
28
46
|
* Added Badges by Peter Boling
|
29
47
|
* Configured Coveralls by Peter Boling
|
30
48
|
* Added Code Climate, Coveralls, Gemnasium, and Version Badges by Peter Boling
|
31
49
|
|
32
50
|
Version 0.3.7 - OCT.25.2013
|
51
|
+
|
33
52
|
* Change `sql_in_for_flag` to consider values from the range [0, 2 * max - 1] by Blake Thomson
|
34
53
|
|
35
54
|
Version 0.3.6 - AUG.29.2013
|
55
|
+
|
36
56
|
* Allow use with any gem manager by Peter Boling
|
37
57
|
* No need to alter Ruby's load path by Peter Boling
|
38
58
|
|
39
59
|
Version 0.3.5 - AUG.06.2013
|
60
|
+
|
40
61
|
* Fix Travis Build & Add Rails 4 by Peter M. Goldstein
|
41
62
|
* Implemented update_flag! by Peter Boling (see https://github.com/pboling/flag_shih_tzu/issues/27)
|
42
63
|
- sets a flag on a record without triggering callbacks or validations
|
@@ -60,6 +81,7 @@ Version 0.3.4 - JUN.20.2013
|
|
60
81
|
* Many more tests, including arity tests by Peter Boling
|
61
82
|
|
62
83
|
Version 0.3.3 - JUN.20.2013
|
84
|
+
|
63
85
|
- Does not exist.
|
64
86
|
|
65
87
|
Version 0.3.2 - NOV.06.2012
|
data/README.md
CHANGED
@@ -48,9 +48,9 @@ What is a ["Shih Tzu"](http://en.wikipedia.org/wiki/Shih_Tzu)?
|
|
48
48
|
The gem is actively being tested with:
|
49
49
|
|
50
50
|
* MySQL, PostgreSQL and SQLite3 databases
|
51
|
-
* ActiveRecord versions 2.3.x, 3.0.x, 3.1.x, 3.2.x
|
52
|
-
* Ruby 1.
|
53
|
-
|
51
|
+
* ActiveRecord versions 2.3.x, 3.0.x, 3.1.x, 3.2.x, 4.0.x, 4.1.x ;)
|
52
|
+
* Ruby 1.9.2, 1.9.3, 2.0.0, 2.1.2 (see .travis.yml for the matrix)
|
53
|
+
* Legacy Ruby 1.8.7 compatibility is in the [0.2.X branch](https://github.com/pboling/flag_shih_tzu/tree/0.2.X)
|
54
54
|
|
55
55
|
## Installation
|
56
56
|
|
data/lib/flag_shih_tzu.rb
CHANGED
@@ -29,7 +29,6 @@ module FlagShihTzu
|
|
29
29
|
:strict => false,
|
30
30
|
:check_for_column => true
|
31
31
|
}.update(opts)
|
32
|
-
colmn = opts[:column].to_s
|
33
32
|
if !is_valid_flag_column_name(opts[:column])
|
34
33
|
warn "FlagShihTzu says: Please use a String to designate column names! I see you here: #{caller.first}"
|
35
34
|
opts[:column] = opts[:column].to_s
|
@@ -61,7 +60,6 @@ module FlagShihTzu
|
|
61
60
|
raise ArgumentError, "has_flags: flag name #{flag_name} already defined, please choose different name" if method_defined?(flag_name)
|
62
61
|
|
63
62
|
flag_mapping[colmn][flag_name] = 1 << (flag_key - 1)
|
64
|
-
#puts "Defined: #{flag_key} as #{flag_mapping[colmn][flag_name]}"
|
65
63
|
|
66
64
|
class_eval <<-EVAL, __FILE__, __LINE__ + 1
|
67
65
|
def #{flag_name}
|
@@ -144,9 +142,9 @@ module FlagShihTzu
|
|
144
142
|
end
|
145
143
|
|
146
144
|
# useful for a form builder
|
147
|
-
def selected_#{colmn}=(
|
145
|
+
def selected_#{colmn}=(chosen_flags)
|
148
146
|
unselect_all_flags('#{colmn}')
|
149
|
-
|
147
|
+
chosen_flags.each do |selected_flag|
|
150
148
|
enable_flag(selected_flag.to_sym, '#{colmn}') if selected_flag.present?
|
151
149
|
end
|
152
150
|
end
|
@@ -155,6 +153,14 @@ module FlagShihTzu
|
|
155
153
|
not selected_#{colmn}.empty?
|
156
154
|
end
|
157
155
|
|
156
|
+
def chained_#{colmn}_with_signature(*args)
|
157
|
+
chained_flags_with_signature('#{colmn}', *args)
|
158
|
+
end
|
159
|
+
|
160
|
+
def as_#{colmn.singularize}_collection(*args)
|
161
|
+
as_flag_collection('#{colmn}', *args)
|
162
|
+
end
|
163
|
+
|
158
164
|
EVAL
|
159
165
|
end
|
160
166
|
|
@@ -211,15 +217,15 @@ module FlagShihTzu
|
|
211
217
|
raise NoSuchFlagException.new("determine_flag_colmn_for: Couldn't determine column for your flags!")
|
212
218
|
end
|
213
219
|
|
214
|
-
def chained_flags_with(*args)
|
220
|
+
def chained_flags_with(column = DEFAULT_COLUMN_NAME, *args)
|
215
221
|
if (ActiveRecord::VERSION::MAJOR >= 3)
|
216
|
-
where(chained_flags_condition(*args))
|
222
|
+
where(chained_flags_condition(column, *args))
|
217
223
|
else
|
218
|
-
all(:conditions => chained_flags_condition(*args))
|
224
|
+
all(:conditions => chained_flags_condition(column, *args))
|
219
225
|
end
|
220
226
|
end
|
221
227
|
|
222
|
-
def chained_flags_condition(colmn, *args)
|
228
|
+
def chained_flags_condition(colmn = DEFAULT_COLUMN_NAME, *args)
|
223
229
|
"(#{self.table_name}.#{colmn} in (#{chained_flags_values(colmn, *args).join(',')}))"
|
224
230
|
end
|
225
231
|
|
@@ -385,6 +391,15 @@ module FlagShihTzu
|
|
385
391
|
all_flags(colmn).map { |flag_name| self.send(flag_name) ? flag_name : nil }.compact
|
386
392
|
end
|
387
393
|
|
394
|
+
# Useful for a form builder
|
395
|
+
# use selected_#{column}= for custom column names.
|
396
|
+
def selected_flags=(chosen_flags)
|
397
|
+
unselect_all_flags
|
398
|
+
chosen_flags.each do |selected_flag|
|
399
|
+
enable_flag(selected_flag.to_sym, DEFAULT_COLUMN_NAME) if selected_flag.present?
|
400
|
+
end
|
401
|
+
end
|
402
|
+
|
388
403
|
def select_all_flags(colmn = DEFAULT_COLUMN_NAME)
|
389
404
|
all_flags(colmn).each do |flag|
|
390
405
|
enable_flag(flag, colmn)
|
@@ -420,8 +435,43 @@ module FlagShihTzu
|
|
420
435
|
end
|
421
436
|
end
|
422
437
|
|
438
|
+
# Use with chained_flags_with to find records with specific flags set to the same values as on this record.
|
439
|
+
# For a record that has sent_warm_up_email = true and the other flags false:
|
440
|
+
# user.chained_flags_with_signature
|
441
|
+
# => [:sent_warm_up_email, :not_follow_up_called, :not_sent_final_email, :not_scheduled_appointment]
|
442
|
+
# User.chained_flags_with('flags', *user.chained_flags_with_signature)
|
443
|
+
# => the set of Users that have the same flags set as user.
|
444
|
+
def chained_flags_with_signature(colmn = DEFAULT_COLUMN_NAME, *args)
|
445
|
+
flags_to_collect = args.empty? ? all_flags(colmn) : args
|
446
|
+
truthy_and_chosen = selected_flags(colmn).select {|x| flags_to_collect.include?(x) }
|
447
|
+
truthy_and_chosen.concat(
|
448
|
+
collect_flags(*flags_to_collect) do |memo, flag|
|
449
|
+
memo << "not_#{flag}".to_sym unless truthy_and_chosen.include?(flag)
|
450
|
+
end
|
451
|
+
)
|
452
|
+
end
|
453
|
+
|
454
|
+
# Use with a checkbox form builder, like simple_form's
|
455
|
+
# # selected_flags, used in the example below, is a method defined by flag_shih_tzu for bulk setting flags
|
456
|
+
# form_for @user do |f|
|
457
|
+
# f.collection_check_boxes :selected_flags, f.object.as_flag_collection('flags', :sent_warm_up_email, :not_follow_up_called), :first, :last
|
458
|
+
# end
|
459
|
+
def as_flag_collection(colmn = DEFAULT_COLUMN_NAME, *args)
|
460
|
+
flags_to_collect = args.empty? ? all_flags(colmn) : args
|
461
|
+
collect_flags(*flags_to_collect) do |memo, flag|
|
462
|
+
memo << [flag, self.flag_enabled?(flag, colmn)]
|
463
|
+
end
|
464
|
+
end
|
465
|
+
|
423
466
|
private
|
424
467
|
|
468
|
+
def collect_flags(*args)
|
469
|
+
args.inject([]) do |memo, flag|
|
470
|
+
yield memo, flag
|
471
|
+
memo
|
472
|
+
end
|
473
|
+
end
|
474
|
+
|
425
475
|
def get_bit_for(flag, colmn)
|
426
476
|
self.flags(colmn) & self.class.flag_mapping[colmn][flag]
|
427
477
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flag_shih_tzu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2015-03-14 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: activerecord
|
@@ -142,7 +142,7 @@ files:
|
|
142
142
|
- ".coveralls.yml"
|
143
143
|
- ".gitignore"
|
144
144
|
- ".travis.yml"
|
145
|
-
- CHANGELOG
|
145
|
+
- CHANGELOG.md
|
146
146
|
- Gemfile
|
147
147
|
- LICENSE
|
148
148
|
- README.md
|
@@ -183,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
183
|
version: '0'
|
184
184
|
requirements: []
|
185
185
|
rubyforge_project:
|
186
|
-
rubygems_version: 2.
|
186
|
+
rubygems_version: 2.4.2
|
187
187
|
signing_key:
|
188
188
|
specification_version: 4
|
189
189
|
summary: Bit fields for ActiveRecord
|
@@ -192,3 +192,4 @@ test_files:
|
|
192
192
|
- test/flag_shih_tzu_test.rb
|
193
193
|
- test/schema.rb
|
194
194
|
- test/test_helper.rb
|
195
|
+
has_rdoc:
|