Skip to content

Commit 657b9f3

Browse files
authored
feat: Add config option to ignore keys (#82)
1 parent e6e3fbf commit 657b9f3

File tree

5 files changed

+51
-4
lines changed

5 files changed

+51
-4
lines changed

lib/generators/phraseapp_in_context_editor/templates/phraseapp_in_context_editor.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
config.account_id = "<%= options[:account_id] %>"
1010
config.datacenter = "eu"
1111

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+
1216
# Phrase uses decorators to generate a unique identification key
1317
# in context of your document. However, this might result in conflicts
1418
# with other libraries (e.g. client-side template engines) that use a similar syntax.

lib/phraseapp-in-context-editor-ruby.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ def datacenter
3737
config.datacenter
3838
end
3939

40+
def ignored_keys
41+
config.ignored_keys
42+
end
43+
4044
def enabled=(value)
4145
config.enabled = value
4246
end

lib/phraseapp-in-context-editor-ruby/backend_service.rb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
module PhraseApp
44
module InContextEditor
55
class BackendService
6-
attr_accessor :blacklisted_keys
7-
86
def initialize(args = {})
97
self
108
end
@@ -20,7 +18,14 @@ def translate(...)
2018
protected
2119

2220
def to_be_translated_without_phraseapp?(...)
23-
PhraseApp::InContextEditor.disabled? || has_been_forced_to_resolve_with_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
2429
end
2530

2631
def has_been_forced_to_resolve_with_phraseapp?(*args)

lib/phraseapp-in-context-editor-ruby/config.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ class Config
99
backend: PhraseApp::InContextEditor::BackendService.new,
1010
prefix: "{{__",
1111
suffix: "__}}",
12-
origin: "in-context-editor-ruby"
12+
origin: "in-context-editor-ruby",
13+
ignored_keys: []
1314
}.freeze
1415

1516
CONFIG_OPTIONS.each do |option, default_value|

spec/phraseapp-in-context-editor-ruby/backend_service_spec.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,39 @@
113113
end
114114
end
115115

116+
describe "#ignored_key?" do
117+
let(:key_name) { "bar" }
118+
subject { phraseapp_service.send(:ignored_key?, key_name, scope: "foo") }
119+
120+
before do
121+
PhraseApp::InContextEditor.config.ignored_keys = ignored_keys
122+
end
123+
124+
context "exact key is ignored" do
125+
let(:ignored_keys) { %w[foo.bar baz] }
126+
127+
it { is_expected.to be_truthy }
128+
end
129+
130+
context "key with wildcard is ignored" do
131+
let(:ignored_keys) { %w[foo.* baz] }
132+
133+
it { is_expected.to be_truthy }
134+
end
135+
136+
context "no keys are ignored" do
137+
let(:ignored_keys) { [] }
138+
139+
it { is_expected.to be_falsey }
140+
end
141+
142+
context "different keys are ignored" do
143+
let(:ignored_keys) { %w[baz baz.foo bar.* foo] }
144+
145+
it { is_expected.to be_falsey }
146+
end
147+
end
148+
116149
describe "#normalized_key" do
117150
subject { phraseapp_service.send(:normalized_key, args) }
118151

0 commit comments

Comments
 (0)