hanami-i18n 0.1.1 → 0.1.2

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
2
  SHA256:
3
- metadata.gz: a22c9aa18a54d0afb2db554c3d03b048ba4fd7f12e1f244b4761acd4de8292d7
4
- data.tar.gz: 9f1807800e93d74f5a4c813ca2e07a9e84cda0a59e34579edac055dcee22d056
3
+ metadata.gz: 02fb431b3963d4308fffc13818866cb21f3e716fd97de6f189a29ba5dfccf8f1
4
+ data.tar.gz: f86ff8f554804468dabc7b2809fc98792990d87ed16f390e35171f35937e9d74
5
5
  SHA512:
6
- metadata.gz: 8ebed58d20e27678580cdf7f3da375edc66bcbb0932f282a3d064d5881ec24629713175784a915fedb8ab67ac65c4cd1e183ecbe64e10064dfee57c5b7e4e643
7
- data.tar.gz: 69c51f597f40ffc5f107a419d91dffcf7d384418921a8831a42633f10028a56a63d30676f2932a50c2d59c05d6b17e2043fbb3839356936f12b892838ba18eaa
6
+ metadata.gz: 054aa463996ea4d9d2c23113f1a7e4b1f54d4da0e53afb9d953280de740d0611c944e62293fe1509e189a2df6dd4234d39be630db0c842c901ef0fd99c3d3aa1
7
+ data.tar.gz: 694fe6e8daf80f97a3c8fc27b34dcb93e07594362ed3d6711519714509313d40da83d758a798d255628e5079c72b024a0821517f02d41ddc801901d25e1fc081
data/.byebug_history ADDED
@@ -0,0 +1,170 @@
1
+ continue
2
+ validator.validate.errors(full: true)
3
+ validator.validate.errors
4
+ validator.validate
5
+ continue
6
+ validator.validate.errors(full: true)
7
+ validator.validate.errors
8
+ validator.validate
9
+ validator
10
+ continue
11
+ validator.validate
12
+ validator
13
+ continue
14
+ n
15
+ s
16
+ validator.validate.errors(full: true)
17
+ validator.validate.errors
18
+ continue
19
+ validator.validate.errors(full: true)
20
+ validator.validate.errors
21
+ continue
22
+ validator.validate.errors
23
+ validator.validate
24
+ continue
25
+ validator.validate.errors(full: true)
26
+ continue
27
+ self
28
+ messages.rule('テスト')
29
+ rule
30
+ messages.rule(rule, opts)
31
+ messages.rule
32
+ messages
33
+ n
34
+ full?
35
+ n
36
+ template
37
+ teampltea
38
+ teamplate
39
+ template
40
+ tokens
41
+ rule
42
+ tokens
43
+ template
44
+ text
45
+ s
46
+ message_text(rule, template, tokens, options)
47
+ options
48
+ tokens
49
+ template
50
+ rule
51
+ n
52
+ template
53
+ n
54
+ path
55
+ rule
56
+ n
57
+ options.update(tokens)
58
+ n
59
+ base_opts.update(lookup_options(arg_vals: arg_vals, input: input))
60
+ input
61
+ n
62
+ message_tokens(args)
63
+ n
64
+ val
65
+ arg_vals
66
+ n
67
+ args.map(&:last)
68
+ args
69
+ predicate
70
+ n
71
+ s
72
+ n
73
+ s
74
+ merge(other.update(path: [*path, *other[:path]]))
75
+ s
76
+ other
77
+ oTHer
78
+ rule
79
+ n
80
+ s
81
+ args
82
+ node[1]
83
+ node
84
+ s
85
+ n
86
+ s
87
+ merge(other.update(path: [*path, *other[:path]]))
88
+ s
89
+ visit(other, opts.(rule: rule))
90
+ n
91
+ s
92
+ n
93
+ s
94
+ n
95
+ s
96
+ n
97
+ s
98
+ continue
99
+ left
100
+ n
101
+ right
102
+ left
103
+ s
104
+ node
105
+ self.dump
106
+ self
107
+ node
108
+ n
109
+ merge(other.update(path: [*path, *other[:path]]))
110
+ other
111
+ s
112
+ visit(other, opts.(rule: rule))
113
+ other
114
+ rule
115
+ n
116
+ node
117
+ s
118
+ node[0]
119
+ args
120
+ node
121
+ s
122
+ n
123
+ s
124
+ n
125
+ s
126
+ n
127
+ s
128
+ continue
129
+ messages.flatten
130
+ messages
131
+ n
132
+ __send__(:"visit_#{node[0]}", node[1], *args)
133
+ s
134
+ ast
135
+ MessageSet[ast.map { |node| visit(node) }, failures: options.fetch(:failures, true)].dump
136
+ MessageSet[ast.map { |node| visit(node) }, failures: options.fetch(:failures, true)]
137
+ n
138
+ results.map(&:to_ast)
139
+ n
140
+ self
141
+ options
142
+ messages
143
+ s
144
+ self
145
+ n
146
+ s
147
+ message_compiler.with(options).(result_ast).dump
148
+ message_compiler.with(options).(result_ast)
149
+ s
150
+ message_set(options.merge(hints: false)).dump
151
+ message_set(options.merge(hints: false))
152
+ n
153
+ s
154
+ continue
155
+ n
156
+ ast
157
+ n
158
+ results.map(&:to_ast)
159
+ results
160
+ n
161
+ s
162
+ messages
163
+ self
164
+ n
165
+ new_options
166
+ s
167
+ options
168
+ n
169
+ step
170
+ h
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 2.6.6
data/Appraisals ADDED
@@ -0,0 +1,7 @@
1
+ appraise "hanami-1.3" do
2
+ gem 'rake'
3
+ gem 'hanami', '~> 1.3'
4
+ gem 'hanami-model', '~> 1.3'
5
+
6
+ gem 'sqlite3'
7
+ end
data/Gemfile CHANGED
@@ -4,3 +4,5 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in hanami-i18n.gemspec
6
6
  gemspec
