komagire 0.1.1 → 0.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/README.md +3 -3
- data/lib/komagire/id_list.rb +6 -1
- data/lib/komagire/key_list.rb +10 -3
- data/lib/komagire/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db899ad581973f576f0ff378aa6bf9243dbdb830
|
4
|
+
data.tar.gz: d85052ab6d758f54484c5c6234225c1c500ce341
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c02f65725a2f9eb47c3f43f434763fd4aa03156fabec83ff6878668c136955f16c4c718cec45ba0ce9888c3efc0e60feace1adc8d317c8c40225ccae51de4df3
|
7
|
+
data.tar.gz: 8e6e6cafecf88af7b47626f971ea8b41dc556d6d2fbaac9b309057921f99a5a92e1ec91dbe6b8be45061d8694ceb70aa1245b7404b0c5858ca5e821d3ca61280
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -36,7 +36,7 @@ Tag.create(id: 2, name: 'perl')
|
|
36
36
|
Tag.create(id: 3, name: 'java')
|
37
37
|
|
38
38
|
class Post < ActiveRecord::Base
|
39
|
-
composed_of_komagire_key_list :tags, :tag_names, 'Tag', :name, komagire: {delimiter: '|'}
|
39
|
+
composed_of_komagire_key_list :tags, :tag_names, 'Tag', :name, komagire: {delimiter: '|', sort: true}
|
40
40
|
end
|
41
41
|
|
42
42
|
post = Post.new
|
@@ -51,7 +51,7 @@ Compose an object from comma separated ids.
|
|
51
51
|
|
52
52
|
```ruby
|
53
53
|
class Post < ActiveRecord::Base
|
54
|
-
composed_of_komagire_id_list :tags, :tag_ids, 'Tag'
|
54
|
+
composed_of_komagire_id_list :tags, :tag_ids, 'Tag', komagire: {sort: true}
|
55
55
|
end
|
56
56
|
|
57
57
|
post = Post.new
|
@@ -71,7 +71,7 @@ post.tags = %w[1 2] # array of string
|
|
71
71
|
post.tags = [1, 2] # array of integer(id)
|
72
72
|
post.tags = [Tag.find(1), Tag.find(2)] # array of Tag
|
73
73
|
post.tags = Tag.where(id: [1, 2]) # ActiveRecord::Relation
|
74
|
-
post.tags = Komagire::IdList.new('Tag', '1,2') # same object
|
74
|
+
post.tags = Komagire::IdList.new('Tag', '1,2', sort: true) # same object
|
75
75
|
```
|
76
76
|
|
77
77
|
## Development
|
data/lib/komagire/id_list.rb
CHANGED
@@ -26,7 +26,12 @@ module Komagire
|
|
26
26
|
def _find_by_cskeys
|
27
27
|
ancestors = content_class_name.constantize.ancestors.map(&:to_s)
|
28
28
|
if ancestors.include?('ActiveHash::Base')
|
29
|
-
_keys.map { |id| content_class_name.constantize.find_by_id(id) }.compact
|
29
|
+
values = _keys.map { |id| content_class_name.constantize.find_by_id(id) }.compact
|
30
|
+
if @sort
|
31
|
+
values.sort_by { |v| v.id }
|
32
|
+
else
|
33
|
+
values
|
34
|
+
end
|
30
35
|
else
|
31
36
|
super
|
32
37
|
end
|
data/lib/komagire/key_list.rb
CHANGED
@@ -17,6 +17,7 @@ module Komagire
|
|
17
17
|
@content_class_name = content_class_name
|
18
18
|
@attribute = attribute
|
19
19
|
@delimiter = options[:delimiter] || Komagire::DEFAULT_DELIMITER
|
20
|
+
@sort = options[:sort] || false
|
20
21
|
@cskeys = _convert(cskeys)
|
21
22
|
super(_find_by_cskeys)
|
22
23
|
end
|
@@ -25,7 +26,8 @@ module Komagire
|
|
25
26
|
#
|
26
27
|
# @return [String]
|
27
28
|
def cskeys
|
28
|
-
|
29
|
+
key_values = compact.map(&@attribute).uniq.tap {|values| values.sort! if @sort }
|
30
|
+
([''] + key_values + ['']).join(@delimiter)
|
29
31
|
end
|
30
32
|
|
31
33
|
def freeze
|
@@ -44,11 +46,16 @@ module Komagire
|
|
44
46
|
end
|
45
47
|
|
46
48
|
def _keys
|
47
|
-
@cskeys.split(@delimiter).
|
49
|
+
@cskeys.split(@delimiter).uniq
|
48
50
|
end
|
49
51
|
|
50
52
|
def _find_by_cskeys
|
51
|
-
content_class_name.constantize.where(@attribute => _keys)
|
53
|
+
values = content_class_name.constantize.where(@attribute => _keys).compact
|
54
|
+
if @sort
|
55
|
+
values.sort_by { |v| v.public_send(@attribute) }
|
56
|
+
else
|
57
|
+
values.index_by { |v| v.public_send(@attribute).to_s }.values_at(*_keys)
|
58
|
+
end
|
52
59
|
end
|
53
60
|
|
54
61
|
class Converter
|
data/lib/komagire/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: komagire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takumi IINO
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -132,6 +132,7 @@ files:
|
|
132
132
|
- ".gitignore"
|
133
133
|
- ".rspec"
|
134
134
|
- ".travis.yml"
|
135
|
+
- CHANGELOG.md
|
135
136
|
- CODE_OF_CONDUCT.md
|
136
137
|
- Gemfile
|
137
138
|
- LICENSE.txt
|
@@ -166,9 +167,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
167
|
version: '0'
|
167
168
|
requirements: []
|
168
169
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.4.5
|
170
|
+
rubygems_version: 2.4.5.1
|
170
171
|
signing_key:
|
171
172
|
specification_version: 4
|
172
173
|
summary: Compose an object from comma separated keys.
|
173
174
|
test_files: []
|
174
|
-
has_rdoc:
|