enum_i18n_help 0.1.0 → 0.1.5

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,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a05fa1a83bcf0b57dc7b069d26e04f00adc5601d
4
- data.tar.gz: b9c44c6df17fe122a4a3526dfa04ecf32019377d
2
+ SHA256:
3
+ metadata.gz: 54e7e98f9c9b3c474d25558daec95b4ef48f0898a8703cd75175519eb007f981
4
+ data.tar.gz: db899682f0ed3a92868a80b89f4c2f9c1a73200834ab5605a8f0c034209726f0
5
5
  SHA512:
6
- metadata.gz: 0da402a997a611d409cf4d5e73309f8870f48cab7d5bb24d056cb6a6c95269af84fa8d84b27365b1e818b7fee1ba314a6394dbb0ce9f73d69ef277c2b9e6e7ac
7
- data.tar.gz: 5ae6dadd26a445f34f20d437cf29798a60ed3c3dfd8a7faf62608854e353235386908d14a78a12968238b1df60a9181c98b2d0c25cf4bb478001fd6358739932
6
+ metadata.gz: ef9fa6cc1ed747cdb5d50d60878af2b4d79556c248fe93952395dcb989c285f7433c142ed722fc2c4028258ae604d536ff7c7cfedd8ace5984812bef26a06317
7
+ data.tar.gz: f55edf6c6bbdea2871296be39216ad7d97c811581e4fd00923a57d7ee51e0c330b37f47f59bf0cb453b821f7020668f10deed9b639e57551fe66b46c3ba8c3c1
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3.5
4
+ - 2.4.3
5
+ - 2.5.0
6
+ before_install:
7
+ - gem update --system 2.7.10
8
+ - gem install bundler -v 2.1.4
9
+ cache: bundler
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # EnumI18nHelp
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/enum_i18n_help`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ Help ActiveRecord::Enum feature to work with I18n.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ added a new Test::Unit to the existing EnumHelp gem and changed the namespace of I18n.
6
6
 
7
7
  ## Installation
8
8
 
@@ -22,22 +22,65 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- TODO: Write usage instructions here
25
+ model
26
26
 
27
- ## Development
27
+ ```ruby
28
+ class User < ActiveRecord::Base
29
+ enum role: { manager: 1, member: 2 }
30
+ end
31
+ ```
28
32
 
29
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
33
+ I18n
30
34
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
35
+ ```ruby
36
+ ja:
37
+ activerecord:
38
+ attributes:
39
+ user/role:
40
+ manager: 管理者
41
+ member: 一般
42
+ ```
32
43
 
33
- ## Contributing
44
+ ```ruby
45
+ en:
46
+ activerecord:
47
+ attributes:
48
+ user/role:
49
+ manager: Manager
50
+ member: Member
51
+ ```
34
52
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/enum_i18n_help. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
53
+ ### enum_column_text
36
54
 
37
- ## License
55
+ ```ruby
56
+ user = User.first
57
+ user.role
58
+ => "manager"
59
+ user.role_text
60
+ => "管理者"
61
+ ```
38
62
 
39
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
63
+ change locale
40
64
 
41
- ## Code of Conduct
65
+ ```ruby
66
+ I18n.locale = :en
67
+ user.role
68
+ => "manager"
69
+ user.role_text
70
+ => "Manager"
71
+ ```
72
+
73
+ ### enum_column_options
74
+
75
+ ```ruby
76
+ User.role_options
77
+ => [["管理者", :manager], ["一般", :member]]
78
+ ```
79
+
80
+ ## Contributing
42
81
 
43
- Everyone interacting in the EnumI18nHelp project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/enum_i18n_help/blob/master/CODE_OF_CONDUCT.md).
82
+ 1. Fork it ( https://github.com/ShuheiTsuji/enum_i18n_help )
83
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
84
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
85
+ 4. Push to the branch (`git push origin my-new-feature`)
86
+ 5. Create new Pull Request
@@ -29,11 +29,11 @@ Gem::Specification.new do |spec|
29
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
31
 
32
- spec.add_runtime_dependency "activerecord", "~> 5.0"
32
+ spec.add_runtime_dependency "activerecord"
33
33
 
34
34
  spec.add_development_dependency "activesupport", "~> 5.0"
35
- spec.add_development_dependency "bundler", "~> 1.16"
36
- spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "bundler", "~> 2.1.4"
36
+ spec.add_development_dependency "rake", ">= 12.3.3"
37
37
  spec.add_development_dependency "sqlite3"
38
38
  spec.add_development_dependency "rspec"
39
39
  spec.add_development_dependency "pry"
@@ -2,9 +2,16 @@ module EnumI18nHelp
2
2
  module EnumI18n
3
3
  def enum(definitions)
4
4
  super(definitions)
5
- definitions.each do |key, value|
5
+ # super has defined enum.
6
+ # So defined_enums are available!
7
+ #
8
+ # To avoid defining methods multiple times,
9
+ # slices hash to get enums called this time.
10
+ #
11
+ # Be careful not to destroy defined_enum, such as using merge!
12
+ defined_enums.slice(*definitions.keys.map(&:to_s)).each_pair do |key, value|
6
13
  EnumAttribute.define_text_method!(self, key)
7
- EnumAttribute.define_options_method!(self, key, value)
14
+ EnumAttribute.define_options_method!(self, key, value.symbolize_keys)
8
15
  end
9
16
  end
10
17
  end
@@ -15,17 +22,25 @@ module EnumI18nHelp
15
22
  def define_text_method!(klass, enum_key)
16
23
  klass.class_eval <<-METHOD, __FILE__, __LINE__ + 1
17
24
  def #{enum_key}_text
25
+ return if #{enum_key}.nil?
26
+
18
27
  I18n.t "activerecord.attributes.#{klass.name.underscore}/#{enum_key}." + #{enum_key}, default: #{enum_key}.humanize
19
28
  end
20
29
  METHOD
21
30
  end
22
31
 
32
+ # This method assume that attr_value is a symbolized hash
23
33
  def define_options_method!(klass, attr_name, attr_value)
24
34
  attr_value_hash = attr_value.keys.map { |key| [key, key.to_s.humanize] }.to_h
25
35
 
26
36
  klass.instance_eval <<-METHOD, __FILE__, __LINE__ + 1
27
37
  def #{attr_name}_options
28
- #{attr_value_hash}.merge((I18n.t "activerecord.attributes.#{klass.name.underscore}/#{attr_name}").reject{ |_, v| v.nil? }).invert.to_a
38
+ locale_definitions = I18n.t("activerecord.attributes.#{klass.name.underscore}/#{attr_name}")
39
+
40
+ #{attr_value_hash}
41
+ .merge(locale_definitions.reject{ |k, v| v.nil? || #{attr_value.keys}.exclude?(k.to_sym) })
42
+ .invert
43
+ .to_a
29
44
  end
30
45
  METHOD
31
46
  end
@@ -1,3 +1,3 @@
1
1
  module EnumI18nHelp
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enum_i18n_help
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - ShuheiTsuji
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-09 00:00:00.000000000 Z
11
+ date: 2020-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.16'
47
+ version: 2.1.4
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.16'
54
+ version: 2.1.4
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: 12.3.3
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: 12.3.3
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sqlite3
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -131,6 +131,7 @@ extra_rdoc_files: []
131
131
  files:
132
132
  - ".gitignore"
133
133
  - ".rspec"
134
+ - ".travis.yml"
134
135
  - CODE_OF_CONDUCT.md
135
136
  - Gemfile
136
137
  - LICENSE.txt
@@ -161,8 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
162
  - !ruby/object:Gem::Version
162
163
  version: '0'
163
164
  requirements: []
164
- rubyforge_project:
165
- rubygems_version: 2.5.1
165
+ rubygems_version: 3.1.4
166
166
  signing_key:
167
167
  specification_version: 4
168
168
  summary: Enum attributes with I18n and ActiveRecord support