7
+
8
+ gem 'byebug'
data/Gemfile.lock CHANGED
@@ -1,132 +1,115 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hanami-i18n (0.1.1)
4
+ hanami-i18n (0.1.2)
5
5
  dry-inflector
6
- dry-validation
7
- hanami-helpers (~> 1.2)
8
- hanami-model (~> 1.2)
6
+ hanami-helpers
7
+ hanami-validations
9
8
  i18n
10
9
 
11
10
  GEM
12
11
  remote: https://rubygems.org/
13
12
  specs:
13
+ appraisal (2.2.0)
14
+ bundler
15
+ rake
16
+ thor (>= 0.14.0)
14
17
  ast (2.4.0)
15
- concurrent-ruby (1.0.5)
18
+ byebug (11.1.3)
19
+ coderay (1.1.2)
20
+ concurrent-ruby (1.1.6)
16
21
  diff-lcs (1.3)
17
- dry-configurable (0.7.0)
22
+ dry-configurable (0.11.5)
18
23
  concurrent-ruby (~> 1.0)
19
- dry-container (0.6.0)
24
+ dry-core (~> 0.4, >= 0.4.7)
25
+ dry-equalizer (~> 0.2)
26
+ dry-container (0.7.2)
20
27
  concurrent-ruby (~> 1.0)
21
28
  dry-configurable (~> 0.1, >= 0.1.3)
22
- dry-core (0.4.6)
29
+ dry-core (0.4.9)
23
30
  concurrent-ruby (~> 1.0)
24
- dry-equalizer (0.2.1)
25
- dry-inflector (0.1.2)
26
- dry-initializer (1.4.1)
31
+ dry-equalizer (0.3.0)
32
+ dry-inflector (0.2.0)
27
33
  dry-logic (0.4.2)
28
34
  dry-container (~> 0.2, >= 0.2.6)
29
35
  dry-core (~> 0.2)
30
36
  dry-equalizer (~> 0.2)
31
- dry-struct (0.3.1)
32
- dry-configurable (~> 0.1)
33
- dry-core (~> 0.3)
34
- dry-equalizer (~> 0.2)
35
- dry-types (~> 0.9, >= 0.9.0)
36
- ice_nine (~> 0.11)
37
- dry-types (0.11.1)
37
+ dry-types (0.12.3)
38
38
  concurrent-ruby (~> 1.0)
39
39
  dry-configurable (~> 0.1)
40
40
  dry-container (~> 0.3)
41
41
  dry-core (~> 0.2, >= 0.2.1)
42
42
  dry-equalizer (~> 0.2)
43
- dry-logic (~> 0.4, >= 0.4.0)
43
+ dry-logic (~> 0.4, >= 0.4.2)
44
44
  inflecto (~> 0.0.0, >= 0.0.2)
45
- dry-validation (0.11.0)
45
+ dry-validation (0.11.2)
46
46
  concurrent-ruby (~> 1.0)
47
47
  dry-configurable (~> 0.1, >= 0.1.3)
48
48
  dry-core (~> 0.2, >= 0.2.1)
49
49
  dry-equalizer (~> 0.2)
50
- dry-logic (~> 0.4, >= 0.4.0)
51
- dry-types (~> 0.11.0)
52
- hanami-helpers (1.2.0)
53
- hanami-utils (~> 1.2)
54
- hanami-model (1.2.0)
55
- concurrent-ruby (~> 1.0)
56
- dry-types (~> 0.11.0)
57
- hanami-utils (~> 1.2)
58
- rom (~> 3.3, >= 3.3.3)
59
- rom-repository (~> 1.4)
60
- rom-sql (~> 1.3, >= 1.3.5)
61
- hanami-utils (1.2.0)
50
+ dry-logic (~> 0.4.2)
51
+ dry-types (~> 0.12.0)
52
+ hanami-helpers (1.3.3)
53
+ hanami-utils (~> 1.3)
54
+ hanami-utils (1.3.6)
62
55
  concurrent-ruby (~> 1.0)
