enum_i18n_help 0.1.0 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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