hyper-i18n 0.99.6 → 1.0.alpha1
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 +4 -4
- data/Gemfile +2 -1
- data/Gemfile.lock +58 -39
- data/hyper-i18n.gemspec +8 -8
- data/lib/hyper-i18n/hyperstack/component.rb +13 -0
- data/lib/hyper-i18n/i18n.rb +3 -3
- data/lib/hyper-i18n/operations/localize.rb +1 -1
- data/lib/hyper-i18n/operations/translate.rb +1 -1
- data/lib/hyper-i18n/stores/i18n_store.rb +7 -3
- data/lib/hyper-i18n/version.rb +1 -1
- data/lib/hyper-i18n.rb +13 -15
- data/lib/{hyper-i18n → hyperstack/ext/i18n}/active_model/name.rb +1 -1
- data/lib/{hyper-i18n → hyperstack/ext/i18n}/active_record/class_methods.rb +1 -1
- data/lib/hyperstack/i18n/i18n.rb +12 -0
- data/lib/hyperstack/i18n/version.rb +5 -0
- data/lib/hyperstack/i18n.rb +13 -0
- data/lib/hyperstack/internal/i18n/helper_methods.rb +30 -0
- data/lib/hyperstack/internal/i18n/localize.rb +27 -0
- data/lib/hyperstack/internal/i18n/store.rb +14 -0
- data/lib/hyperstack/internal/i18n/translate.rb +20 -0
- data/lib/hyperstack/internal/i18n.rb +94 -0
- data/spec/hyper_i18n_spec.rb +3 -1
- data/spec/test_app/app/assets/javascripts/application.js +1 -1
- data/spec/test_app/config/initializers/{hyperloop.rb → hyperstack.rb} +1 -1
- data/spec/test_app/config/routes.rb +1 -1
- metadata +29 -27
- data/LICENSE.txt +0 -21
- data/README.md +0 -92
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/lib/hyper-i18n/helper_methods.rb +0 -26
- data/lib/hyper-i18n/hyperloop/component/mixin.rb +0 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 815d25223d341cbcf38f3ab25ac68597c68554739bb8e36d2e206ad82ed0eb04
|
|
4
|
+
data.tar.gz: 4e45db97954620b6d18b99a6384635a5a2d1a38004349a746d37bc138e27fcef
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 52565370c6593a96bfdf03ff2d652e3a6985deb996ce530e00a467db9227e5c52cb5df8eac3419d24a409bd245b69c892f41222d70c62fcdeb3efcd1532ca2a5
|
|
7
|
+
data.tar.gz: 39bb763c643d8e561686ed5119cb2d7a38f522626c99c6021a989ed9c4a6a2a00bcf2f5d0ebebe40567905ce4f0ddf2b6979c6774d383ff0877b9b76b3e05646
|
data/Gemfile
CHANGED
|
@@ -3,7 +3,8 @@ source "https://rubygems.org"
|
|
|
3
3
|
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
4
4
|
#gem "opal-jquery", git: "https://github.com/opal/opal-jquery.git", branch: "master"
|
|
5
5
|
gem 'hyper-spec', path: '../hyper-spec'
|
|
6
|
-
gem '
|
|
6
|
+
gem 'hyperstack-config', path: '../hyperstack-config'
|
|
7
|
+
gem 'hyper-state', path: '../hyper-state'
|
|
7
8
|
gem 'hyper-store', path: '../hyper-store'
|
|
8
9
|
gem 'hyper-component', path: '../hyper-component'
|
|
9
10
|
gem 'hyper-operation', path: '../hyper-operation'
|
data/Gemfile.lock
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ../hyper-component
|
|
3
3
|
specs:
|
|
4
|
-
hyper-component (0.
|
|
5
|
-
hyper-
|
|
6
|
-
|
|
7
|
-
libv8 (~> 6.
|
|
8
|
-
mini_racer (~> 0.
|
|
4
|
+
hyper-component (0.1)
|
|
5
|
+
hyper-state (= 0.1)
|
|
6
|
+
hyperstack-config (= 0.1)
|
|
7
|
+
libv8 (~> 6.3.0)
|
|
8
|
+
mini_racer (~> 0.1.15)
|
|
9
9
|
opal (>= 0.11.0, < 0.12.0)
|
|
10
10
|
opal-activesupport (~> 0.3.1)
|
|
11
11
|
react-rails (>= 2.4.0, < 2.5.0)
|
|
@@ -13,30 +13,31 @@ PATH
|
|
|
13
13
|
PATH
|
|
14
14
|
remote: ../hyper-model
|
|
15
15
|
specs:
|
|
16
|
-
hyper-model (0.
|
|
16
|
+
hyper-model (0.1)
|
|
17
17
|
activemodel
|
|
18
18
|
activerecord (>= 4.0.0)
|
|
19
|
-
hyper-component (= 0.
|
|
20
|
-
hyper-operation (= 0.
|
|
19
|
+
hyper-component (= 0.1)
|
|
20
|
+
hyper-operation (= 0.1)
|
|
21
|
+
hyper-store (= 0.1)
|
|
21
22
|
|
|
22
23
|
PATH
|
|
23
24
|
remote: ../hyper-operation
|
|
24
25
|
specs:
|
|
25
|
-
hyper-operation (0.
|
|
26
|
+
hyper-operation (0.1)
|
|
26
27
|
activerecord (>= 4.0.0)
|
|
27
|
-
hyper-component (= 0.
|
|
28
|
+
hyper-component (= 0.1)
|
|
28
29
|
mutations
|
|
29
30
|
opal-activesupport (~> 0.3.1)
|
|
30
31
|
|
|
31
32
|
PATH
|
|
32
33
|
remote: ../hyper-spec
|
|
33
34
|
specs:
|
|
34
|
-
hyper-spec (0.
|
|
35
|
+
hyper-spec (0.1)
|
|
35
36
|
capybara
|
|
36
37
|
chromedriver-helper (= 1.2.0)
|
|
37
|
-
libv8 (~> 6.
|
|
38
|
+
libv8 (~> 6.3.0)
|
|
38
39
|
method_source
|
|
39
|
-
mini_racer (~> 0.
|
|
40
|
+
mini_racer (~> 0.1.15)
|
|
40
41
|
opal (>= 0.11.0, < 0.12.0)
|
|
41
42
|
parser (>= 2.3.3.1)
|
|
42
43
|
pry
|
|
@@ -44,31 +45,41 @@ PATH
|
|
|
44
45
|
selenium-webdriver
|
|
45
46
|
timecop (~> 0.8.1)
|
|
46
47
|
uglifier
|
|
47
|
-
unparser
|
|
48
|
+
unparser
|
|
48
49
|
webdrivers
|
|
49
50
|
|
|
51
|
+
PATH
|
|
52
|
+
remote: ../hyper-state
|
|
53
|
+
specs:
|
|
54
|
+
hyper-state (0.1)
|
|
55
|
+
hyperstack-config (= 0.1)
|
|
56
|
+
opal (>= 0.11.0, < 0.12.0)
|
|
57
|
+
|
|
50
58
|
PATH
|
|
51
59
|
remote: ../hyper-store
|
|
52
60
|
specs:
|
|
53
|
-
hyper-store (0.
|
|
54
|
-
|
|
61
|
+
hyper-store (0.1)
|
|
62
|
+
hyper-state (= 0.1)
|
|
63
|
+
hyperstack-config (= 0.1)
|
|
55
64
|
opal (>= 0.11.0, < 0.12.0)
|
|
56
65
|
|
|
57
66
|
PATH
|
|
58
|
-
remote: ../
|
|
67
|
+
remote: ../hyperstack-config
|
|
59
68
|
specs:
|
|
60
|
-
|
|
61
|
-
libv8 (~> 6.
|
|
62
|
-
|
|
69
|
+
hyperstack-config (0.1)
|
|
70
|
+
libv8 (~> 6.3.0)
|
|
71
|
+
listen (~> 3.0)
|
|
72
|
+
mini_racer (~> 0.1.15)
|
|
63
73
|
opal (>= 0.11.0, < 0.12.0)
|
|
64
74
|
opal-browser (~> 0.2.0)
|
|
65
75
|
uglifier
|
|
76
|
+
websocket
|
|
66
77
|
|
|
67
78
|
PATH
|
|
68
79
|
remote: .
|
|
69
80
|
specs:
|
|
70
|
-
hyper-i18n (0.
|
|
71
|
-
hyper-operation (= 0.
|
|
81
|
+
hyper-i18n (0.1.0)
|
|
82
|
+
hyper-operation (= 0.1.0)
|
|
72
83
|
i18n
|
|
73
84
|
|
|
74
85
|
GEM
|
|
@@ -119,7 +130,7 @@ GEM
|
|
|
119
130
|
adamantium (0.2.0)
|
|
120
131
|
ice_nine (~> 0.11.0)
|
|
121
132
|
memoizable (~> 0.4.0)
|
|
122
|
-
addressable (2.
|
|
133
|
+
addressable (2.5.2)
|
|
123
134
|
public_suffix (>= 2.0.2, < 4.0)
|
|
124
135
|
archive-zip (0.11.0)
|
|
125
136
|
io-like (~> 0.3.0)
|
|
@@ -130,7 +141,7 @@ GEM
|
|
|
130
141
|
babel-source (>= 4.0, < 6)
|
|
131
142
|
execjs (~> 2.0)
|
|
132
143
|
builder (3.2.3)
|
|
133
|
-
capybara (3.
|
|
144
|
+
capybara (3.10.1)
|
|
134
145
|
addressable
|
|
135
146
|
mini_mime (>= 0.1.3)
|
|
136
147
|
nokogiri (~> 1.8)
|
|
@@ -154,7 +165,7 @@ GEM
|
|
|
154
165
|
equalizer (0.0.11)
|
|
155
166
|
erubi (1.7.1)
|
|
156
167
|
execjs (2.7.0)
|
|
157
|
-
ffi (1.
|
|
168
|
+
ffi (1.9.25)
|
|
158
169
|
globalid (0.4.1)
|
|
159
170
|
activesupport (>= 4.2.0)
|
|
160
171
|
hike (1.2.3)
|
|
@@ -166,7 +177,11 @@ GEM
|
|
|
166
177
|
rails-dom-testing (>= 1, < 3)
|
|
167
178
|
railties (>= 4.2.0)
|
|
168
179
|
thor (>= 0.14, < 2.0)
|
|
169
|
-
libv8 (6.
|
|
180
|
+
libv8 (6.3.292.48.1)
|
|
181
|
+
listen (3.1.5)
|
|
182
|
+
rb-fsevent (~> 0.9, >= 0.9.4)
|
|
183
|
+
rb-inotify (~> 0.9, >= 0.9.7)
|
|
184
|
+
ruby_dep (~> 1.2)
|
|
170
185
|
loofah (2.2.2)
|
|
171
186
|
crass (~> 1.0.2)
|
|
172
187
|
nokogiri (>= 1.5.9)
|
|
@@ -180,12 +195,11 @@ GEM
|
|
|
180
195
|
mimemagic (0.3.2)
|
|
181
196
|
mini_mime (1.0.1)
|
|
182
197
|
mini_portile2 (2.3.0)
|
|
183
|
-
mini_racer (0.
|
|
184
|
-
libv8 (
|
|
198
|
+
mini_racer (0.1.15)
|
|
199
|
+
libv8 (~> 6.3)
|
|
185
200
|
minitest (5.11.3)
|
|
186
|
-
mutations (0.
|
|
201
|
+
mutations (0.8.3)
|
|
187
202
|
activesupport
|
|
188
|
-
net_http_ssl_fix (0.0.10)
|
|
189
203
|
nio4r (2.3.1)
|
|
190
204
|
nokogiri (1.8.4)
|
|
191
205
|
mini_portile2 (~> 2.3.0)
|
|
@@ -254,13 +268,16 @@ GEM
|
|
|
254
268
|
rainbow (2.2.2)
|
|
255
269
|
rake
|
|
256
270
|
rake (10.5.0)
|
|
271
|
+
rb-fsevent (0.10.3)
|
|
272
|
+
rb-inotify (0.9.10)
|
|
273
|
+
ffi (>= 0.5.0, < 2)
|
|
257
274
|
react-rails (2.4.7)
|
|
258
275
|
babel-transpiler (>= 0.7.0)
|
|
259
276
|
connection_pool
|
|
260
277
|
execjs
|
|
261
278
|
railties (>= 3.2)
|
|
262
279
|
tilt
|
|
263
|
-
regexp_parser (1.
|
|
280
|
+
regexp_parser (1.2.0)
|
|
264
281
|
rspec (3.8.0)
|
|
265
282
|
rspec-core (~> 3.8.0)
|
|
266
283
|
rspec-expectations (~> 3.8.0)
|
|
@@ -273,7 +290,7 @@ GEM
|
|
|
273
290
|
rspec-mocks (3.8.0)
|
|
274
291
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
275
292
|
rspec-support (~> 3.8.0)
|
|
276
|
-
rspec-rails (3.8.
|
|
293
|
+
rspec-rails (3.8.1)
|
|
277
294
|
actionpack (>= 3.0)
|
|
278
295
|
activesupport (>= 3.0)
|
|
279
296
|
railties (>= 3.0)
|
|
@@ -290,6 +307,7 @@ GEM
|
|
|
290
307
|
ruby-progressbar (~> 1.7)
|
|
291
308
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
292
309
|
ruby-progressbar (1.10.0)
|
|
310
|
+
ruby_dep (1.5.0)
|
|
293
311
|
rubyzip (1.2.2)
|
|
294
312
|
selenium-webdriver (3.141.0)
|
|
295
313
|
childprocess (~> 0.5)
|
|
@@ -309,10 +327,10 @@ GEM
|
|
|
309
327
|
timecop (0.8.1)
|
|
310
328
|
tzinfo (1.2.5)
|
|
311
329
|
thread_safe (~> 0.1)
|
|
312
|
-
uglifier (4.1.
|
|
330
|
+
uglifier (4.1.19)
|
|
313
331
|
execjs (>= 0.3.0, < 3)
|
|
314
332
|
unicode-display_width (1.4.0)
|
|
315
|
-
unparser (0.
|
|
333
|
+
unparser (0.2.8)
|
|
316
334
|
abstract_type (~> 0.0.7)
|
|
317
335
|
adamantium (~> 0.2.0)
|
|
318
336
|
concord (~> 0.1.5)
|
|
@@ -320,11 +338,11 @@ GEM
|
|
|
320
338
|
equalizer (~> 0.0.9)
|
|
321
339
|
parser (>= 2.3.1.2, < 2.6)
|
|
322
340
|
procto (~> 0.0.2)
|
|
323
|
-
webdrivers (3.
|
|
324
|
-
net_http_ssl_fix
|
|
341
|
+
webdrivers (3.4.3)
|
|
325
342
|
nokogiri (~> 1.6)
|
|
326
343
|
rubyzip (~> 1.0)
|
|
327
344
|
selenium-webdriver (~> 3.0)
|
|
345
|
+
websocket (1.2.8)
|
|
328
346
|
websocket-driver (0.7.0)
|
|
329
347
|
websocket-extensions (>= 0.1.0)
|
|
330
348
|
websocket-extensions (0.1.3)
|
|
@@ -335,15 +353,16 @@ PLATFORMS
|
|
|
335
353
|
ruby
|
|
336
354
|
|
|
337
355
|
DEPENDENCIES
|
|
338
|
-
bundler (~> 1.16)
|
|
356
|
+
bundler (~> 1.16.0)
|
|
339
357
|
chromedriver-helper
|
|
340
358
|
hyper-component!
|
|
341
359
|
hyper-i18n!
|
|
342
360
|
hyper-model!
|
|
343
361
|
hyper-operation!
|
|
344
362
|
hyper-spec!
|
|
363
|
+
hyper-state!
|
|
345
364
|
hyper-store!
|
|
346
|
-
|
|
365
|
+
hyperstack-config!
|
|
347
366
|
opal-rails (~> 0.9.4)
|
|
348
367
|
pry
|
|
349
368
|
puma
|
|
@@ -353,4 +372,4 @@ DEPENDENCIES
|
|
|
353
372
|
sqlite3
|
|
354
373
|
|
|
355
374
|
BUNDLED WITH
|
|
356
|
-
1.
|
|
375
|
+
1.16.0
|
data/hyper-i18n.gemspec
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
lib = File.expand_path('../lib', __FILE__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
|
-
require '
|
|
5
|
+
require 'hyperstack/i18n/version'
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |spec|
|
|
8
8
|
spec.name = 'hyper-i18n'
|
|
9
|
-
spec.version =
|
|
9
|
+
spec.version = Hyperstack::I18n::VERSION
|
|
10
10
|
spec.authors = ['adamcreekroad']
|
|
11
11
|
spec.email = ['adamgeorge.31@gmail.com']
|
|
12
12
|
|
|
13
|
-
spec.summary = 'HyperI18n seamlessly brings Rails I18n into your
|
|
14
|
-
spec.homepage = 'https://www.github.com/ruby-
|
|
13
|
+
spec.summary = 'HyperI18n seamlessly brings Rails I18n into your Hyperstack application.'
|
|
14
|
+
spec.homepage = 'https://www.github.com/ruby-hyperstack/hyper-i18n'
|
|
15
15
|
spec.license = 'MIT'
|
|
16
16
|
|
|
17
17
|
spec.files = `git ls-files`.split("\n")
|
|
@@ -19,13 +19,13 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
20
20
|
spec.require_paths = ['lib']
|
|
21
21
|
|
|
22
|
-
spec.add_dependency 'hyper-operation',
|
|
22
|
+
spec.add_dependency 'hyper-operation', Hyperstack::I18n::VERSION
|
|
23
23
|
spec.add_dependency 'i18n'
|
|
24
24
|
|
|
25
|
-
spec.add_development_dependency 'bundler', '~> 1.16'
|
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.16.0'
|
|
26
26
|
spec.add_development_dependency 'chromedriver-helper'
|
|
27
|
-
spec.add_development_dependency 'hyper-model',
|
|
28
|
-
spec.add_development_dependency 'hyper-spec',
|
|
27
|
+
spec.add_development_dependency 'hyper-model', Hyperstack::I18n::VERSION
|
|
28
|
+
spec.add_development_dependency 'hyper-spec', Hyperstack::I18n::VERSION
|
|
29
29
|
spec.add_development_dependency 'opal-rails', '~> 0.9.4'
|
|
30
30
|
spec.add_development_dependency 'pry'
|
|
31
31
|
spec.add_development_dependency 'puma'
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Hyperstack
|
|
2
|
+
module Component
|
|
3
|
+
def t(attribute, opts = {})
|
|
4
|
+
namespace = self.class.name.underscore.gsub(%r{::|/}, '.')
|
|
5
|
+
|
|
6
|
+
HyperI18n::I18n.t("#{namespace}.#{attribute}", opts)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def l(time, format = :default, opts = {})
|
|
10
|
+
HyperI18n::I18n.l(time, format, opts)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
data/lib/hyper-i18n/i18n.rb
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
module HyperI18n
|
|
3
3
|
class I18n
|
|
4
4
|
extend HelperMethods
|
|
5
|
-
include
|
|
5
|
+
include Hyperstack::Component::IsomorphicHelpers
|
|
6
6
|
|
|
7
7
|
before_first_mount do
|
|
8
8
|
if RUBY_ENGINE != 'opal'
|
|
9
9
|
@server_data_cache = { t: {}, l: {} }
|
|
10
10
|
else
|
|
11
11
|
unless on_opal_server? || no_initial_data?
|
|
12
|
-
I18nStore.
|
|
13
|
-
I18nStore.
|
|
12
|
+
I18nStore.translations = JSON.from_object(`window.HyperI18nInitialData.t`)
|
|
13
|
+
I18nStore.localizations = JSON.from_object(`window.HyperI18nInitialData.l`)
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
end
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
module HyperI18n
|
|
2
|
-
class I18nStore
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
class I18nStore
|
|
3
|
+
include Hyperstack::State::Observable
|
|
4
|
+
class << self
|
|
5
|
+
observer(:translations) { @translations ||= {} }
|
|
6
|
+
observer(:localizations) { @localizations ||= {} }
|
|
7
|
+
state_writer :translations, :localizations
|
|
8
|
+
end
|
|
5
9
|
end
|
|
6
10
|
end
|
data/lib/hyper-i18n/version.rb
CHANGED
data/lib/hyper-i18n.rb
CHANGED
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
require '
|
|
2
|
-
|
|
1
|
+
require 'hyperstack-config'
|
|
2
|
+
Hyperstack.import 'hyper-i18n'
|
|
3
3
|
|
|
4
4
|
require 'hyper-component'
|
|
5
5
|
require 'hyper-operation'
|
|
6
|
+
require 'hyper-state'
|
|
6
7
|
|
|
7
|
-
require '
|
|
8
|
-
require '
|
|
9
|
-
require '
|
|
10
|
-
require '
|
|
8
|
+
require 'hyperstack/internal/i18n/helper_methods'
|
|
9
|
+
require 'hyperstack/internal/i18n/localize'
|
|
10
|
+
require 'hyperstack/internal/i18n/translate'
|
|
11
|
+
require 'hyperstack/internal/i18n'
|
|
12
|
+
require 'hyperstack/i18n/version'
|
|
11
13
|
|
|
12
14
|
if RUBY_ENGINE == 'opal'
|
|
13
|
-
require '
|
|
14
|
-
|
|
15
|
-
require '
|
|
16
|
-
require '
|
|
17
|
-
require '
|
|
18
|
-
|
|
19
|
-
require 'hyper-i18n/stores/i18n_store'
|
|
15
|
+
require 'hyperstack/ext/i18n/active_model/name'
|
|
16
|
+
require 'hyperstack/ext/i18n/active_record/class_methods'
|
|
17
|
+
require 'hyperstack/internal/i18n/store'
|
|
18
|
+
require 'hyperstack/i18n'
|
|
19
|
+
require 'hyperstack/i18n/i18n'
|
|
20
20
|
else
|
|
21
21
|
require 'opal'
|
|
22
22
|
|
|
23
|
-
require 'hyper-i18n/version'
|
|
24
|
-
|
|
25
23
|
Opal.append_path File.expand_path('../', __FILE__).untaint
|
|
26
24
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Hyperstack
|
|
2
|
+
module I18n
|
|
3
|
+
def t(attribute, opts = {})
|
|
4
|
+
namespace = self.class.name.underscore.gsub(%r{::|/}, '.')
|
|
5
|
+
|
|
6
|
+
Hyperstack::Internal::I18n.t("#{namespace}.#{attribute}", opts)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def l(time, format = :default, opts = {})
|
|
10
|
+
Hyperstack::Internal::I18n.l(time, format, opts)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Hyperstack
|
|
2
|
+
module Internal
|
|
3
|
+
class I18n
|
|
4
|
+
module HelperMethods
|
|
5
|
+
def formatted_date_or_time(date_or_time)
|
|
6
|
+
# If the date_or_time parameter is a String, we must parse it to the correct format.
|
|
7
|
+
|
|
8
|
+
return date_or_time unless date_or_time.is_a?(String)
|
|
9
|
+
|
|
10
|
+
if date_or_time =~ /^\d+\W\d+\W\d+T?\s?\d+:\d+:\d+/
|
|
11
|
+
Time.parse(date_or_time)
|
|
12
|
+
else
|
|
13
|
+
Date.parse(date_or_time)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def formatted_format(format)
|
|
18
|
+
# If a string is passed in it will use that as the pattern for formatting, ex:
|
|
19
|
+
#
|
|
20
|
+
# I18n.l(Time.now, format: "%b %d, %Y")
|
|
21
|
+
# => "Aug 20, 2017"
|
|
22
|
+
#
|
|
23
|
+
# If a symbol is passed in it will find that definition from the locales.
|
|
24
|
+
|
|
25
|
+
format =~ /%/ ? format : :"#{format}"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Hyperstack
|
|
2
|
+
module Internal
|
|
3
|
+
class I18n
|
|
4
|
+
class Localize < Hyperstack::ServerOp
|
|
5
|
+
include HelperMethods
|
|
6
|
+
|
|
7
|
+
param :acting_user, nils: true
|
|
8
|
+
param :date_or_time
|
|
9
|
+
param :format
|
|
10
|
+
param :opts
|
|
11
|
+
param :localization, default: nil
|
|
12
|
+
|
|
13
|
+
def date_or_time
|
|
14
|
+
@date_or_time ||= formatted_date_or_time(params.date_or_time)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def opts
|
|
18
|
+
@opts ||= params.opts.with_indifferent_access.merge(format: formatted_format(params.format))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
step do
|
|
22
|
+
params.localization = ::I18n.l(date_or_time, opts)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Hyperstack
|
|
2
|
+
module Internal
|
|
3
|
+
class I18n
|
|
4
|
+
class Store
|
|
5
|
+
include Hyperstack::State::Observable
|
|
6
|
+
class << self
|
|
7
|
+
observer(:translations) { @translations ||= {} }
|
|
8
|
+
observer(:localizations) { @localizations ||= {} }
|
|
9
|
+
state_writer :translations, :localizations
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Hyperstack
|
|
2
|
+
module Internal
|
|
3
|
+
class I18n
|
|
4
|
+
class Translate < Hyperstack::ServerOp
|
|
5
|
+
param :acting_user, nils: true
|
|
6
|
+
param :attribute
|
|
7
|
+
param :opts
|
|
8
|
+
param :translation, default: nil
|
|
9
|
+
|
|
10
|
+
def opts
|
|
11
|
+
params.opts.with_indifferent_access
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
step do
|
|
15
|
+
params.translation = ::I18n.t(params.attribute, opts)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
module Hyperstack
|
|
2
|
+
module Internal
|
|
3
|
+
class I18n
|
|
4
|
+
extend HelperMethods
|
|
5
|
+
include Hyperstack::Component::IsomorphicHelpers
|
|
6
|
+
|
|
7
|
+
before_first_mount do
|
|
8
|
+
if RUBY_ENGINE != 'opal'
|
|
9
|
+
@server_data_cache = { t: {}, l: {} }
|
|
10
|
+
else
|
|
11
|
+
unless on_opal_server? || no_initial_data?
|
|
12
|
+
Store.translations = JSON.from_object(`window.HyperI18nInitialData.t`)
|
|
13
|
+
Store.localizations = JSON.from_object(`window.HyperI18nInitialData.l`)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
isomorphic_method(:t) do |f, attribute, opts = {}|
|
|
19
|
+
f.when_on_client do
|
|
20
|
+
return Store.translations[attribute] if Store.translations[attribute]
|
|
21
|
+
|
|
22
|
+
Translate
|
|
23
|
+
.run(attribute: attribute, opts: opts)
|
|
24
|
+
.then do |translation|
|
|
25
|
+
Store.translations[attribute] = translation
|
|
26
|
+
Store.mutate.translations(Store.translations)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
opts[:default] || ''
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
f.when_on_server do
|
|
33
|
+
@server_data_cache[:t][attribute] = ::I18n.t(attribute, opts.with_indifferent_access)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
isomorphic_method(:l) do |f, date_or_time, format = :default, opts = {}|
|
|
38
|
+
format = formatted_format(format)
|
|
39
|
+
date_or_time = formatted_date_or_time(date_or_time)
|
|
40
|
+
|
|
41
|
+
f.when_on_client do
|
|
42
|
+
if Store.localizations[date_or_time.to_s] &&
|
|
43
|
+
Store.localizations[date_or_time.to_s][format]
|
|
44
|
+
return Store.localizations[date_or_time.to_s][format]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
Localize
|
|
48
|
+
.run(date_or_time: date_or_time, format: format, opts: {})
|
|
49
|
+
.then do |localization|
|
|
50
|
+
Store.localizations[date_or_time.to_s] ||= {}
|
|
51
|
+
Store.localizations[date_or_time.to_s][format] = localization
|
|
52
|
+
|
|
53
|
+
Store.mutate.localizations(Store.localizations)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
opts[:default] || ''
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
f.when_on_server do
|
|
60
|
+
@server_data_cache[:l][date_or_time.to_s] ||= {}
|
|
61
|
+
|
|
62
|
+
@server_data_cache[:l][date_or_time.to_s][format] =
|
|
63
|
+
::I18n.l(date_or_time, opts.with_indifferent_access.merge(format: format))
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
if RUBY_ENGINE != 'opal'
|
|
68
|
+
prerender_footer do
|
|
69
|
+
"<script type=\"text/javascript\">\n"\
|
|
70
|
+
"if (typeof window.HyperI18nInitialData === 'undefined') {\n"\
|
|
71
|
+
" window.HyperI18nInitialData = #{initial_data_json};\n"\
|
|
72
|
+
"}\n"\
|
|
73
|
+
"</script>\n"
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
class << self
|
|
78
|
+
def no_initial_data?
|
|
79
|
+
`typeof window.HyperI18nInitialData === 'undefined'`
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def initial_data_json
|
|
83
|
+
if @server_data_cache
|
|
84
|
+
@server_data_cache.as_json.to_json
|
|
85
|
+
else
|
|
86
|
+
{ t: {}, l: {} }.to_json
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# we now allow directly using I18n on client (as on server)
|
data/spec/hyper_i18n_spec.rb
CHANGED
|
@@ -6,7 +6,9 @@ describe 'I18n client methods', js: true do
|
|
|
6
6
|
class MyModel < ActiveRecord::Base
|
|
7
7
|
end
|
|
8
8
|
module Components
|
|
9
|
-
class TestComponent
|
|
9
|
+
class TestComponent
|
|
10
|
+
include Hyperstack::Component
|
|
11
|
+
include Hyperstack::I18n
|
|
10
12
|
render(DIV) do
|
|
11
13
|
DIV(id: :tp1) { t(:the_key) }
|
|
12
14
|
DIV(id: :tp2) { I18n.t(:hello) }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
//= require '
|
|
1
|
+
//= require 'hyperstack-loader'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hyper-i18n
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.alpha1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- adamcreekroad
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-11-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: hyper-operation
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - '='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.
|
|
19
|
+
version: 1.0.alpha1
|
|
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: 0.
|
|
26
|
+
version: 1.0.alpha1
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: i18n
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
47
|
+
version: 1.16.0
|
|
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:
|
|
54
|
+
version: 1.16.0
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: chromedriver-helper
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -72,28 +72,28 @@ dependencies:
|
|
|
72
72
|
requirements:
|
|
73
73
|
- - '='
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0.
|
|
75
|
+
version: 1.0.alpha1
|
|
76
76
|
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - '='
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 0.
|
|
82
|
+
version: 1.0.alpha1
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: hyper-spec
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - '='
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 0.
|
|
89
|
+
version: 1.0.alpha1
|
|
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: 0.
|
|
96
|
+
version: 1.0.alpha1
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: opal-rails
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -195,9 +195,7 @@ dependencies:
|
|
|
195
195
|
description:
|
|
196
196
|
email:
|
|
197
197
|
- adamgeorge.31@gmail.com
|
|
198
|
-
executables:
|
|
199
|
-
- console
|
|
200
|
-
- setup
|
|
198
|
+
executables: []
|
|
201
199
|
extensions: []
|
|
202
200
|
extra_rdoc_files: []
|
|
203
201
|
files:
|
|
@@ -206,22 +204,25 @@ files:
|
|
|
206
204
|
- ".travis.yml"
|
|
207
205
|
- Gemfile
|
|
208
206
|
- Gemfile.lock
|
|
209
|
-
- LICENSE.txt
|
|
210
|
-
- README.md
|
|
211
207
|
- Rakefile
|
|
212
|
-
- bin/console
|
|
213
|
-
- bin/setup
|
|
214
208
|
- hyper-i18n.gemspec
|
|
215
209
|
- lib/hyper-i18n.rb
|
|
216
|
-
- lib/hyper-i18n/
|
|
217
|
-
- lib/hyper-i18n/active_record/class_methods.rb
|
|
218
|
-
- lib/hyper-i18n/helper_methods.rb
|
|
219
|
-
- lib/hyper-i18n/hyperloop/component/mixin.rb
|
|
210
|
+
- lib/hyper-i18n/hyperstack/component.rb
|
|
220
211
|
- lib/hyper-i18n/i18n.rb
|
|
221
212
|
- lib/hyper-i18n/operations/localize.rb
|
|
222
213
|
- lib/hyper-i18n/operations/translate.rb
|
|
223
214
|
- lib/hyper-i18n/stores/i18n_store.rb
|
|
224
215
|
- lib/hyper-i18n/version.rb
|
|
216
|
+
- lib/hyperstack/ext/i18n/active_model/name.rb
|
|
217
|
+
- lib/hyperstack/ext/i18n/active_record/class_methods.rb
|
|
218
|
+
- lib/hyperstack/i18n.rb
|
|
219
|
+
- lib/hyperstack/i18n/i18n.rb
|
|
220
|
+
- lib/hyperstack/i18n/version.rb
|
|
221
|
+
- lib/hyperstack/internal/i18n.rb
|
|
222
|
+
- lib/hyperstack/internal/i18n/helper_methods.rb
|
|
223
|
+
- lib/hyperstack/internal/i18n/localize.rb
|
|
224
|
+
- lib/hyperstack/internal/i18n/store.rb
|
|
225
|
+
- lib/hyperstack/internal/i18n/translate.rb
|
|
225
226
|
- spec/hyper_i18n_spec.rb
|
|
226
227
|
- spec/spec_helper.rb
|
|
227
228
|
- spec/test_app/.gitignore
|
|
@@ -264,7 +265,7 @@ files:
|
|
|
264
265
|
- spec/test_app/config/initializers/backtrace_silencers.rb
|
|
265
266
|
- spec/test_app/config/initializers/cookies_serializer.rb
|
|
266
267
|
- spec/test_app/config/initializers/filter_parameter_logging.rb
|
|
267
|
-
- spec/test_app/config/initializers/
|
|
268
|
+
- spec/test_app/config/initializers/hyperstack.rb
|
|
268
269
|
- spec/test_app/config/initializers/inflections.rb
|
|
269
270
|
- spec/test_app/config/initializers/mime_types.rb
|
|
270
271
|
- spec/test_app/config/initializers/new_framework_defaults.rb
|
|
@@ -289,7 +290,7 @@ files:
|
|
|
289
290
|
- spec/test_app/tmp/.keep
|
|
290
291
|
- spec/test_app/vendor/assets/javascripts/.keep
|
|
291
292
|
- spec/test_app/vendor/assets/stylesheets/.keep
|
|
292
|
-
homepage: https://www.github.com/ruby-
|
|
293
|
+
homepage: https://www.github.com/ruby-hyperstack/hyper-i18n
|
|
293
294
|
licenses:
|
|
294
295
|
- MIT
|
|
295
296
|
metadata: {}
|
|
@@ -304,12 +305,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
304
305
|
version: '0'
|
|
305
306
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
306
307
|
requirements:
|
|
307
|
-
- - "
|
|
308
|
+
- - ">"
|
|
308
309
|
- !ruby/object:Gem::Version
|
|
309
|
-
version:
|
|
310
|
+
version: 1.3.1
|
|
310
311
|
requirements: []
|
|
311
|
-
|
|
312
|
+
rubyforge_project:
|
|
313
|
+
rubygems_version: 2.7.8
|
|
312
314
|
signing_key:
|
|
313
315
|
specification_version: 4
|
|
314
|
-
summary: HyperI18n seamlessly brings Rails I18n into your
|
|
316
|
+
summary: HyperI18n seamlessly brings Rails I18n into your Hyperstack application.
|
|
315
317
|
test_files: []
|
data/LICENSE.txt
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2017 adamcreekroad
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
all copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
THE SOFTWARE.
|
data/README.md
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# HyperI18n
|
|
2
|
-
[](https://travis-ci.org/ruby-hyperloop/hyper-i18n)
|
|
3
|
-
[](https://badge.fury.io/rb/hyper-i18n)
|
|
4
|
-
|
|
5
|
-
## HyperI18n gem
|
|
6
|
-
|
|
7
|
-
HyperI18n seamlessly brings Rails I18n into your Hyperloop application.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
## Documentation and Help
|
|
11
|
-
|
|
12
|
-
+ Please see the [ruby-hyperloop.org](http://ruby-hyperloop.org/) website for documentation.
|
|
13
|
-
+ Join the Hyperloop [gitter.io](https://gitter.im/ruby-hyperloop/chat) chat for help and support.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
## Installation and Setup
|
|
17
|
-
|
|
18
|
-
1. Add `gem 'hyper-i18n', git: 'https://github.com/ruby-hyperloop/hyper-i18n.git'` to your `Gemfile`
|
|
19
|
-
2. Install the Gem: `bundle install`
|
|
20
|
-
3. Add `require 'hyper-i18n'` to your components manifest
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
## Note!
|
|
24
|
-
|
|
25
|
-
This gem is in it's very early stages, and only a handful of the API has been implemented.
|
|
26
|
-
Contributions are very welcome!
|
|
27
|
-
|
|
28
|
-
### Usage
|
|
29
|
-
|
|
30
|
-
Hyper-I18n brings in the standard ActiveSupport API.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
#### ActiveRecord Models
|
|
34
|
-
|
|
35
|
-
The methods `Model.model_name.human` and `Model.human_attribute_name` are available:
|
|
36
|
-
|
|
37
|
-
```yaml
|
|
38
|
-
# config/locales/models/en.yml
|
|
39
|
-
en:
|
|
40
|
-
activerecord:
|
|
41
|
-
models:
|
|
42
|
-
user: 'Customer'
|
|
43
|
-
attributes:
|
|
44
|
-
name: 'Name'
|
|
45
|
-
```
|
|
46
|
-
```ruby
|
|
47
|
-
User.model_name.human
|
|
48
|
-
# 'Customer'
|
|
49
|
-
|
|
50
|
-
User.human_attribute_name(:name)
|
|
51
|
-
# 'Name'
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
#### Views
|
|
55
|
-
|
|
56
|
-
Hyper-I18n makes available the method `t` to components, just as ActiveSupport does for views.
|
|
57
|
-
It also implements the same lazy-loading pattern,
|
|
58
|
-
so if you name space your locale file the same as your components, it will just work:
|
|
59
|
-
|
|
60
|
-
```yaml
|
|
61
|
-
# config/locales/views/en.yml
|
|
62
|
-
en:
|
|
63
|
-
users:
|
|
64
|
-
show:
|
|
65
|
-
title: 'Customer View'
|
|
66
|
-
```
|
|
67
|
-
```ruby
|
|
68
|
-
module Users
|
|
69
|
-
class Show < Hyperloop::Component
|
|
70
|
-
render do
|
|
71
|
-
H1 { t(:title) }
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
# <h1>Customer View</h1>
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Server Rendering
|
|
80
|
-
|
|
81
|
-
HyperI18n is fully compatible with server rendering!
|
|
82
|
-
All translations are also sent to the client, so as to bypass fetching/rendering again on the client.
|
|
83
|
-
|
|
84
|
-
## Contributing
|
|
85
|
-
|
|
86
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/ruby-hyperloop/hyper-i18n.
|
|
87
|
-
This project is intended to be a safe, welcoming space for collaboration,
|
|
88
|
-
and contributors are expected to adhere to the [Code of Conduct](https://github.com/ruby-hyperloop/hyper-operation/blob/master/CODE_OF_CONDUCT.md) code of conduct.
|
|
89
|
-
|
|
90
|
-
## License
|
|
91
|
-
|
|
92
|
-
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/bin/console
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require "bundler/setup"
|
|
4
|
-
require "hyper/i18n"
|
|
5
|
-
|
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
-
|
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
-
# require "pry"
|
|
11
|
-
# Pry.start
|
|
12
|
-
|
|
13
|
-
require "irb"
|
|
14
|
-
IRB.start(__FILE__)
|
data/bin/setup
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module HyperI18n
|
|
2
|
-
module HelperMethods
|
|
3
|
-
def formatted_date_or_time(date_or_time)
|
|
4
|
-
# If the date_or_time parameter is a String, we must parse it to the correct format.
|
|
5
|
-
|
|
6
|
-
return date_or_time unless date_or_time.is_a?(String)
|
|
7
|
-
|
|
8
|
-
if date_or_time =~ /^\d+\W\d+\W\d+T?\s?\d+:\d+:\d+/
|
|
9
|
-
Time.parse(date_or_time)
|
|
10
|
-
else
|
|
11
|
-
Date.parse(date_or_time)
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def formatted_format(format)
|
|
16
|
-
# If a string is passed in it will use that as the pattern for formatting, ex:
|
|
17
|
-
#
|
|
18
|
-
# I18n.l(Time.now, format: "%b %d, %Y")
|
|
19
|
-
# => "Aug 20, 2017"
|
|
20
|
-
#
|
|
21
|
-
# If a symbol is passed in it will find that definition from the locales.
|
|
22
|
-
|
|
23
|
-
format =~ /%/ ? format : :"#{format}"
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
module Hyperloop
|
|
2
|
-
class Component
|
|
3
|
-
module Mixin
|
|
4
|
-
def t(attribute, opts = {})
|
|
5
|
-
namespace = self.class.name.underscore.gsub(%r{::|/}, '.')
|
|
6
|
-
|
|
7
|
-
HyperI18n::I18n.t("#{namespace}.#{attribute}", opts)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def l(time, format = :default, opts = {})
|
|
11
|
-
HyperI18n::I18n.l(time, format, opts)
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|