63
56
  transproc (~> 1.0)
64
- i18n (1.0.1)
57
+ hanami-validations (1.3.6)
58
+ dry-logic (~> 0.4.2, < 0.5)
59
+ dry-validation (~> 0.11, < 0.12)
60
+ hanami-utils (~> 1.3)
61
+ i18n (1.8.2)
65
62
  concurrent-ruby (~> 1.0)
66
- ice_nine (0.11.2)
67
63
  inflecto (0.0.2)
68
- parallel (1.12.1)
69
- parser (2.5.0.5)
64
+ jaro_winkler (1.5.4)
65
+ method_source (1.0.0)
66
+ parallel (1.19.1)
67
+ parser (2.7.1.1)
70
68
  ast (~> 2.4.0)
71
- powerpack (0.1.1)
69
+ pry (0.13.1)
70
+ coderay (~> 1.1)
71
+ method_source (~> 1.0)
72
72
  rainbow (3.0.0)
73
- rake (10.5.0)
74
- rom (3.3.3)
75
- concurrent-ruby (~> 1.0)
76
- dry-core (~> 0.3)
77
- dry-equalizer (~> 0.2)
78
- dry-initializer (~> 1.3)
79
- dry-types (~> 0.9, >= 0.9.4)
80
- rom-mapper (~> 0.5, >= 0.5.1)
81
- rom-mapper (0.5.1)
82
- dry-core (~> 0.2, >= 0.2.3)
83
- dry-equalizer (~> 0.2)
84
- transproc (~> 1.0)
85
- rom-repository (1.4.0)
86
- dry-core (~> 0.3, >= 0.3.1)
87
- dry-struct (~> 0.3)
88
- rom (~> 3.3)
89
- rom-mapper (~> 0.5)
90
- rom-sql (1.3.5)
91
- dry-core (~> 0.3)
92
- dry-equalizer (~> 0.2)
93
- dry-types (~> 0.11.0)
94
- rom (~> 3.2, >= 3.2.2)
95
- sequel (~> 4.43)
96
- rspec (3.7.0)
97
- rspec-core (~> 3.7.0)
98
- rspec-expectations (~> 3.7.0)
99
- rspec-mocks (~> 3.7.0)
100
- rspec-core (3.7.1)
101
- rspec-support (~> 3.7.0)
102
- rspec-expectations (3.7.0)
73
+ rake (13.0.1)
74
+ rexml (3.2.4)
75
+ rspec (3.9.0)
76
+ rspec-core (~> 3.9.0)
77
+ rspec-expectations (~> 3.9.0)
78
+ rspec-mocks (~> 3.9.0)
79
+ rspec-core (3.9.1)
80
+ rspec-support (~> 3.9.1)
81
+ rspec-expectations (3.9.1)
103
82
  diff-lcs (>= 1.2.0, < 2.0)
104
- rspec-support (~> 3.7.0)
105
- rspec-mocks (3.7.0)
83
+ rspec-support (~> 3.9.0)
84
+ rspec-mocks (3.9.1)
106
85
  diff-lcs (>= 1.2.0, < 2.0)
107
- rspec-support (~> 3.7.0)
108
- rspec-support (3.7.1)
109
- rubocop (0.54.0)
86
+ rspec-support (~> 3.9.0)
87
+ rspec-support (3.9.2)
88
+ rubocop (0.82.0)
89
+ jaro_winkler (~> 1.5.1)
110
90
  parallel (~> 1.10)
111
- parser (>= 2.5)
112
- powerpack (~> 0.1)
91
+ parser (>= 2.7.0.1)
113
92
  rainbow (>= 2.2.2, < 4.0)
93
+ rexml
114
94
  ruby-progressbar (~> 1.7)
115
- unicode-display_width (~> 1.0, >= 1.0.1)
116
- ruby-progressbar (1.9.0)
117
- sequel (4.49.0)
118
- transproc (1.0.2)
119
- unicode-display_width (1.3.0)
95
+ unicode-display_width (>= 1.4.0, < 2.0)
96
+ ruby-progressbar (1.10.1)
97
+ thor (1.0.1)
98
+ transproc (1.1.1)
99
+ unicode-display_width (1.7.0)
120
100
 
121
101
  PLATFORMS
122
102
  ruby
123
103
 
124
104
  DEPENDENCIES
125
- bundler (~> 1.16)
105
+ appraisal
106
+ bundler
107
+ byebug
126
108
  hanami-i18n!
