phraseapp-in-context-editor-ruby 2.1.1 → 3.1.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/.github/workflows/test.yml +2 -2
- data/CHANGELOG.md +31 -0
- data/Gemfile.lock +1 -1
- data/lib/generators/phraseapp_in_context_editor/templates/phraseapp_in_context_editor.rb +4 -0
- data/lib/phraseapp-in-context-editor-ruby/adapters/i18n.rb +2 -2
- data/lib/phraseapp-in-context-editor-ruby/backend_service.rb +16 -31
- data/lib/phraseapp-in-context-editor-ruby/config.rb +2 -1
- data/lib/phraseapp-in-context-editor-ruby/delegate/i18n_delegate.rb +2 -2
- data/lib/phraseapp-in-context-editor-ruby/version.rb +2 -2
- data/lib/phraseapp-in-context-editor-ruby.rb +4 -0
- data/phraseapp-in-context-editor-ruby.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 900986756f3ba71519a83b5168774f3fbcccde7956535ced2a907e1a1725978c
|
4
|
+
data.tar.gz: 33ed4e6bc473b1b456a4955f5253aeb637864fde544968051f88d95948a21666
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4eb5593cd10987c04b61726aa051b6c962b3b1f2bf83841f1ab0c3f80c319881cf71517f47a5f1c2ca3c73c6e4d86eca90532b87f476b887a11c3b72bdae255e
|
7
|
+
data.tar.gz: 0eed67e1f200e262044f3cb936f3e88c1f1bea485565345ad3a24f1f6ca34109a61b20878500f6911b12f9d69e81f2eac0b8dcfa26784dddeaf673b2008d821a
|
data/.github/workflows/test.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,34 @@
|
|
1
|
+
# [3.1.0](https://github.com/phrase/phraseapp-in-context-editor-ruby/compare/v3.0.1...v3.1.0) (2024-06-14)
|
2
|
+
|
3
|
+
|
4
|
+
### Features
|
5
|
+
|
6
|
+
* Add config option to ignore keys ([#82](https://github.com/phrase/phraseapp-in-context-editor-ruby/issues/82)) ([657b9f3](https://github.com/phrase/phraseapp-in-context-editor-ruby/commit/657b9f3ebce1ca2a364af1b9b84b0b28ee733983))
|
7
|
+
|
8
|
+
## [3.0.1](https://github.com/phrase/phraseapp-in-context-editor-ruby/compare/v3.0.0...v3.0.1) (2024-06-14)
|
9
|
+
|
10
|
+
|
11
|
+
### Bug Fixes
|
12
|
+
|
13
|
+
* Adjust module name to fix semantic release bumps ([#84](https://github.com/phrase/phraseapp-in-context-editor-ruby/issues/84)) ([f97ed2d](https://github.com/phrase/phraseapp-in-context-editor-ruby/commit/f97ed2d81a755fa97e3a9a908e42eb8f99e78cc2))
|
14
|
+
|
15
|
+
# [3.0.0](https://github.com/phrase/phraseapp-in-context-editor-ruby/compare/v2.1.2...v3.0.0) (2024-05-21)
|
16
|
+
|
17
|
+
|
18
|
+
* BREAKING CHANGE: Use ruby 2.7 'Forward all arguments' syntax: (...) to forward arguments (#78) ([99ae28e](https://github.com/phrase/phraseapp-in-context-editor-ruby/commit/99ae28e2f6fea0ba2ba0eec6eca54a043e21d121)), closes [#78](https://github.com/phrase/phraseapp-in-context-editor-ruby/issues/78)
|
19
|
+
|
20
|
+
|
21
|
+
### BREAKING CHANGES
|
22
|
+
|
23
|
+
* Hash arguments will throw an error. Keyword arguments must be used instead.
|
24
|
+
|
25
|
+
## [2.1.2](https://github.com/phrase/phraseapp-in-context-editor-ruby/compare/v2.1.1...v2.1.2) (2024-05-21)
|
26
|
+
|
27
|
+
|
28
|
+
### Bug Fixes
|
29
|
+
|
30
|
+
* Ruby 3.0 keyword argument error when ICE is enabled ([#79](https://github.com/phrase/phraseapp-in-context-editor-ruby/issues/79)) ([d0efad8](https://github.com/phrase/phraseapp-in-context-editor-ruby/commit/d0efad859b83b7ac78873e012aafcac2d1856481))
|
31
|
+
|
1
32
|
## [2.1.1](https://github.com/phrase/phraseapp-in-context-editor-ruby/compare/v2.1.0...v2.1.1) (2024-04-23)
|
2
33
|
|
3
34
|
|
data/Gemfile.lock
CHANGED
@@ -9,6 +9,10 @@ PhraseApp::InContextEditor.configure do |config|
|
|
9
9
|
config.account_id = "<%= options[:account_id] %>"
|
10
10
|
config.datacenter = "eu"
|
11
11
|
|
12
|
+
# Configure an array of key names that should not be handled
|
13
|
+
# by the In-Context-Editor.
|
14
|
+
# config.ignored_keys = ["number.*", "foo.bar"]
|
15
|
+
|
12
16
|
# Phrase uses decorators to generate a unique identification key
|
13
17
|
# in context of your document. However, this might result in conflicts
|
14
18
|
# with other libraries (e.g. client-side template engines) that use a similar syntax.
|
@@ -1,8 +1,8 @@
|
|
1
1
|
if defined?(I18n)
|
2
2
|
module I18n
|
3
3
|
class << self
|
4
|
-
def translate_with_phraseapp(
|
5
|
-
PhraseApp::InContextEditor.backend.translate(
|
4
|
+
def translate_with_phraseapp(...)
|
5
|
+
PhraseApp::InContextEditor.backend.translate(...)
|
6
6
|
end
|
7
7
|
alias_method :translate_without_phraseapp, :translate
|
8
8
|
alias_method :translate, :translate_with_phraseapp
|
@@ -3,47 +3,32 @@ require_relative "delegate/i18n_delegate"
|
|
3
3
|
module PhraseApp
|
4
4
|
module InContextEditor
|
5
5
|
class BackendService
|
6
|
-
attr_accessor :blacklisted_keys
|
7
|
-
|
8
6
|
def initialize(args = {})
|
9
7
|
self
|
10
8
|
end
|
11
9
|
|
12
|
-
def translate(
|
13
|
-
if to_be_translated_without_phraseapp?(
|
14
|
-
|
15
|
-
#
|
16
|
-
# This method uses keyword arguments.
|
17
|
-
# There is a breaking change in ruby that produces warning with ruby 2.7 and won't work as expected with ruby 3.0
|
18
|
-
# The "hash" parameter must be passed as keyword argument.
|
19
|
-
#
|
20
|
-
# Good:
|
21
|
-
# I18n.t(:salutation, :gender => 'w', :name => 'Smith')
|
22
|
-
# I18n.t(:salutation, **{ :gender => 'w', :name => 'Smith' })
|
23
|
-
# I18n.t(:salutation, **any_hash)
|
24
|
-
#
|
25
|
-
# Bad:
|
26
|
-
# I18n.t(:salutation, { :gender => 'w', :name => 'Smith' })
|
27
|
-
# I18n.t(:salutation, any_hash)
|
28
|
-
#
|
29
|
-
kw_args = args[1]
|
30
|
-
if kw_args.present?
|
31
|
-
I18n.translate_without_phraseapp(args[0], **kw_args)
|
32
|
-
else
|
33
|
-
I18n.translate_without_phraseapp(args[0])
|
34
|
-
end
|
10
|
+
def translate(...)
|
11
|
+
if to_be_translated_without_phraseapp?(...)
|
12
|
+
I18n.translate_without_phraseapp(...)
|
35
13
|
else
|
36
|
-
phraseapp_delegate_for(
|
14
|
+
phraseapp_delegate_for(...)
|
37
15
|
end
|
38
16
|
end
|
39
17
|
|
40
18
|
protected
|
41
19
|
|
42
|
-
def to_be_translated_without_phraseapp?(
|
43
|
-
PhraseApp::InContextEditor.disabled? || has_been_forced_to_resolve_with_phraseapp?(
|
20
|
+
def to_be_translated_without_phraseapp?(...)
|
21
|
+
PhraseApp::InContextEditor.disabled? || ignored_key?(...) || has_been_forced_to_resolve_with_phraseapp?(...)
|
22
|
+
end
|
23
|
+
|
24
|
+
def ignored_key?(*args)
|
25
|
+
key = given_key_from_args(args)
|
26
|
+
PhraseApp::InContextEditor.ignored_keys.any? do |ignored_key|
|
27
|
+
key.to_s[/\A#{ignored_key.gsub("*", ".*")}\Z/]
|
28
|
+
end
|
44
29
|
end
|
45
30
|
|
46
|
-
def has_been_forced_to_resolve_with_phraseapp?(args)
|
31
|
+
def has_been_forced_to_resolve_with_phraseapp?(*args)
|
47
32
|
(args.last.is_a?(Hash) && args.last[:resolve] == false)
|
48
33
|
end
|
49
34
|
|
@@ -51,11 +36,11 @@ module PhraseApp
|
|
51
36
|
extract_normalized_key_from_args(args)
|
52
37
|
end
|
53
38
|
|
54
|
-
def phraseapp_delegate_for(args)
|
39
|
+
def phraseapp_delegate_for(*args)
|
55
40
|
key = given_key_from_args(args)
|
56
41
|
return nil unless present?(key)
|
57
42
|
|
58
|
-
options = args
|
43
|
+
options = options_from_args(args)
|
59
44
|
PhraseApp::InContextEditor::Delegate::I18nDelegate.new(key, options, args)
|
60
45
|
end
|
61
46
|
|
@@ -9,7 +9,8 @@ module PhraseApp
|
|
9
9
|
backend: PhraseApp::InContextEditor::BackendService.new,
|
10
10
|
prefix: "{{__",
|
11
11
|
suffix: "__}}",
|
12
|
-
origin: "in-context-editor-ruby"
|
12
|
+
origin: "in-context-editor-ruby",
|
13
|
+
ignored_keys: []
|
13
14
|
}.freeze
|
14
15
|
|
15
16
|
CONFIG_OPTIONS.each do |option, default_value|
|
@@ -4,7 +4,7 @@ module PhraseApp
|
|
4
4
|
module InContextEditor
|
5
5
|
module Delegate
|
6
6
|
class I18nDelegate < Base
|
7
|
-
attr_accessor :key, :display_key
|
7
|
+
attr_accessor :key, :display_key
|
8
8
|
|
9
9
|
def initialize(key, options = {}, original_args = nil)
|
10
10
|
@key = key
|
@@ -24,7 +24,7 @@ module PhraseApp
|
|
24
24
|
data.send(*args, &block)
|
25
25
|
else
|
26
26
|
self.class.log "You tried to execute the missing method ##{args.first} on key #{@key} which is not supported. Please make sure you treat your translations as strings only."
|
27
|
-
original_translation = ::I18n.translate_without_phraseapp(*@original_args)
|
27
|
+
original_translation = ::I18n.translate_without_phraseapp(*@original_args, **@options)
|
28
28
|
original_translation.send(*args, &block)
|
29
29
|
end
|
30
30
|
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
module
|
2
|
-
VERSION = "
|
1
|
+
module PhraseappInContextEditor
|
2
|
+
VERSION = "3.1.0"
|
3
3
|
end
|
@@ -4,7 +4,7 @@ require "./lib/phraseapp-in-context-editor-ruby/version"
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "phraseapp-in-context-editor-ruby"
|
7
|
-
s.version =
|
7
|
+
s.version = PhraseappInContextEditor::VERSION
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.required_ruby_version = ">= 3.1.0"
|
10
10
|
s.authors = ["Phrase"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phraseapp-in-context-editor-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Phrase
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|