hanami-i18n 0.1.1 → 0.1.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,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