127
- rake (~> 10.0)
128
- rspec (~> 3.0)
109
+ pry
110
+ rake
111
+ rspec
129
112
  rubocop
130
113
 
131
114
  BUNDLED WITH
132
- 1.16.1
115
+ 2.1.4
data/README.md CHANGED
@@ -1,83 +1,73 @@
1
1
  # Hanami::I18n
2
2
 
3
- This gem provide i18n for hanami
3
+ It is a gem that integrates Hanami and i18n.
4
4
 
5
- ## Installation
5
+ ## Getting start
6
6
 
7
- Add this line to your application's Gemfile:
7
+ Add Gemfile
8
8
 
9
9
  ```ruby
10
10
  gem 'hanami-i18n'
11
11
  ```
12
12
 
13
- And then execute:
13
+ Next, put the initialization file of I18n in `config/locale.rb`.
14
+ Then place the locale file in any location.
15
+ *Important: `config/initalizers` will not work.*
14
16
 
15
- $ bundle
17
+ 例:
16
18
 
17
- Or install it yourself as:
18
-
19
- $ gem install hanami-i18n
20
-
21
- ## Usage
19
+ ```ruby
20
+ # config/locale.rb
21
+ I18n.load_path << Dir[File.expand_path("config/locales") + "/*.yml"]
22
+ I18n.default_locale = :en # (note that `en` is already the default!)
23
+ ```
22
24
 
23
- ### Prepare locales file
24
25
 
25
- In your hanami application, you should prepare locales file to `config/locale`.
26
+ ```yaml
27
+ # config/locales/en.yml
26
28
 
27
- ```yml
28
- ja: # config/locale/ja.yml
29
- model:
30
- entities:
31
- user: ユーザー
32
- book: 本
29
+ en:
30
+ models:
33
31
  attributes:
34
32
  user:
35
- name: 名前
36
- email: メールアドレス
37
- book:
38
- title: タイトル
39
- auther: 著者
33
+ name: "My name"
34
+ email: "My E-mail"
40
35
 
36
+ errors:
37
+ filled?: "MUST be filled!"
41
38
  ```
42
39
 
43
- ### Initialize I18n
40
+ Then it can be used as follows.
44
41
 
45
- In your initializer, you should set available locales and load path.
42
+ ### form
46
43
 
47
44
  ```ruby
48
- # config/initializers/i18n.rb
49
-
50
- I18n.available_locales = [:ja, :en]
51
- I18n.default_locale = :ja
52
- I18n.load_path += Dir[Hanami.root.join('config', 'locale', '*.{rb,yml}')]
53
-
45
+ form_for :user, routes.users_path do
46
+ label :name
47
+ label :email
48
+ end
54
49
  ```
55
50
 
56
- and you can use i18n in your application!
57
-
58
- ## Form
51
+ ```html
52
+ <form>
53
+ <label>My name</label>
54
+ <label>My E-mail</label>
55
+ </form>
56
+ ```
59
57
 
60
- In your view, if you defined yml file above, you can use translation in your form label.
58
+ ### validation
61
59
 
62
- ```rhtml
63
- <%=
64
- form_for :user routes.user_path do
65
- label :name # => 名前
66
- text_field :name
67
-
68
- label :email # => メールアドレス
69
- text_field :email
60
+ ```ruby
61
+ params do
62
+ required(:user).schema do
63
+ required(:name).filled(:str?)
64
+ required(:email).filled(:str?)
70
65
  end
71
- %>
72
- ```
66
+ end
73
67
 
74
- ## View
75
68
 
76
- ```rhtml
77
- <%= Book.t %> <% # => 本 %>
78
- <%= Book.t(:title) %> <% # => タイトル %>
79
- <%= Book.t(:auther) %> <% # => 著者 %>
80
69
 
70
+ params.errors(full: true) # => { user: {:email=>["My name MUST be filled!"], :post=>{:title=>["My E-mail MUST be filled!"]}} }
81
71
  ```
82
72
 
