speaking_url 0.0.2 → 0.1.0

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.rdoc CHANGED
@@ -48,7 +48,14 @@ instead of modifying the field directly.
48
48
 
49
49
  @person.add_mapping('/some/new/mapping')
50
50
 
51
+ === Core Extensions
51
52
 
53
+ The gem comes with some helpful inflection methods for the String class.
54
+
55
+ * +urlify+ : replaces all white space and special characters with dashes
56
+ * +unumlaut+ : converts German Umlauts to their ASCII counterparts
57
+
58
+ Additionally, the methods +upcase+ and +downcase+ are made Umlaut aware.
52
59
 
53
60
  == Configuring routes
54
61
 
@@ -0,0 +1,45 @@
1
+ class String
2
+
3
+ alias_method :original_downcase, :downcase
4
+ alias_method :original_upcase, :upcase
5
+
6
+ def upcase
7
+ translations = [ ["ä", "Ä"], ["ö", "Ö"], ["ü", "Ü"], ["ß", "SS"] ]
8
+ res = self.original_upcase
9
+ translations.each do |f,t|
10
+ res.gsub!(f,t)
11
+ end
12
+ res
13
+ end
14
+
15
+ def downcase
16
+ translations = [ ["Ä", "ä"], ["Ö", "ö"], ["Ü", "ü"] ]
17
+ res = self.original_downcase
18
+ translations.each do |f,t|
19
+ res.gsub!(f,t)
20
+ end
21
+ res
22
+ end
23
+
24
+ # Replaces all white space and special characters of a String with dashes, to make
25
+ # it a valid url segment:
26
+ #
27
+ # "** Dr. Jekyll and Mr. Hyde ++" # => "Dr-Jekyll-and-Mr-Hyde"
28
+ def urlify
29
+ self.split(/\W+/).reject(&:blank?).join('-')
30
+ end
31
+
32
+ # Romanizes all German Umlaut characters
33
+ #
34
+ # "Füße".unumlaut # => "Fuesse"
35
+ def unumlaut
36
+ res = self
37
+ translations = [ ["Ä", "AE"], ["ä", "ae"], ["Ö", "OE"], ["ö", "oe"], ["Ü", "UE"], ["ü", "ue"], ["ß", "ss"] ]
38
+ translations.each do |f,t|
39
+ res.gsub!(f,t)
40
+ end
41
+ res
42
+ end
43
+
44
+
45
+ end
@@ -1,3 +1,3 @@
1
1
  module SpeakingUrl
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/speaking_url.rb CHANGED
@@ -2,6 +2,7 @@ require 'rails'
2
2
  #require 'active_support/dependencies'
3
3
 
4
4
  module SpeakingUrl
5
+ require 'speaking_url/core_ext/string/inflections'
5
6
  require 'speaking_url/routing_extensions'
6
7
  autoload :MongoResource, 'speaking_url/mongo_resource'
7
8
  end
@@ -0,0 +1,42 @@
1
+
2
+ require 'test_helper'
3
+
4
+ class StringExtUrlify < Test::Unit::TestCase
5
+
6
+ def test_space_delimited
7
+ assert_equal 'Firstname-Lastname', "Firstname Lastname".urlify
8
+ end
9
+
10
+ def test_leading_and_trailing_space
11
+ assert_equal 'Dr-Firstname-Lastname', " Dr. Firstname Lastname ".urlify
12
+ end
13
+
14
+ def test_leading_and_trailing_special_characters
15
+ assert_equal 'Dr-Firstname-Lastname-1', "*** Dr. Firstname Lastname #1 !!!".urlify
16
+ end
17
+
18
+ end
19
+
20
+ class StringExtUnumlaut < Test::Unit::TestCase
21
+
22
+ def test_replace_umlaute_with_ascii
23
+ assert_equal "AEOEUESSaeoeuess","ÄÖÜSSäöüß".unumlaut
24
+ end
25
+
26
+ end
27
+
28
+ class StringExtUpAndDowncase < Test::Unit::TestCase
29
+
30
+ def test_make_umlaut_uppercase
31
+ assert_equal "ÄÖÜSS", "äöüß".upcase
32
+ end
33
+
34
+ def test_make_umlaute_downcase
35
+ assert_equal "äöüss","ÄÖÜSS".downcase
36
+ end
37
+
38
+ end
39
+
40
+
41
+
42
+
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 2
10
- version: 0.0.2
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kai Rubarth
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-23 00:00:00 -04:00
18
+ date: 2011-06-28 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -61,10 +61,12 @@ files:
61
61
  - README.rdoc
62
62
  - Rakefile
63
63
  - lib/speaking_url.rb
64
+ - lib/speaking_url/core_ext/string/inflections.rb
64
65
  - lib/speaking_url/mongo_resource.rb
65
66
  - lib/speaking_url/routing_extensions.rb
66
67
  - lib/speaking_url/version.rb
67
68
  - speaking_url.gemspec
69
+ - test/core_ext/string_extensions_test.rb
68
70
  - test/dummy/Rakefile
69
71
  - test/dummy/app/controllers/application_controller.rb
70
72
  - test/dummy/app/controllers/articles_controller.rb
@@ -136,6 +138,7 @@ signing_key:
136
138
  specification_version: 3
137
139
  summary: allows arbitrary url for resources and facilitates seo-friendly changing of urls.
138
140
  test_files:
141
+ - test/core_ext/string_extensions_test.rb
139
142
  - test/dummy/Rakefile
140
143
  - test/dummy/app/controllers/application_controller.rb
141
144
  - test/dummy/app/controllers/articles_controller.rb