Skip to content

Commit 36218f8

Browse files
committed
Add deprecations
1 parent 658c441 commit 36218f8

File tree

3 files changed

+75
-6
lines changed

3 files changed

+75
-6
lines changed

CHANGELOG.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1212
- `detect_batch` method for batch detections
1313

1414
### Changed
15-
- Switched to v3 API which uses updated language detection model
16-
- ⚠️ `simple_detect` method renamed to `detect_code`
15+
- Switched to v3 API which uses an updated language detection model
1716
- ⚠️ `detect` method result fields are `language` and `score`
18-
- ⚠️ `detect` method no longer accept arrays - use `detect_batch` instead
19-
- ⚠️ `user_status` method renamed to `account_status`
17+
- ⚠️ `detect` for batch detection is deprecated, use `detect_batch` instead
18+
- ⚠️ `simple_detect` deprecated, use `detect_code` instead
19+
- ⚠️ `user_status` deprecated, use `account_status` instead
20+
- ⚠️ `configuration` deprecated, use `config` instead
2021
- ⚠️ Proxy URL configured using `config.proxy`
21-
- HTTPS is used by default. Removed secure mode configuration.
22-
- Client connection is reused. If you change configuration after client is initialized, you need to reset client using `DetectLanguage.client = nil`.
22+
- Client connection is reused. If you change configuration after the client is initialized, you need to reset client using `DetectLanguage.client = nil`.
2323

2424
### Removed
25+
- Secure mode configuration. HTTPS is always used.
2526
- Ruby 1.x support

lib/detect_language.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,27 @@ def client=(client)
2323
Thread.current[:detect_language_client] = client
2424
end
2525

26+
# @param query String
27+
# @return [Array<Hash>] Array of language detections
2628
def detect(query)
29+
if query.is_a?(Array)
30+
warn '[DEPRECATED] `DetectLanguage.detect` with an array of queries is deprecated. Use `DetectLanguage.detect_batch` instead.'
31+
return detect_batch(query)
32+
end
33+
2734
client.post('detect', q: query)
2835
end
2936

37+
# @param queries Array<String> Array of queries to detect languages for
38+
# @return [Array<Array<Hash>>] Array of language detections for each query
3039
def detect_batch(queries)
3140
raise(ArgumentError, 'Expected an Array of queries') unless queries.is_a?(Array)
3241

3342
client.post('detect-batch', q: queries)
3443
end
3544

45+
# @param text String
46+
# @return [String, nil] Detected language code or nil if no detection found
3647
def detect_code(text)
3748
detections = detect(text)
3849

@@ -41,12 +52,34 @@ def detect_code(text)
4152
detections[0]['language']
4253
end
4354

55+
# @return [Hash] Account status information
4456
def account_status
4557
client.get('account/status')
4658
end
4759

60+
# @return [Array<Hash>] List of supported languages
4861
def languages
4962
client.get('languages')
5063
end
64+
65+
### DEPRECATED METHODS
66+
67+
# @deprecated Use `DetectLanguage.config` instead
68+
def configuration
69+
warn '[DEPRECATED] `DetectLanguage.configuration` is deprecated. Use `DetectLanguage.config` instead.'
70+
config
71+
end
72+
73+
# @deprecated Use `detect_code` instead
74+
def simple_detect(text)
75+
warn '[DEPRECATED] `DetectLanguage.simple_detect` is deprecated. Use `DetectLanguage.detect_code` instead.'
76+
detect_code(text)
77+
end
78+
79+
# @deprecated Use `DetectLanguage.account_status` instead
80+
def user_status
81+
warn '[DEPRECATED] `DetectLanguage.user_status` is deprecated. Use `DetectLanguage.account_status` instead.'
82+
account_status
83+
end
5184
end
5285
end

spec/lib/detect_language_spec.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,15 @@
1616
it { is_expected.to be_a(DetectLanguage::Configuration) }
1717
end
1818

19+
describe '.configuration' do
20+
subject { described_class.configuration }
21+
22+
it 'delegates to config' do
23+
expect(described_class).to receive(:config)
24+
expect { subject }.to output(/DEPRECATED/).to_stderr
25+
end
26+
end
27+
1928
describe '.detect' do
2029
subject { described_class.detect(query) }
2130

@@ -35,6 +44,23 @@
3544
end
3645
end
3746

47+
context 'with array of queries' do
48+
let(:query) { ['Hello world', 'Bonjour le monde'] }
49+
let(:result) { double }
50+
51+
before do
52+
allow(described_class).to receive(:detect_batch).with(query).and_return(result)
53+
end
54+
55+
it 'delegates to detect_batch' do
56+
expect(subject).to be(result)
57+
end
58+
59+
it 'issues a deprecation warning' do
60+
expect { described_class.detect(query) }.to output(/DEPRECATED/).to_stderr
61+
end
62+
end
63+
3864
context 'invalid api key' do
3965
let(:api_key) { 'invalid' }
4066

@@ -111,6 +137,15 @@
111137
end
112138
end
113139

140+
describe '.user_status' do
141+
subject { described_class.user_status }
142+
143+
it 'delegates to account_status' do
144+
expect(described_class).to receive(:account_status)
145+
expect { subject }.to output(/DEPRECATED/).to_stderr
146+
end
147+
end
148+
114149
describe '.languages' do
115150
subject { DetectLanguage.languages }
116151

0 commit comments

Comments
 (0)