83
73
  ## Development
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_RETRY: "1"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "hanami", "~> 1.3"
7
+ gem "hanami-model", "~> 1.3"
8
+ gem "sqlite3"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,201 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ hanami-i18n (0.1.1)
5
+ dry-inflector
6
+ hanami-helpers
7
+ hanami-validations
8
+ i18n
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ appraisal (2.2.0)
14
+ bundler
15
+ rake
16
+ thor (>= 0.14.0)
17
+ ast (2.4.0)
18
+ byebug (11.1.3)
19
+ coderay (1.1.2)
20
+ concurrent-ruby (1.1.6)
21
+ diff-lcs (1.3)
22
+ dry-configurable (0.11.5)
23
+ concurrent-ruby (~> 1.0)
24
+ dry-core (~> 0.4, >= 0.4.7)
25
+ dry-equalizer (~> 0.2)
26
+ dry-container (0.7.2)
27
+ concurrent-ruby (~> 1.0)
28
+ dry-configurable (~> 0.1, >= 0.1.3)
29
+ dry-core (0.4.9)
30
+ concurrent-ruby (~> 1.0)
31
+ dry-equalizer (0.3.0)
32
+ dry-inflector (0.2.0)
33
+ dry-initializer (1.4.1)
34
+ dry-logic (0.4.2)
35
+ dry-container (~> 0.2, >= 0.2.6)
36
+ dry-core (~> 0.2)
37
+ dry-equalizer (~> 0.2)
38
+ dry-struct (0.3.1)
39
+ dry-configurable (~> 0.1)
40
+ dry-core (~> 0.3)
41
+ dry-equalizer (~> 0.2)
42
+ dry-types (~> 0.9, >= 0.9.0)
43
+ ice_nine (~> 0.11)
44
+ dry-types (0.11.1)
45
+ concurrent-ruby (~> 1.0)
46
+ dry-configurable (~> 0.1)
47
+ dry-container (~> 0.3)
48
+ dry-core (~> 0.2, >= 0.2.1)
49
+ dry-equalizer (~> 0.2)
50
+ dry-logic (~> 0.4, >= 0.4.0)
51
+ inflecto (~> 0.0.0, >= 0.0.2)
52
+ dry-validation (0.11.0)
53
+ concurrent-ruby (~> 1.0)
54
+ dry-configurable (~> 0.1, >= 0.1.3)
55
+ dry-core (~> 0.2, >= 0.2.1)
56
+ dry-equalizer (~> 0.2)
57
+ dry-logic (~> 0.4, >= 0.4.0)
58
+ dry-types (~> 0.11.0)
59
+ hanami (1.3.3)
60
+ bundler (>= 1.6, < 3)
61
+ concurrent-ruby (~> 1.0)
62
+ hanami-assets (~> 1.3)
63
+ hanami-cli (~> 0.3)
64
+ hanami-controller (~> 1.3)
65
+ hanami-helpers (~> 1.3)
66
+ hanami-mailer (~> 1.3)
67
+ hanami-router (~> 1.3)
68
+ hanami-utils (~> 1.3)
69
+ hanami-validations (>= 1.3, < 3)
70
+ hanami-view (~> 1.3)
71
+ hanami-assets (1.3.4)
72
+ hanami-helpers (~> 1.3)
73
+ hanami-utils (~> 1.3)
74
+ tilt (~> 2.0, >= 2.0.2)
75
+ hanami-cli (0.3.1)
76
+ concurrent-ruby (~> 1.0)
77
+ hanami-utils (~> 1.3)
78
+ hanami-controller (1.3.3)
79
+ hanami-utils (~> 1.3)
80
+ rack (~> 2.0)
81
+ hanami-helpers (1.3.3)
82
+ hanami-utils (~> 1.3)
83
+ hanami-mailer (1.3.2)
84
+ hanami-utils (~> 1.3)
85
+ mail (~> 2.6)
86
+ tilt (~> 2.0, >= 2.0.1)
87
+ hanami-model (1.3.2)
88
+ concurrent-ruby (~> 1.0)
89
+ dry-logic (~> 0.4.2, < 0.5)
90
+ dry-types (~> 0.11.0)
91
+ hanami-utils (~> 1.3)
92
+ rom (~> 3.3, >= 3.3.3)
93
+ rom-repository (~> 1.4)
94
+ rom-sql (~> 1.3, >= 1.3.5)
95
+ hanami-router (1.3.2)
96
+ hanami-utils (~> 1.3)
97
+ http_router (= 0.11.2)
98
+ rack (~> 2.0)
99
+ hanami-utils (1.3.6)
100
+ concurrent-ruby (~> 1.0)
101
+ transproc (~> 1.0)
102
+ hanami-validations (1.3.6)
103
+ dry-logic (~> 0.4.2, < 0.5)
104
+ dry-validation (~> 0.11, < 0.12)
105
+ hanami-utils (~> 1.3)
106
+ hanami-view (1.3.3)
107
+ hanami-utils (~> 1.3)
108
+ tilt (~> 2.0, >= 2.0.1)
109
+ http_router (0.11.2)
110
+ rack (>= 1.0.0)
111
+ url_mount (~> 0.2.1)
112
+ i18n (1.8.2)
113
+ concurrent-ruby (~> 1.0)
114
+ ice_nine (0.11.2)
115
+ inflecto (0.0.2)
116
+ jaro_winkler (1.5.4)
117
+ mail (2.7.1)
118
+ mini_mime (>= 0.1.1)
119
+ method_source (1.0.0)
120
+ mini_mime (1.0.2)
121
+ parallel (1.19.1)
122
+ parser (2.7.1.1)
123
+ ast (~> 2.4.0)
124
+ pry (0.13.1)
125
+ coderay (~> 1.1)
126
+ method_source (~> 1.0)
127
+ rack (2.2.2)
128
+ rainbow (3.0.0)
129
+ rake (13.0.1)
130
+ rexml (3.2.4)
131
+ rom (3.3.3)
132
+ concurrent-ruby (~> 1.0)
133
+ dry-core (~> 0.3)
134
+ dry-equalizer (~> 0.2)
135
+ dry-initializer (~> 1.3)
136
+ dry-types (~> 0.9, >= 0.9.4)
137
+ rom-mapper (~> 0.5, >= 0.5.1)
138
+ rom-mapper (0.5.1)
139
+ dry-core (~> 0.2, >= 0.2.3)
140
+ dry-equalizer (~> 0.2)
141
+ transproc (~> 1.0)
142
+ rom-repository (1.4.0)
143
+ dry-core (~> 0.3, >= 0.3.1)
144
+ dry-struct (~> 0.3)
145
+ rom (~> 3.3)
146
+ rom-mapper (~> 0.5)
147
+ rom-sql (1.3.5)
148
+ dry-core (~> 0.3)
149
+ dry-equalizer (~> 0.2)
150
+ dry-types (~> 0.11.0)
151
+ rom (~> 3.2, >= 3.2.2)
152
+ sequel (~> 4.43)
153
+ rspec (3.9.0)
154
+ rspec-core (~> 3.9.0)
155
+ rspec-expectations (~> 3.9.0)
156
+ rspec-mocks (~> 3.9.0)
157
+ rspec-core (3.9.1)
158
+ rspec-support (~> 3.9.1)
159
+ rspec-expectations (3.9.1)
160
+ diff-lcs (>= 1.2.0, < 2.0)
161
+ rspec-support (~> 3.9.0)
162
+ rspec-mocks (3.9.1)
163
+ diff-lcs (>= 1.2.0, < 2.0)
164
+ rspec-support (~> 3.9.0)
165
+ rspec-support (3.9.2)
166
+ rubocop (0.82.0)
167
+ jaro_winkler (~> 1.5.1)
168
+ parallel (~> 1.10)
169
+ parser (>= 2.7.0.1)
170
+ rainbow (>= 2.2.2, < 4.0)
171
+ rexml
172
+ ruby-progressbar (~> 1.7)
173
+ unicode-display_width (>= 1.4.0, < 2.0)
174
+ ruby-progressbar (1.10.1)
175
+ sequel (4.49.0)
176
+ sqlite3 (1.4.2)
177
+ thor (1.0.1)
178
+ tilt (2.0.10)
179
+ transproc (1.1.1)
180
+ unicode-display_width (1.7.0)
181
+ url_mount (0.2.1)
182
+ rack
183
+
184
+ PLATFORMS
185
+ ruby
186
+
187
+ DEPENDENCIES
188
+ appraisal
189
+ bundler
190
+ byebug
191
+ hanami (~> 1.3)
192
+ hanami-i18n!
193
+ hanami-model (~> 1.3)
194
+ pry
195
+ rake
196
+ rspec
197
+ rubocop
198
+ sqlite3
199
+
200
+ BUNDLED WITH
201
+ 2.1.4
data/hanami-i18n.gemspec CHANGED
@@ -31,14 +31,16 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
- spec.add_dependency 'dry-validation'
35
- spec.add_dependency 'dry-inflector'
36
- spec.add_dependency 'hanami-helpers', '~> 1.2'
37
- spec.add_dependency 'hanami-model', '~> 1.2'
38
34
  spec.add_dependency 'i18n'
