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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8b2c148d3977eec632a6dbaf26f9f287aa31103186aa483f0ec1344f7373bd72
4
- data.tar.gz: 984e63ba747fbafb366e08a697fdef9619a363d7972f97d44b8946e72228beb0
3
+ metadata.gz: 87e509379ff99ace8be7f98839eeee30c17b5be50079fbbbfd6b7adba31a8537
4
+ data.tar.gz: c329779406d4079f8dea9a40b29d1c13a14fa12879ef10b1e95bfc09e394e54f
5
5
  SHA512:
6
- metadata.gz: 396027b032cbc82037e8a425d55aebf54e1adf94736f24a54baa46ce6d6cda2c985177b50af3d2ce086a8767ca8ce5d7ccf5b0ff63ebfd6c1a47c92fe84bb163
7
- data.tar.gz: 1bcf294a39b094a2ab643326ec0af72230dd317cd7d21a88751030e2afe93bca3ffe75f5de16dd194d6222f72ad528976f4a61a8748b038ee22e1355362a552a
6
+ metadata.gz: d12613cb5afa41f93ff3cdba54f56c686288bd0a99014fdb48ac127f22b2e219caea6c94d2e76d4f8ef98652176f8405843a89c9e96136b0d539f2a89299e180
7
+ data.tar.gz: 28e1aad880c9866b2ca0c03f19501ccb78b76c2e0774ac0fe54d4f0388656727048734030c147f6605754391305a33792e16e4ba626b7d74a25370d57021ff59
@@ -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 call_js(scope_id, verb, js_req, helpers, session)
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
- request = Request.new(js_req, helpers)
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
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Session management helpers
3
+ # Session management
4
4
  module Session
5
5
  class << self
6
6
  attr_accessor :current
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Primate
4
- VERSION = '0.3.0'
4
+ VERSION = '0.5.0'
5
5
  end
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.3.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