zemanta_client 0.0.5 → 0.0.6
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.
- data/README.md +12 -10
- data/lib/zemanta/enhancer.rb +16 -1
- data/lib/zemanta/version.rb +1 -1
- data/spec/zemanta/enhancer_spec.rb +24 -0
- metadata +2 -2
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Zemanta
|
2
2
|
|
3
|
-
This is a ruby client to awesome Zemanta app.
|
3
|
+
This is a ruby client to awesome Zemanta app.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -27,33 +27,34 @@ You need to set api_key to use the client. If you won't do that, gem will raise
|
|
27
27
|
- You can set your api_key in configuration block like this:
|
28
28
|
|
29
29
|
```ruby
|
30
|
-
Zemanta.configure { |c| c.api_key = 'your_api_key' }
|
30
|
+
Zemanta.configure { |c| c.api_key = 'your_api_key' }
|
31
31
|
```
|
32
32
|
|
33
33
|
|
34
34
|
## Usage
|
35
35
|
|
36
|
-
Two use cases are implemented:
|
37
|
-
|
36
|
+
Two use cases are implemented:
|
37
|
+
|
38
38
|
1. Retrieving suggest_markup data and enhancing the text.
|
39
39
|
|
40
40
|
```ruby
|
41
41
|
Zemanta::Markup.fetch(text, opts = {})
|
42
42
|
```
|
43
|
-
|
43
|
+
|
44
44
|
It will fetch suggest_markup data for passed text from Zemanta api and wrap it in custom classes.
|
45
45
|
|
46
|
-
|
46
|
+
|
47
47
|
2. Enhancing the text with links:
|
48
|
-
|
48
|
+
|
49
49
|
```ruby
|
50
50
|
Zemanta::Enhancer.new(text, opts = {}).enhance
|
51
51
|
```
|
52
52
|
|
53
53
|
Options:
|
54
|
-
no_duplicates (default: false) - ensures links are used once
|
55
|
-
|
56
|
-
|
54
|
+
* `no_duplicates` (default: false) - ensures links are used once
|
55
|
+
* `skip` (default: nil) - URL regexp of the links that should be skipped
|
56
|
+
* `strip_query_string` - removes the query string part of the suggested links urls
|
57
|
+
|
57
58
|
It will fetch suggest_markup data for given text and for every returned link it will wrap the keyword with this link.
|
58
59
|
Then it will return the updated text.
|
59
60
|
|
@@ -95,6 +96,7 @@ end
|
|
95
96
|
|
96
97
|
## Changelog
|
97
98
|
|
99
|
+
0.0.6 - Added #skip and #strip_query_string options to enhancer
|
98
100
|
0.0.5 - Added #no_duplicates option to Enhancer
|
99
101
|
0.0.4 - Fixed yajl require in gemspec
|
100
102
|
0.0.3 - Added Enhancer class, used yajl for json parsing, changed external gem api.
|
data/lib/zemanta/enhancer.rb
CHANGED
@@ -3,6 +3,8 @@ module Zemanta
|
|
3
3
|
# Options:
|
4
4
|
#
|
5
5
|
# no_duplicates (default: false) - ensures links are used once
|
6
|
+
# skip - regexp for URLs not to be hot-linked
|
7
|
+
# strip_query_string - remove the query string from urls
|
6
8
|
#
|
7
9
|
def initialize(text, opts = {})
|
8
10
|
@text = text
|
@@ -18,7 +20,15 @@ module Zemanta
|
|
18
20
|
|
19
21
|
def enhance!
|
20
22
|
words_to_anchor(@opts).each do |dictionary|
|
21
|
-
|
23
|
+
url = dictionary[:link]
|
24
|
+
|
25
|
+
if @opts[:skip]
|
26
|
+
next if url =~ @opts[:skip]
|
27
|
+
end
|
28
|
+
|
29
|
+
url = strip_query_string(url) if @opts[:strip_query_string]
|
30
|
+
|
31
|
+
link = "<a href=#{url}>#{dictionary[:word]}</a>"
|
22
32
|
if @opts[:no_duplicates]
|
23
33
|
@text.sub!(dictionary[:word], link)
|
24
34
|
else
|
@@ -36,5 +46,10 @@ module Zemanta
|
|
36
46
|
def suggest_markup(opts = {})
|
37
47
|
Markup.fetch(@text, opts)
|
38
48
|
end
|
49
|
+
|
50
|
+
def strip_query_string(url)
|
51
|
+
return nil unless url
|
52
|
+
url.gsub(/\?.*$/, '')
|
53
|
+
end
|
39
54
|
end
|
40
55
|
end
|
data/lib/zemanta/version.rb
CHANGED
@@ -22,5 +22,29 @@ describe Zemanta::Enhancer do
|
|
22
22
|
output.scan('<a').should have(1).elements
|
23
23
|
end
|
24
24
|
end
|
25
|
+
|
26
|
+
describe "skip option" do
|
27
|
+
it "skips links whose URL matches a user-provided regexp" do
|
28
|
+
stub_zemanta_enhancer!
|
29
|
+
output = Zemanta::Enhancer.new(input, skip: /machu_picchu/).enhance
|
30
|
+
output.scan('<a').should have(1).elements
|
31
|
+
end
|
32
|
+
|
33
|
+
it "doesn't affect the links that don't match thr user-provided regexp" do
|
34
|
+
stub_zemanta_enhancer!
|
35
|
+
output = Zemanta::Enhancer.new(input, skip: /macchu_picchu/).enhance
|
36
|
+
output.scan('<a').should have(2).elements
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "strip_query_string" do
|
41
|
+
it "strips the query string from the suggested urls" do
|
42
|
+
text = "Hello foo bar"
|
43
|
+
suggestions = [{ word: 'foo', link: "http://bar.com/foo?bar=123" }]
|
44
|
+
Zemanta::Enhancer.any_instance.stub(words_to_anchor: suggestions)
|
45
|
+
output = Zemanta::Enhancer.new(text, strip_query_string: true).enhance
|
46
|
+
output.should == "Hello <a href=http://bar.com/foo>foo</a> bar"
|
47
|
+
end
|
48
|
+
end
|
25
49
|
end
|
26
50
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zemanta_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-07-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: typhoeus
|