35
+ spec.add_dependency 'hanami-helpers'
36
+ spec.add_dependency 'hanami-validations'
37
+ spec.add_dependency 'dry-inflector'
39
38
 
40
- spec.add_development_dependency 'bundler', '~> 1.16'
41
- spec.add_development_dependency 'rake', '~> 10.0'
42
- spec.add_development_dependency 'rspec', '~> 3.0'
39
+ spec.add_development_dependency 'bundler'
40
+ spec.add_development_dependency 'rake'
41
+ spec.add_development_dependency 'rspec'
43
42
  spec.add_development_dependency 'rubocop'
43
+ spec.add_development_dependency "appraisal"
44
+ spec.add_development_dependency "pry"
45
+ spec.add_development_dependency "byebug"
44
46
  end
data/lib/hanami/i18n.rb CHANGED
@@ -1,12 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'hanami/i18n/version'
4
- require 'hanami/i18n/entity'
5
- require 'hanami/i18n/helpers/form_helper/form_builder'
6
- require 'hanami/i18n/view'
4
+ require 'hanami/i18n/helpers/form'
5
+ require 'hanami/i18n/validations'
7
6
 
8
- ::Hanami::View.configure do
9
- prepare do
10
- include Hanami::I18n::View
11
- end
7
+ if Hanami.respond_to?(:root)
8
+ require Hanami.root.join('config/locale.rb')
12
9
  end
