labelizer 0.0.1 → 0.0.2

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTQ0N2QyMDA2NDY5NDYwYjgxY2IzZjJhZTg3ODM3ZDEzOWUyNTcxMQ==
4
+ NjdiNzMyY2I5YzkzZTI4NDcwMmQ4Y2Q2YzM0ODM5MWIzZWZjZjRlZQ==
5
5
  data.tar.gz: !binary |-
6
- MmQ5MWY2YTNjYjI5ODljN2FkYjIwNzE3ZDI5MmU1YmVmYzViZDljYw==
6
+ YmQyMDAwZjViOTAwMThiMGJlZDgyMGQwZmFlZmE2M2U5MWMwZWU0MQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTQxY2EwOWMyYTQ5Y2JlNjQ1OTkzMzkyYzE5ZTA1NTQzMjEwMjZkOGVkZDMz
10
- MmM0YTRlOWI2ZmUzMmE0MGQ1MjQ5MjJjYzlmYTFiOTg4MGVkMjFjY2Y0OTBl
11
- NDg5NWIzNDEyMzgwMDc3OWYwYmE0ZTYzZWY1YWJkZTNmNmIzY2M=
9
+ Mjc0ZjFjODY5OWNiNmEzYzNlYjExZDg5MzllNTA1NDk5MDc5YmQ2NWE1OGNj
10
+ YzMwYTFjYzFhOTcxMDhhNmU3MGQ3ZDdiZDJkMzJlZmRlMjJhMzRhMWU1YmIw
11
+ Mjc3ZjU1YjA1ODU3NGYzYmNkNDA0NjA0NGI3ZDk5ZmVmODhmNjg=
12
12
  data.tar.gz: !binary |-
13
- M2ZiY2UyYzBmODliYWU4NGFhOWU3ODUzNmY4NjMxMDY5MjRmZTRjMWQ3OWUy
14
- ZmNjNjI4NTU0MjAyN2M5MGEyMmVjMjFjOTljZjg3ODM0MjViZTJmMTNjZmU1
15
- YmJlMDQ2NGY5ZGFlYmMzN2E1MWZjMWM3ZDk4NTI4ZDA2ZDcxNjk=
13
+ OTNiOTIyZmMxYzcwZDkyMDIzN2UyMGRmZDdhNmI4NDc2YWM5ZmViMjlmN2Jj
14
+ NjA3Y2MxOWMwYzViNmRmNzQ2Zjc5NDQ2Mjk4NDNiNDM1M2Q2OGVmYjZmMTAy
15
+ MzM3N2E5ZmYyMTc3YmM0ZDQyOTdkZmM4MDM1OGEzODkzYzJiNGE=
data/README.md CHANGED
@@ -24,9 +24,17 @@ Or install it yourself as:
24
24
  ## Usage
25
25
 
26
26
  ```ruby
27
- # config/initializers/labelizer.rb
28
- Labelizer.configure do |config|
29
- config.labels = %w(label description color)
27
+ # app/models/my_model.rb
28
+ class Customer < ApplicationModel
29
+ enum registration_state: {
30
+ starting: 0,
31
+ confirming: 1,
32
+ completed: 2,
33
+ }
34
+
35
+ include Labelizer
36
+
37
+ labelize :registration_state, %w(label description color)
30
38
  end
31
39
  ```
32
40
 
@@ -50,21 +58,6 @@ ja:
50
58
  color: label label-success
51
59
  ```
52
60
 
53
- ```ruby
54
- # app/models/my_model.rb
55
- class Customer < ApplicationModel
56
- enum registration_state: {
57
- starting: 0,
58
- confirming: 1,
59
- completed: 2,
60
- }
61
-
62
- include Labelizer
63
-
64
- labelize :registration_state
65
- end
66
- ```
67
-
68
61
  ```erb
69
62
  # app/views/customers/show.html.erb
70
63
  <% customer = Customer.find id %>
@@ -93,15 +86,12 @@ end
93
86
  Convert label:
94
87
 
95
88
  ```ruby
96
- # config/initializers/labelizer.rb
97
- Labelizer.configure do |config|
98
- config.converter = {
99
- color: ->(value){
100
- # value : attribute value
101
- "label label-#{value}"
102
- },
103
- }
104
- end
89
+ labelize :registration_state, %w(label description color), converter: {
90
+ color: ->(value){
91
+ # value : attribute value
92
+ "label label-#{value}"
93
+ },
94
+ }
105
95
  ```
106
96
 
107
97
  ```yaml
data/lib/labelizer.rb CHANGED
@@ -3,39 +3,29 @@ require "i18n"
3
3
  require "labelizer/version"
4
4
 
5
5
  module Labelizer
6
- class << self
7
- def configure
8
- yield config
9
- end
10
-
11
- private
12
-
13
- def config
14
- @config ||= OpenStruct.new
15
- end
16
- end
17
-
18
6
  def self.included(base)
19
7
  base.send :extend, ClassMethods
20
8
  end
21
9
 
22
10
  module ClassMethods
23
- def labelize(*attrs)
24
- attrs.each do |attr|
25
- define_method :"#{attr}_labelized" do
26
- self.class.labelized[attr][__send__(attr)]
27
- end
11
+ def labelize(attr, labels, converter: {})
12
+ @labelizer_converters ||= {}
13
+ @labelizer_converters[attr.to_sym] = converter
14
+
15
+ define_method :"#{attr}_labelized" do
16
+ self.class.labelized[attr][__send__(attr)]
17
+ end
28
18
 
29
- (Labelizer.__send__(:config).labels || []).each do |label|
30
- define_method :"#{attr}_#{label}" do
31
- self.class.labelized[attr][__send__(attr)][label]
32
- end
19
+ labels.each do |label|
20
+ define_method :"#{attr}_#{label}" do
21
+ self.class.labelized[attr][__send__(attr)][label]
33
22
  end
34
23
  end
35
24
  end
36
25
  def labelized
37
26
  model = model_name.i18n_key
38
27
  @labelized ||= Hash.new{|h,attr|
28
+ converters = @labelizer_converters && @labelizer_converters[attr.to_sym]
39
29
  h[attr] = Hash.new{|h,value|
40
30
  h[value] = Hash.new{|h,label|
41
31
  result = ::I18n.translate(
@@ -48,7 +38,7 @@ module Labelizer
48
38
  ],
49
39
  raise: true,
50
40
  ) rescue value
51
- if converter = (Labelizer.__send__(:config).converter || {})[label.to_sym]
41
+ if converter = converters && converters[label.to_sym]
52
42
  result = converter[result]
53
43
  end
54
44
  h[value] = result
@@ -1,3 +1,3 @@
1
1
  module Labelizer
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/version.txt CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: labelizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - shun