peppercorn 0.0.2 → 0.0.3
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/CHANGELOG.md +8 -2
- data/README.md +20 -0
- data/lib/peppercorn/string.rb +9 -3
- data/lib/peppercorn/version.rb +1 -1
- data/lib/peppercorn/xml/node.rb +2 -2
- metadata +14 -14
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
Changelog
|
2
2
|
===
|
3
3
|
|
4
|
-
* 0.0.
|
5
|
-
*
|
4
|
+
* 0.0.3 2011/11/04
|
5
|
+
* Renamed String#truncate to String#peppercorn_truncate so peppercorn will work with rails
|
6
|
+
|
7
|
+
* 0.0.2 2011/10/28
|
8
|
+
* Some refactoring and Added Nokogiri::XML::Node#appendable_node
|
9
|
+
|
10
|
+
* 0.0.1 2011/10/25
|
11
|
+
* Initial Release
|
data/README.md
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
About Peppercorn
|
2
|
+
================
|
3
|
+
|
4
|
+
Peppercorn aims to be a simple and easy to use library for truncating HTML properly. It works using the
|
5
|
+
fast Nokogiri ruby gem to parse a string of HTML into a document fragment. Then steppes through that document's
|
6
|
+
children until it has counted the desired number of words.
|
7
|
+
|
8
|
+
Usage
|
9
|
+
=====
|
10
|
+
|
11
|
+
The simple case is a simple string: "Hello World"
|
12
|
+
"Hello World".truncate_html(1) # => "Hello…"
|
13
|
+
|
14
|
+
Of course if you don't like "…" on the end you could use something else:
|
15
|
+
"Hello World".truncate_html(1, :tail => " All") # => "Hello All"
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
{include:file:CHANGELOG.md}
|
20
|
+
|
1
21
|
License
|
2
22
|
=======
|
3
23
|
|
data/lib/peppercorn/string.rb
CHANGED
@@ -5,12 +5,12 @@ module Peppercorn
|
|
5
5
|
module String
|
6
6
|
|
7
7
|
# Truncate a string to "length" words
|
8
|
-
# @since 0.0.
|
8
|
+
# @since 0.0.3
|
9
9
|
# @param [Fixnum] length the number of word to truncate on
|
10
10
|
# @param [Hash] opts hash of truncation options
|
11
11
|
# @option opts [#to_s, nil] :tail ("…") the object to append to the truncated string
|
12
12
|
# @return [String] the truncated string
|
13
|
-
def
|
13
|
+
def peppercorn_truncate(length=30, opts={})
|
14
14
|
opts = Peppercorn::DEFAULT_TRUNCATION_OPTIONS.merge(opts)
|
15
15
|
tokens = scan(/\W*\w+\W*/)
|
16
16
|
string_tokens = tokens[0...length]
|
@@ -24,12 +24,18 @@ module Peppercorn
|
|
24
24
|
end
|
25
25
|
return opts[:return_hash] ? {:text => string, :overran => overran, :count => [length, tokens.size].min} : string
|
26
26
|
end
|
27
|
+
|
28
|
+
# Alias for #peppercorn_truncate
|
29
|
+
# @since 0.0.1
|
30
|
+
def truncate(length=30, opts={})
|
31
|
+
peppercorn_truncate(length, opts)
|
32
|
+
end
|
27
33
|
|
28
34
|
# Strips all whitespaces from the end of the string
|
29
35
|
# @since 0.0.1
|
30
36
|
# @return [String] the stripped version of the string
|
31
37
|
def strip_end
|
32
|
-
return
|
38
|
+
return rstrip
|
33
39
|
end
|
34
40
|
|
35
41
|
# Returns the string with all HTML tags removed
|
data/lib/peppercorn/version.rb
CHANGED
data/lib/peppercorn/xml/node.rb
CHANGED
@@ -17,7 +17,7 @@ module Peppercorn
|
|
17
17
|
overran = false
|
18
18
|
|
19
19
|
if doc.text?
|
20
|
-
result = content.
|
20
|
+
result = content.peppercorn_truncate(length, opts.merge(Peppercorn::TRUNCATE_CHILD_OPTS))
|
21
21
|
target = result[:text]
|
22
22
|
count = result[:count]
|
23
23
|
overran = result[:overran]
|
@@ -38,7 +38,7 @@ module Peppercorn
|
|
38
38
|
|
39
39
|
if opts[:strip]
|
40
40
|
last_text_node = target.last_text_node
|
41
|
-
last_text_node.content = last_text_node.content.
|
41
|
+
last_text_node.content = last_text_node.content.strip_end if last_text_node
|
42
42
|
end
|
43
43
|
|
44
44
|
if !opts[:tail].to_s.empty? and overran
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: peppercorn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-11-04 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: yard
|
16
|
-
requirement: &
|
16
|
+
requirement: &70250050848180 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0.7'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70250050848180
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &70250050847680 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '2.7'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70250050847680
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: guard-rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70250050847180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0.5'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70250050847180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: guard-yard
|
49
|
-
requirement: &
|
49
|
+
requirement: &70250050846720 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '1.0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70250050846720
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rdiscount
|
60
|
-
requirement: &
|
60
|
+
requirement: &70250050846260 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '1.6'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70250050846260
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: nokogiri
|
71
|
-
requirement: &
|
71
|
+
requirement: &70250050845800 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '1.5'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70250050845800
|
80
80
|
description: A simple gem to truncate HTML, with other features coming in the future.
|
81
81
|
email:
|
82
82
|
- wwest81@gmail.com
|