textrazor 0.0.7 → 0.0.8
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/README.md +5 -1
- data/Rakefile +1 -0
- data/lib/textrazor.rb +6 -0
- data/lib/textrazor/client.rb +8 -1
- data/lib/textrazor/entity.rb +3 -10
- data/lib/textrazor/phrase.rb +24 -0
- data/lib/textrazor/response.rb +12 -0
- data/lib/textrazor/util.rb +11 -0
- data/lib/textrazor/version.rb +1 -1
- data/lib/textrazor/word.rb +10 -10
- data/spec/lib/textrazor/client_spec.rb +29 -10
- data/spec/lib/textrazor/phrase_spec.rb +26 -0
- data/spec/lib/textrazor/request_spec.rb +2 -2
- data/spec/lib/textrazor/response_spec.rb +1 -1
- data/spec/lib/textrazor/word_spec.rb +11 -2
- data/spec/lib/textrazor_spec.rb +14 -3
- data/spec/spec_helper.rb +0 -5
- data/textrazor.gemspec +2 -3
- metadata +15 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a18bfa0d8979cd6af68c481ff1200802d989dfc
|
4
|
+
data.tar.gz: 71666356571e6e4d6cad269ad6f7f6da306d90d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 653c8e38cf0d1ab4b42796eec8853bc1104c5122ba6e87e6073f74fb2e75b76b75911136a2583f0f0320ab93711da5d269a6ee67280a6c90b3884ca1b7c24961
|
7
|
+
data.tar.gz: c65e0182196f36cf12a080772dd4953ec8d239a6bc66cd3897ef97e2bb83c8bdea5823ef14c91e76d0249980628ca762ae734f1d445c3238f6a5de86c88bc990
|
data/README.md
CHANGED
@@ -48,6 +48,8 @@ response.entities # Returns an array of TextRazor::Entity instances.
|
|
48
48
|
|
49
49
|
response.words # Returns an array of TextRazor::Word instances.
|
50
50
|
|
51
|
+
response.phrases # Returns an array of TextRazor::Phrase instances.
|
52
|
+
|
51
53
|
```
|
52
54
|
|
53
55
|
### One off requests
|
@@ -65,11 +67,13 @@ TextRazor.entities('api_key', 'text')
|
|
65
67
|
|
66
68
|
TextRazor.words('api_key', 'text')
|
67
69
|
|
70
|
+
TextRazor.phrases('api_key', 'text')
|
71
|
+
|
68
72
|
```
|
69
73
|
|
70
74
|
## Next steps
|
71
75
|
|
72
|
-
Only implemented this for topics, entities, and
|
76
|
+
Only implemented this for topics, entities, words and phrases. Also, implement
|
73
77
|
it for other information that we can retrieve from the public API.
|
74
78
|
|
75
79
|
|
data/Rakefile
CHANGED
data/lib/textrazor.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
require "textrazor/version"
|
2
2
|
require "textrazor/configuration"
|
3
|
+
require "textrazor/util"
|
3
4
|
require "textrazor/client"
|
4
5
|
require "textrazor/request"
|
5
6
|
require "textrazor/response"
|
6
7
|
require "textrazor/topic"
|
7
8
|
require "textrazor/entity"
|
8
9
|
require "textrazor/word"
|
10
|
+
require "textrazor/phrase"
|
9
11
|
|
10
12
|
module TextRazor
|
11
13
|
|
@@ -21,6 +23,10 @@ module TextRazor
|
|
21
23
|
Client.words(api_key, text, options)
|
22
24
|
end
|
23
25
|
|
26
|
+
def self.phrases(api_key, text, options = {})
|
27
|
+
Client.phrases(api_key, text, options)
|
28
|
+
end
|
29
|
+
|
24
30
|
class << self
|
25
31
|
attr_writer :configuration
|
26
32
|
end
|
data/lib/textrazor/client.rb
CHANGED
@@ -9,7 +9,8 @@ module TextRazor
|
|
9
9
|
DEFAULT_EXTRACTORS = ['entities', 'topics', 'words', 'phrases', 'dependency-trees',
|
10
10
|
'relations', 'entailments', 'senses']
|
11
11
|
|
12
|
-
REQUEST_OPTIONS = [:extractors, :cleanup_html, :language,
|
12
|
+
REQUEST_OPTIONS = [:extractors, :cleanup_html, :language,
|
13
|
+
:filter_dbpedia_types, :filter_freebase_types]
|
13
14
|
|
14
15
|
attr_reader :response, :api_key, :request_options
|
15
16
|
|
@@ -49,6 +50,12 @@ module TextRazor
|
|
49
50
|
entities
|
50
51
|
end
|
51
52
|
|
53
|
+
def self.phrases(api_key, text, options = {})
|
54
|
+
new(api_key, options.merge(extractors: ['phrases', 'words'])).
|
55
|
+
analyse(text).
|
56
|
+
phrases
|
57
|
+
end
|
58
|
+
|
52
59
|
private
|
53
60
|
|
54
61
|
def assign_api_key(api_key)
|
data/lib/textrazor/entity.rb
CHANGED
@@ -2,6 +2,8 @@ module TextRazor
|
|
2
2
|
|
3
3
|
class Entity
|
4
4
|
|
5
|
+
extend Util
|
6
|
+
|
5
7
|
attr_reader :id, :type, :matching_tokens, :entity_id, :freebase_types, :confidence_score,
|
6
8
|
:wiki_link, :matched_text, :freebase_id, :relevance_score, :entity_english_id,
|
7
9
|
:starting_pos, :ending_pos
|
@@ -14,19 +16,10 @@ module TextRazor
|
|
14
16
|
end
|
15
17
|
|
16
18
|
def self.create_from_hash(params)
|
17
|
-
params = Hash[params.map {|k, v| [
|
19
|
+
params = Hash[params.map {|k, v| [standardize(k), v] }]
|
18
20
|
new(params)
|
19
21
|
end
|
20
22
|
|
21
|
-
def self.underscore(text)
|
22
|
-
text.gsub(/::/, '/').
|
23
|
-
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
24
|
-
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
25
|
-
tr("-", "_").
|
26
|
-
downcase
|
27
|
-
end
|
28
|
-
private_class_method :underscore
|
29
|
-
|
30
23
|
end
|
31
24
|
|
32
25
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module TextRazor
|
2
|
+
|
3
|
+
class Phrase
|
4
|
+
|
5
|
+
attr_reader :id, :text
|
6
|
+
|
7
|
+
def initialize(params, words)
|
8
|
+
@id = params["id"]
|
9
|
+
@text = match_words(params["wordPositions"], words)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.create_from_hash(params, words)
|
13
|
+
new(params, words)
|
14
|
+
end
|
15
|
+
|
16
|
+
def match_words(positions, words)
|
17
|
+
phrase = []
|
18
|
+
positions.each { |position| phrase.push words[position].token }
|
19
|
+
phrase.join(' ')
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/lib/textrazor/response.rb
CHANGED
@@ -55,6 +55,10 @@ module TextRazor
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
+
def phrases
|
59
|
+
@phrases ||= parse_phrases(raw_response["nounPhrases"], words)
|
60
|
+
end
|
61
|
+
|
58
62
|
private
|
59
63
|
|
60
64
|
def bad_request?(code)
|
@@ -77,6 +81,14 @@ module TextRazor
|
|
77
81
|
end
|
78
82
|
end
|
79
83
|
|
84
|
+
def parse_phrases(raw_phrases, words)
|
85
|
+
return nil if raw_phrases.nil?
|
86
|
+
|
87
|
+
raw_phrases.map do |phrase_hash|
|
88
|
+
Phrase.create_from_hash(phrase_hash, words)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
80
92
|
end
|
81
93
|
|
82
94
|
end
|
data/lib/textrazor/version.rb
CHANGED
data/lib/textrazor/word.rb
CHANGED
@@ -2,20 +2,20 @@ module TextRazor
|
|
2
2
|
|
3
3
|
class Word
|
4
4
|
|
5
|
-
|
6
|
-
:lemma, :token, :part_of_speech
|
5
|
+
extend Util
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
attr_reader :position, :starting_pos, :ending_pos, :stem, :lemma,
|
8
|
+
:token, :part_of_speech, :parent_position
|
9
|
+
|
10
|
+
def initialize(params = {})
|
11
|
+
@type = []
|
12
|
+
params.each do |k, v|
|
13
|
+
instance_variable_set(:"@#{k}", v) if v && self.respond_to?(:"#{k}")
|
14
|
+
end
|
16
15
|
end
|
17
16
|
|
18
17
|
def self.create_from_hash(params)
|
18
|
+
params = Hash[params.map {|k, v| [standardize(k), v] }]
|
19
19
|
new(params)
|
20
20
|
end
|
21
21
|
|
@@ -70,12 +70,12 @@ module TextRazor
|
|
70
70
|
it "should make correct calls" do
|
71
71
|
request = Object.new
|
72
72
|
|
73
|
-
Request.
|
73
|
+
expect(Request).to receive(:post).
|
74
74
|
with('text', {api_key: 'api_key', extractors: %w(entities topics words), cleanup_html: true,
|
75
75
|
language: 'fre', filter_dbpedia_types: %w(type1), filter_freebase_types: %w(type2)}).
|
76
76
|
and_return(request)
|
77
77
|
|
78
|
-
Response.
|
78
|
+
expect(Response).to receive(:new).with(request)
|
79
79
|
|
80
80
|
client.analyse('text')
|
81
81
|
end
|
@@ -125,11 +125,11 @@ module TextRazor
|
|
125
125
|
client = OpenStruct.new
|
126
126
|
response = OpenStruct.new topics: ['topic1'], coarseTopics: ['topic1']
|
127
127
|
|
128
|
-
Client.
|
128
|
+
expect(Client).to receive(:new).
|
129
129
|
with(api_key, {extractors: ['topics']}).
|
130
130
|
and_return(client)
|
131
131
|
|
132
|
-
client.
|
132
|
+
expect(client).to receive(:analyse).
|
133
133
|
with("text").
|
134
134
|
and_return(response)
|
135
135
|
|
@@ -144,11 +144,11 @@ module TextRazor
|
|
144
144
|
client = OpenStruct.new
|
145
145
|
response = OpenStruct.new topics: ['topic1'], coarseTopics: ['topic1']
|
146
146
|
|
147
|
-
Client.
|
147
|
+
expect(Client).to receive(:new).
|
148
148
|
with(api_key, {extractors: ['topics']}).
|
149
149
|
and_return(client)
|
150
150
|
|
151
|
-
client.
|
151
|
+
expect(client).to receive(:analyse).
|
152
152
|
with("text").
|
153
153
|
and_return(response)
|
154
154
|
|
@@ -163,11 +163,11 @@ module TextRazor
|
|
163
163
|
client = OpenStruct.new
|
164
164
|
response = OpenStruct.new entities: ['Entity1']
|
165
165
|
|
166
|
-
Client.
|
166
|
+
expect(Client).to receive(:new).
|
167
167
|
with(api_key, {extractors: ['entities']}).
|
168
168
|
and_return(client)
|
169
169
|
|
170
|
-
client.
|
170
|
+
expect(client).to receive(:analyse).
|
171
171
|
with("text").
|
172
172
|
and_return(response)
|
173
173
|
|
@@ -182,11 +182,11 @@ module TextRazor
|
|
182
182
|
client = OpenStruct.new
|
183
183
|
response = OpenStruct.new words: ['Word1']
|
184
184
|
|
185
|
-
Client.
|
185
|
+
expect(Client).to receive(:new).
|
186
186
|
with(api_key, {extractors: ['words']}).
|
187
187
|
and_return(client)
|
188
188
|
|
189
|
-
client.
|
189
|
+
expect(client).to receive(:analyse).
|
190
190
|
with("text").
|
191
191
|
and_return(response)
|
192
192
|
|
@@ -195,6 +195,25 @@ module TextRazor
|
|
195
195
|
|
196
196
|
end
|
197
197
|
|
198
|
+
context ".phrases" do
|
199
|
+
|
200
|
+
it "should make correct calls" do
|
201
|
+
client = OpenStruct.new
|
202
|
+
response = OpenStruct.new phrases: ['Phrase1']
|
203
|
+
|
204
|
+
expect(Client).to receive(:new).
|
205
|
+
with(api_key, {extractors: ['phrases', 'words']}).
|
206
|
+
and_return(client)
|
207
|
+
|
208
|
+
expect(client).to receive(:analyse).
|
209
|
+
with("text").
|
210
|
+
and_return(response)
|
211
|
+
|
212
|
+
Client.phrases(api_key, 'text', {})
|
213
|
+
end
|
214
|
+
|
215
|
+
end
|
216
|
+
|
198
217
|
end
|
199
218
|
|
200
219
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module TextRazor
|
4
|
+
|
5
|
+
describe Phrase do
|
6
|
+
|
7
|
+
context "#create_from_hash" do
|
8
|
+
|
9
|
+
it "should create a new instance" do
|
10
|
+
phrase_hash = {"id" => 1, "wordPositions" => [0, 1, 2]}
|
11
|
+
words = [
|
12
|
+
OpenStruct.new(token: 'Word1'),
|
13
|
+
OpenStruct.new(token: 'Word2'),
|
14
|
+
OpenStruct.new(token: 'Word3')
|
15
|
+
]
|
16
|
+
|
17
|
+
phrase = Phrase.create_from_hash(phrase_hash, words)
|
18
|
+
|
19
|
+
expect(phrase.id).to eq(1)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -45,7 +45,7 @@ module TextRazor
|
|
45
45
|
it "should make correct calls" do
|
46
46
|
options = {api_key: 'api_key', extractors: %w(entities topics words dependency-trees relations entailments)}
|
47
47
|
|
48
|
-
::RestClient.
|
48
|
+
expect(::RestClient).to receive(:post).
|
49
49
|
with("https://api.textrazor.com/", { "text" => 'text', "apiKey" => 'api_key',
|
50
50
|
"extractors" => "entities,topics,words,dependency-trees,relations,entailments" }, accept_encoding: 'gzip')
|
51
51
|
|
@@ -60,7 +60,7 @@ module TextRazor
|
|
60
60
|
options = {api_key: 'api_key', extractors: %w(entities topics words), cleanup_html: true,
|
61
61
|
language: 'fre', filter_dbpedia_types: %w(type1), filter_freebase_types: %w(type2)}
|
62
62
|
|
63
|
-
::RestClient.
|
63
|
+
expect(::RestClient).to receive(:post).
|
64
64
|
with("https://api.textrazor.com/", { "text" => 'text', "apiKey" => 'api_key', "extractors" => "entities,topics,words",
|
65
65
|
"cleanupHTML" => true, "languageOverride" => 'fre', "entities.filterDbpediaTypes" => "type1",
|
66
66
|
"entities.filterFreebaseTypes" => "type2" },
|
@@ -7,8 +7,16 @@ module TextRazor
|
|
7
7
|
context "#create_from_hash" do
|
8
8
|
|
9
9
|
it "should create a new instance" do
|
10
|
-
word_hash = {
|
11
|
-
|
10
|
+
word_hash = {
|
11
|
+
"position" => 0,
|
12
|
+
"startingPos" => 0,
|
13
|
+
"endingPos" => 3,
|
14
|
+
"stem" => "the",
|
15
|
+
"lemma" => "the",
|
16
|
+
"token" => "The",
|
17
|
+
"partOfSpeech" => "DT",
|
18
|
+
"parentPosition" => 2
|
19
|
+
}
|
12
20
|
|
13
21
|
word = Word.create_from_hash(word_hash)
|
14
22
|
|
@@ -19,6 +27,7 @@ module TextRazor
|
|
19
27
|
expect(word.lemma).to eq("the")
|
20
28
|
expect(word.token).to eq("The")
|
21
29
|
expect(word.part_of_speech).to eq("DT")
|
30
|
+
expect(word.parent_position).to eq(2)
|
22
31
|
end
|
23
32
|
|
24
33
|
end
|
data/spec/lib/textrazor_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe TextRazor do
|
|
5
5
|
describe ".topics" do
|
6
6
|
|
7
7
|
it "should make correct calls" do
|
8
|
-
TextRazor::Client.
|
8
|
+
expect(TextRazor::Client).to receive(:topics).
|
9
9
|
with('api_key', 'text', {})
|
10
10
|
|
11
11
|
TextRazor.topics('api_key', 'text', {})
|
@@ -16,7 +16,7 @@ describe TextRazor do
|
|
16
16
|
describe ".entities" do
|
17
17
|
|
18
18
|
it "should make correct calls" do
|
19
|
-
TextRazor::Client.
|
19
|
+
expect(TextRazor::Client).to receive(:entities).
|
20
20
|
with('api_key', 'text', {})
|
21
21
|
|
22
22
|
TextRazor.entities('api_key', 'text', {})
|
@@ -27,7 +27,7 @@ describe TextRazor do
|
|
27
27
|
describe ".words" do
|
28
28
|
|
29
29
|
it "should make correct calls" do
|
30
|
-
TextRazor::Client.
|
30
|
+
expect(TextRazor::Client).to receive(:words).
|
31
31
|
with('api_key', 'text', {})
|
32
32
|
|
33
33
|
TextRazor.words('api_key', 'text', {})
|
@@ -35,6 +35,17 @@ describe TextRazor do
|
|
35
35
|
|
36
36
|
end
|
37
37
|
|
38
|
+
describe ".phrases" do
|
39
|
+
|
40
|
+
it "should make correct calls" do
|
41
|
+
expect(TextRazor::Client).to receive(:phrases).
|
42
|
+
with('api_key', 'text', {})
|
43
|
+
|
44
|
+
TextRazor.phrases('api_key', 'text', {})
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
38
49
|
describe ".reset" do
|
39
50
|
before :each do
|
40
51
|
TextRazor.configure do |config|
|
data/spec/spec_helper.rb
CHANGED
data/textrazor.gemspec
CHANGED
@@ -22,7 +22,6 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_dependency "fast_open_struct"
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.3"
|
25
|
-
spec.add_development_dependency "rake"
|
26
|
-
spec.add_development_dependency "rspec"
|
27
|
-
spec.add_development_dependency "rspec-fire"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.4"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.0.0"
|
28
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: textrazor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anuj Dutta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -56,44 +56,30 @@ dependencies:
|
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '10.4'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '10.4'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rspec-fire
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
73
|
+
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
75
|
+
version: 3.0.0
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- - "
|
80
|
+
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
82
|
+
version: 3.0.0
|
97
83
|
description: Api wrapper for text razor
|
98
84
|
email:
|
99
85
|
- anuj@andhapp.com
|
@@ -111,14 +97,17 @@ files:
|
|
111
97
|
- lib/textrazor/client.rb
|
112
98
|
- lib/textrazor/configuration.rb
|
113
99
|
- lib/textrazor/entity.rb
|
100
|
+
- lib/textrazor/phrase.rb
|
114
101
|
- lib/textrazor/request.rb
|
115
102
|
- lib/textrazor/response.rb
|
116
103
|
- lib/textrazor/topic.rb
|
104
|
+
- lib/textrazor/util.rb
|
117
105
|
- lib/textrazor/version.rb
|
118
106
|
- lib/textrazor/word.rb
|
119
107
|
- spec/lib/textrazor/client_spec.rb
|
120
108
|
- spec/lib/textrazor/configuration_spec.rb
|
121
109
|
- spec/lib/textrazor/entity_spec.rb
|
110
|
+
- spec/lib/textrazor/phrase_spec.rb
|
122
111
|
- spec/lib/textrazor/request_spec.rb
|
123
112
|
- spec/lib/textrazor/response_spec.rb
|
124
113
|
- spec/lib/textrazor/topic_spec.rb
|
@@ -146,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
135
|
version: '0'
|
147
136
|
requirements: []
|
148
137
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.
|
138
|
+
rubygems_version: 2.4.5
|
150
139
|
signing_key:
|
151
140
|
specification_version: 4
|
152
141
|
summary: An api wrapper for text razor in ruby
|
@@ -154,6 +143,7 @@ test_files:
|
|
154
143
|
- spec/lib/textrazor/client_spec.rb
|
155
144
|
- spec/lib/textrazor/configuration_spec.rb
|
156
145
|
- spec/lib/textrazor/entity_spec.rb
|
146
|
+
- spec/lib/textrazor/phrase_spec.rb
|
157
147
|
- spec/lib/textrazor/request_spec.rb
|
158
148
|
- spec/lib/textrazor/response_spec.rb
|
159
149
|
- spec/lib/textrazor/topic_spec.rb
|