@@ -0,0 +1,40 @@
1
+ require 'dry/inflector'
2
+
3
+ module Hanami
4
+ module I18n
5
+ module Form
6
+ def self.prepended(_klass)
7
+ private :_i18n_content, :_model_name
8
+ end
9
+
10
+ def label(content = nil, **attributes, &blk)
11
+ attributes[:for] ||= content
12
+ super(_i18n_content(content), **attributes, &blk)
13
+ end
14
+
15
+ def _i18n_content(content)
16
+ ::I18n.t("models.attributes.#{_model_name}.#{content}",
17
+ default: nil) || content
18
+ end
19
+
20
+ def _model_name
21
+ model = @name.to_s
22
+ .gsub('[', '.')
23
+ .delete(']')
24
+ .split('.')
25
+ .last
26
+ Dry::Inflector.new.singularize(model)
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ module Hanami
33
+ module Helpers
34
+ module FormHelper
35
+ class FormBuilder
36
+ prepend Hanami::I18n::Form
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,45 @@
1
+ module Hanami
2
+ module I18n
3
+ module Validations
4
+ module Settings
5
+ def self.prepended(klass)
6
+ klass.singleton_class.alias_method :_included, :included
7
+ klass.singleton_class.prepend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ def included(klass)
12
+ _included(klass)
13
+
14
+ klass.messages :i18n
15
+ end
16
+ end
17
+ end
18
+
19
+ module MessageCompiler
20
+ def message_text(rule, template, tokens, opts)
21
+ model_name = (opts.path - [rule]).last
22
+ rule = ::I18n.t("models.attributes.#{model_name}.#{rule}", default: nil) ||
23
+ ::I18n.t("models.entities.#{rule}", default: nil) ||
24
+ rule
25
+
26
+ super(rule, template, tokens, opts)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ module Hanami
34
+ module Validations
35
+ prepend Hanami::I18n::Validations::Settings
36
+ end
37
+ end
38
+
39
+ module Dry
40
+ module Validation
41
+ class MessageCompiler
42
+ prepend Hanami::I18n::Validations::MessageCompiler
43
+ end
44
+ end
45
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Hanami
4
4
  module I18n
5
- VERSION = '0.1.1'
5
+ VERSION = '0.1.2'
6
6
  end
7
7
  end
@@ -0,0 +1,2 @@
1
+ I18n.load_path << Dir[File.expand_path("config/locales") + "/*.yml"]
2
+ I18n.default_locale = :en # (note that `en` is already the default!)
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-i18n
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ippachi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-30 00:00:00.000000000 Z
11
+ date: 2020-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: dry-validation
14
+ name: i18n
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dry-inflector
28
+ name: hanami-helpers
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,41 +39,41 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: hanami-helpers
42
+ name: hanami-validations
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.2'
47
+ version: '0'
48
48
  type: :runtime
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.2'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: hanami-model
56
+ name: dry-inflector
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.2'
61
+ version: '0'
62
62
  type: :runtime
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: '1.2'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: i18n
70
+ name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
- type: :runtime
76
+ type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
@@ -81,49 +81,77 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: bundler
84
+ name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '1.16'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '1.16'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rake
98
+ name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '10.0'
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: '10.0'
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rspec
112
+ name: rubocop
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '3.0'
117
+ version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '3.0'
124
+ version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rubocop
126
+ name: appraisal
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pry
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: byebug
127
155
  requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
157
  - - ">="
@@ -143,11 +171,14 @@ executables: []
143
171
  extensions: []
144
172
  extra_rdoc_files: []
145
173
  files:
174
+ - ".byebug_history"
146
175
  - ".gitignore"
147
176
  - ".rspec"
148
177
  - ".rubocop.yml"
149
178
  - ".rubocop_todo.yml"
179
+ - ".tool-versions"
150
180
  - ".travis.yml"
181
+ - Appraisals
151
182
  - CODE_OF_CONDUCT.md
152
183
  - Gemfile
153
184
  - Gemfile.lock
@@ -155,16 +186,16 @@ files:
155
186
  - Rakefile
156
187
  - bin/console
157
188
  - bin/setup
189
+ - gemfiles/.bundle/config
190
+ - gemfiles/hanami_1.3.gemfile
191
+ - gemfiles/hanami_1.3.gemfile.lock
158
192
  - hanami-i18n.gemspec
159
193
  - lib/hanami/i18n.rb
