stringex 2.1.2 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.rdoc +2 -0
- data/VERSION +1 -1
- data/lib/stringex/configuration/acts_as_url.rb +2 -1
- data/lib/stringex/configuration/string_extensions.rb +2 -1
- data/lib/stringex/string_extensions.rb +24 -3
- data/stringex.gemspec +2 -2
- data/test/unit/acts_as_url_integration_test.rb +18 -0
- data/test/unit/localization/da_test.rb +1 -1
- data/test/unit/string_extensions_test.rb +7 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OGQxMmNjMmIwMzU1MzY0YzdmMWEzZjhiYjI0MTk5ZGE4M2ZiODY0Mg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YzkxMzZiYTBmZWM0YWUyYTMyYWY0MDgzNDRhM2IxNmJjZWM2MDZmOQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MmMxMmRmNTg3NGY0Nzg1M2Q2MWM4NTk5M2I0NjAxMjgwNmIwZjljZmEzZmNj
|
10
|
+
MGE4MWYwOGNjYTRkMzM5NzRhMTdjMzI3MWVhNzY4NzBkNTQ2ZTM0YWEzYzE1
|
11
|
+
ZmM1YWY2NmY0MzM5ZDk4MTc2MjQzNWVkZTU5NDNmNjZkZmNlMDM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MTA2MjBkMTVkYWVlMzM0MDA4Y2JmODNjMGM4NWM5MjBkZjM3YmJiMmFkZjA4
|
14
|
+
YjQyNDBkOWMwMDE3YmI4ZDkwNjE1ZWQ2ODdjMzMzZTU4OTBmZjE1NDU2NTQ0
|
15
|
+
OGY4ZDA2MWU2MjUyYWM1NTZhNTNjZDRmOTk5NDYwZjcxNTQyMzY=
|
data/README.rdoc
CHANGED
@@ -28,6 +28,8 @@ which will populate the <tt>url</tt> attribute on the object with the converted
|
|
28
28
|
if you are routing solely on the generated slug as you will no longer
|
29
29
|
be guaranteed to lookup the expected record based on a duplicate slug.</em>
|
30
30
|
<tt>:limit</tt>:: If set, will limit length of url generated. Default is nil.
|
31
|
+
<tt>:truncate_words</tt>:: Used with :limit. If set to false, the url will be truncated to the last
|
32
|
+
whole word before the limit was reached. Default is true.
|
31
33
|
|
32
34
|
In order to use the generated url attribute, you will probably want to override <tt>to_param</tt> like so, in your Model:
|
33
35
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.2.0
|
@@ -94,10 +94,31 @@ module Stringex
|
|
94
94
|
end
|
95
95
|
|
96
96
|
# Returns the string limited in size to the value of limit.
|
97
|
-
def limit(limit = nil)
|
98
|
-
limit.nil?
|
97
|
+
def limit(limit = nil, truncate_words = true)
|
98
|
+
if limit.nil?
|
99
|
+
self
|
100
|
+
else
|
101
|
+
truncate_words == false ? self.whole_word_limit(limit) : self[0...limit]
|
102
|
+
end
|
99
103
|
end
|
100
104
|
|
105
|
+
def whole_word_limit(limit)
|
106
|
+
whole_words = []
|
107
|
+
words = self.split('-')
|
108
|
+
|
109
|
+
words.each do |word|
|
110
|
+
if word.size > limit
|
111
|
+
break
|
112
|
+
else
|
113
|
+
whole_words << word
|
114
|
+
limit -= (word.size + 1)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
whole_words.join('-')
|
119
|
+
end
|
120
|
+
|
121
|
+
|
101
122
|
# Performs multiple text manipulations. Essentially a shortcut for typing them all. View source
|
102
123
|
# below to see which methods are run.
|
103
124
|
def remove_formatting(options = {})
|
@@ -167,7 +188,7 @@ module Stringex
|
|
167
188
|
dummy = remove_formatting(options).
|
168
189
|
replace_whitespace(whitespace_replacement_token).
|
169
190
|
collapse("-").
|
170
|
-
limit(options[:limit])
|
191
|
+
limit(options[:limit], options[:truncate_words])
|
171
192
|
dummy.downcase! unless options[:force_downcase] == false
|
172
193
|
dummy
|
173
194
|
end
|
data/stringex.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "stringex"
|
8
|
-
s.version = "2.
|
8
|
+
s.version = "2.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Russell Norris"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2014-02-03"
|
13
13
|
s.description = "Some [hopefully] useful extensions to Ruby's String class. Stringex is made up of three libraries: ActsAsUrl [permalink solution with better character translation], Unidecoder [Unicode to ASCII transliteration], and StringExtensions [miscellaneous helper methods for the String class]."
|
14
14
|
s.email = "rsl@luckysneaks.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -326,4 +326,22 @@ class ActsAsUrlIntegrationTest < Test::Unit::TestCase
|
|
326
326
|
@doc = Document.create(:title => "a b/c d")
|
327
327
|
assert_equal "a-b/c-d", @doc.url
|
328
328
|
end
|
329
|
+
|
330
|
+
def test_should_truncate_words_by_default
|
331
|
+
Document.class_eval do
|
332
|
+
acts_as_url :title, :limit => 20
|
333
|
+
end
|
334
|
+
|
335
|
+
@doc = Document.create(:title => "title with many whole words")
|
336
|
+
assert_equal 'title-with-many-whol', @doc.url
|
337
|
+
end
|
338
|
+
|
339
|
+
def test_should_not_truncate_words
|
340
|
+
Document.class_eval do
|
341
|
+
acts_as_url :title, :limit => 20, :truncate_words => false
|
342
|
+
end
|
343
|
+
|
344
|
+
@doc = Document.create(:title => "title with many whole words")
|
345
|
+
assert_equal 'title-with-many', @doc.url
|
346
|
+
end
|
329
347
|
end
|
@@ -24,7 +24,7 @@ class DanishYAMLLocalizationTest < Test::Unit::TestCase
|
|
24
24
|
"100%" => "100 procent",
|
25
25
|
"cost+tax" => "cost plus tax",
|
26
26
|
"batman/robin fan fiction" => "batman skråstreg robin fan fiction",
|
27
|
-
"dial *69" => "dial stjerne 69"
|
27
|
+
"dial *69" => "dial stjerne 69"
|
28
28
|
# " i leave whitespace on ends unchanged " => " i leave whitespace on ends unchanged "
|
29
29
|
}.each do |original, converted|
|
30
30
|
define_method "test_character_conversion: '#{original}'" do
|
@@ -97,6 +97,11 @@ class StringExtensionsTest < Test::Unit::TestCase
|
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
100
|
+
def test_to_url_with_danish_characters
|
101
|
+
Stringex::Localization.locale = :da
|
102
|
+
assert_equal "roedgroed-med-floede", "Rødgrød med fløde".to_url
|
103
|
+
end
|
104
|
+
|
100
105
|
def test_to_url_with_excludes
|
101
106
|
assert_equal "So Fucking Special", "So Fucking Special".to_url(:exclude => "So Fucking Special")
|
102
107
|
end
|
@@ -154,11 +159,11 @@ class StringExtensionsTest < Test::Unit::TestCase
|
|
154
159
|
|
155
160
|
def test_localized_vulgar_fractions_conversion
|
156
161
|
Stringex::Localization.backend = :internal
|
157
|
-
Stringex::Localization.store_translations :
|
162
|
+
Stringex::Localization.store_translations :da, :vulgar_fractions, {
|
158
163
|
:one_fourth => "en fjerdedel",
|
159
164
|
:half => "en halv"
|
160
165
|
}
|
161
|
-
Stringex::Localization.locale = :
|
166
|
+
Stringex::Localization.locale = :da
|
162
167
|
|
163
168
|
{
|
164
169
|
"¼" => "en fjerdedel",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stringex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Russell Norris
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|