primate-run 0.3.0 → 0.5.0
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/lib/primate/i18n.rb +58 -0
- data/lib/primate/route.rb +8 -5
- data/lib/primate/session.rb +1 -1
- data/lib/primate/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 87e509379ff99ace8be7f98839eeee30c17b5be50079fbbbfd6b7adba31a8537
|
|
4
|
+
data.tar.gz: c329779406d4079f8dea9a40b29d1c13a14fa12879ef10b1e95bfc09e394e54f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d12613cb5afa41f93ff3cdba54f56c686288bd0a99014fdb48ac127f22b2e219caea6c94d2e76d4f8ef98652176f8405843a89c9e96136b0d539f2a89299e180
|
|
7
|
+
data.tar.gz: 28e1aad880c9866b2ca0c03f19501ccb78b76c2e0774ac0fe54d4f0388656727048734030c147f6605754391305a33792e16e4ba626b7d74a25370d57021ff59
|
data/lib/primate/i18n.rb
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Internationalization support
|
|
4
|
+
module I18N
|
|
5
|
+
@current = nil
|
|
6
|
+
|
|
7
|
+
class << self
|
|
8
|
+
# Set the current i18n instance (called by framework)
|
|
9
|
+
#
|
|
10
|
+
# @param i18n_obj [Object] JavaScript i18n object from the runtime
|
|
11
|
+
# @return [void]
|
|
12
|
+
def set_current(i18n_obj)
|
|
13
|
+
@current = i18n_obj
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Translate a key with optional parameters
|
|
17
|
+
#
|
|
18
|
+
# @param key [String] Translation key
|
|
19
|
+
# @param params [Hash] Interpolation parameters
|
|
20
|
+
# @return [String] Translated string
|
|
21
|
+
def t(key, params = nil)
|
|
22
|
+
return key unless @current
|
|
23
|
+
|
|
24
|
+
if params.nil?
|
|
25
|
+
@current.t(key)
|
|
26
|
+
else
|
|
27
|
+
@current.t(key, params.to_json)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Locale accessor
|
|
32
|
+
#
|
|
33
|
+
# @return [Locale] Locale accessor object
|
|
34
|
+
def locale
|
|
35
|
+
Locale
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Locale accessor module
|
|
40
|
+
module Locale
|
|
41
|
+
class << self
|
|
42
|
+
# Get the current locale
|
|
43
|
+
#
|
|
44
|
+
# @return [String] Current locale code
|
|
45
|
+
def get
|
|
46
|
+
I18N.instance_variable_get(:@current)&.[]('locale')
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Set the current locale
|
|
50
|
+
#
|
|
51
|
+
# @param value [String] Locale code to set
|
|
52
|
+
# @return [void]
|
|
53
|
+
def set(value)
|
|
54
|
+
I18N.instance_variable_get(:@current)&.set(value)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
data/lib/primate/route.rb
CHANGED
|
@@ -2,23 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
require_relative 'request'
|
|
4
4
|
require_relative 'response'
|
|
5
|
+
require_relative 'i18n'
|
|
5
6
|
require_relative '../primate'
|
|
6
7
|
|
|
7
8
|
module Route
|
|
8
|
-
# registry: { scope_id => { "GET" => Proc, "POST" => Proc, ... } }
|
|
9
9
|
@registry = Hash.new { |h, k| h[k] = {} }
|
|
10
10
|
@current_scope = "__global__"
|
|
11
11
|
|
|
12
12
|
class << self
|
|
13
13
|
# set the active scope for subsequent handler registrations
|
|
14
|
-
# (wrapper calls this before evaluating a route file)
|
|
15
14
|
def scope(id)
|
|
16
15
|
@current_scope = id.to_s
|
|
17
16
|
@registry[@current_scope]
|
|
18
17
|
end
|
|
19
18
|
|
|
20
19
|
# clear routes for a specific scope (or the current scope if none given)
|
|
21
|
-
# wrapper calls this right before (re)evaluating the route file
|
|
22
20
|
def clear(id = nil)
|
|
23
21
|
target = (id || @current_scope).to_s
|
|
24
22
|
@registry.delete(target)
|
|
@@ -41,10 +39,15 @@ module Route
|
|
|
41
39
|
PrimateInternal.set_session(session, helpers)
|
|
42
40
|
end
|
|
43
41
|
|
|
44
|
-
def
|
|
42
|
+
def set_i18n(i18n)
|
|
43
|
+
I18N.set_current(i18n)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def call_js(scope_id, verb, js_req, helpers, session, i18n)
|
|
45
47
|
set_session(session, helpers)
|
|
46
|
-
|
|
48
|
+
set_i18n(i18n)
|
|
47
49
|
|
|
50
|
+
request = Request.new(js_req, helpers)
|
|
48
51
|
verb_up = verb.to_s.upcase
|
|
49
52
|
handler = @registry.dig(scope_id.to_s, verb_up)
|
|
50
53
|
return Response.error(status: 404) unless handler
|
data/lib/primate/session.rb
CHANGED
data/lib/primate/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: primate-run
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Primate Team
|
|
@@ -60,6 +60,7 @@ extensions: []
|
|
|
60
60
|
extra_rdoc_files: []
|
|
61
61
|
files:
|
|
62
62
|
- lib/primate.rb
|
|
63
|
+
- lib/primate/i18n.rb
|
|
63
64
|
- lib/primate/pema.rb
|
|
64
65
|
- lib/primate/readable.rb
|
|
65
66
|
- lib/primate/request.rb
|