160
- - lib/hanami/i18n/dry/validation/result.rb
161
- - lib/hanami/i18n/entity.rb
162
- - lib/hanami/i18n/form.rb
163
- - lib/hanami/i18n/helpers/form_helper/form_builder.rb
164
- - lib/hanami/i18n/validation.rb
194
+ - lib/hanami/i18n/helpers/form.rb
195
+ - lib/hanami/i18n/validations.rb
165
196
  - lib/hanami/i18n/version.rb
166
- - lib/hanami/i18n/view.rb
167
197
  - locale/ja.yml
198
+ - templates/locale.rb
168
199
  homepage: https://github.com/ippachi/hanami-i18n
169
200
  licenses: []
170
201
  metadata:
@@ -184,8 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
215
  - !ruby/object:Gem::Version
185
216
  version: '0'
186
217
  requirements: []
187
- rubyforge_project:
188
- rubygems_version: 2.7.6
218
+ rubygems_version: 3.0.3
189
219
  signing_key:
190
220
  specification_version: 4
191
221
  summary: i18n for hanami
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'dry/validation/result'
4
- require 'hanami/i18n/validation'
5
-
6
- module Dry
7
- module Validation
8
- class Result
9
- # prepend Hanami::I18n::Validation
10
- end
11
- end
12
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'i18n'
4
- require 'dry/inflector'
5
- require 'hanami/model'
6
-
7
- module Hanami
8
- class Entity
9
- # Translate entity name and attribute names.
10
- #
11
- # @param attribute [Symbol] attribute name you want translate.
12
- #
13
- # @return [String] translated entity name or attribute name.
14
- #
15
- # @example
16
- #
17
- # # en:
18
- # # model:
19
- # # entities:
20
- # # user: 'User'
21
- # # attributes:
22
- # # user:
23
- # # name: 'Name'
24
- #
25
- # User.t # => 'User'
26
- # User.t(:name) # => 'Name'
27
- #
28
- def self.t(attribute = nil)
29
- inflector = Dry::Inflector.new
30
- entity_name = inflector.singularize(inflector.tableize(name))
31
-
32
- if attribute
33
- ::I18n.t(attribute,
34
- scope: "model.attributes.#{entity_name}")
35
- else
36
- ::I18n.t(entity_name,
37
- scope: 'model.entities')
38
- end
39
- end
40
- end
41
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hanami::I18n
4
- module Form
5
- # Translate form label
6
- #
7
- # override Hanami::Helpers::FormHelper::FormBuilder#label
8
- def label(content, attributes = {})
9
- content = I18n.t(content,
10
- scope: "model.attributes.#{@name}",
11
- default: Hanami::Utils::String.capitalize(content))
12
- super(content, attributes)
13
- end
14
- end
15
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'hanami/helpers/form_helper/form_builder'
4
- require 'hanami/i18n/form.rb'
5
-
6
- module Hanami
7
- module Helpers
8
- module FormHelper
9
- class FormBuilder
10
- prepend Hanami::I18n::Form
11
- end
12
- end
13
- end
14
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'i18n'
4
-
5
- module Hanami::I18n
6
- module Validation
7
- def errors(options = {}.freeze)
8
- h = super(options)
9
- h.each_with_object({}) do |(k1, v1), hash1|
10
- hash1[k1] = v1.each_with_object({}) do |(k2, v2), hash2|
11
- hash2[I18n.t(k2,
12
- scope: "model.attributes.#{k1}",
13
- default: Hanami::Utils::String.capitalize(k2))] = v2[0]
14
- end
15
- end
16
- end
17
-
18
- def messages(options = {}.freeze)
19
- h = super(options)
20
- h.each_with_object({}) do |(k1, v1), hash1|
21
- hash1[k1] = v1.each_with_object({}) do |(k2, v2), hash2|
22
- hash2[I18n.t(k2,
23
- scope: "model.attributes.#{k1}",
24
- default: Hanami::Utils::String.capitalize(k2))] = v2[0]
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hanami::I18n
4
- module View
5
- # Translate specific word
6
- #
7
- # @param object_str [String] i18n string you want translate
8
- # @param options [Hash] i18n options
9
- #
10
- # @return [String] translated word
11
- #
12
- # @example
13
- # # apps/web/templates/users/index.html.erb
14
- # # en:
15
- # # users:
16
- # # index:
17
- # # title: hello
18
- #
19
- # <%= t('.title') %> # => 'hello'
20
- # <%= t('users.index.title') %> # => 'hello'
21
- #
22
- def t(object_str, options = {})
23
- if object_str[0] == '.'
24
- file_path = template.instance_variable_get(:@_template).file
25
-
26
- dir_structure = file_path.gsub(/\.html\..*/, '').split('/')
27
-
28
- index = dir_structure.index('templates')
29
- translation_path = dir_structure[index + 1..-1].join('.')
30
- options[:scope] = translation_path
31
- end
32
-
33
- I18n.t(object_str, options)
34
- end
35
- end
36
- end