friendly_id 1.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +81 -0
  3. data/MIT-LICENSE +19 -0
  4. data/Manifest.txt +53 -0
  5. data/README.rdoc +313 -0
  6. data/Rakefile +43 -0
  7. data/coverage/index.html +409 -0
  8. data/coverage/lib-friendly_id-non_sluggable_class_methods_rb.html +646 -0
  9. data/coverage/lib-friendly_id-non_sluggable_instance_methods_rb.html +638 -0
  10. data/coverage/lib-friendly_id-shoulda_macros_rb.html +641 -0
  11. data/coverage/lib-friendly_id-sluggable_class_methods_rb.html +714 -0
  12. data/coverage/lib-friendly_id-sluggable_instance_methods_rb.html +710 -0
  13. data/coverage/lib-friendly_id-string_helpers_rb.html +685 -0
  14. data/coverage/lib-friendly_id_rb.html +665 -0
  15. data/coverage/lib-slug_rb.html +695 -0
  16. data/coverage/rails-init_rb.html +606 -0
  17. data/friendly_id.gemspec +38 -0
  18. data/generators/friendly_id/friendly_id_generator.rb +12 -0
  19. data/generators/friendly_id/templates/create_slugs.rb +18 -0
  20. data/generators/friendly_id_20_upgrade/friendly_id_20_upgrade_generator.rb +11 -0
  21. data/generators/friendly_id_20_upgrade/templates/upgrade_friendly_id_to_20.rb +19 -0
  22. data/init.rb +1 -0
  23. data/lib/friendly_id.rb +61 -0
  24. data/lib/friendly_id/non_sluggable_class_methods.rb +41 -0
  25. data/lib/friendly_id/non_sluggable_instance_methods.rb +33 -0
  26. data/lib/friendly_id/shoulda_macros.rb +36 -0
  27. data/lib/friendly_id/slug.rb +90 -0
  28. data/lib/friendly_id/sluggable_class_methods.rb +109 -0
  29. data/lib/friendly_id/sluggable_instance_methods.rb +105 -0
  30. data/lib/friendly_id/version.rb +8 -0
  31. data/lib/tasks/friendly_id.rake +48 -0
  32. data/lib/tasks/friendly_id.rb +1 -0
  33. data/test/database.yml +3 -0
  34. data/test/fixtures/countries.yml +4 -0
  35. data/test/fixtures/country.rb +4 -0
  36. data/test/fixtures/people.yml +7 -0
  37. data/test/fixtures/person.rb +6 -0
  38. data/test/fixtures/post.rb +3 -0
  39. data/test/fixtures/posts.yml +19 -0
  40. data/test/fixtures/slugs.yml +45 -0
  41. data/test/fixtures/user.rb +3 -0
  42. data/test/fixtures/users.yml +7 -0
  43. data/test/non_slugged_test.rb +63 -0
  44. data/test/rails/2.x/app/controllers/application.rb +0 -0
  45. data/test/rails/2.x/config/boot.rb +109 -0
  46. data/test/rails/2.x/config/database.yml +3 -0
  47. data/test/rails/2.x/config/environment.rb +7 -0
  48. data/test/rails/2.x/config/environments/test.rb +6 -0
  49. data/test/rails/2.x/config/routes.rb +0 -0
  50. data/test/schema.rb +38 -0
  51. data/test/scoped_model_test.rb +21 -0
  52. data/test/slug_test.rb +87 -0
  53. data/test/sluggable_test.rb +181 -0
  54. data/test/test_helper.rb +35 -0
  55. metadata +155 -0
  56. metadata.gz.sig +1 -0
data/Rakefile ADDED
@@ -0,0 +1,43 @@
1
+ require 'hoe'
2
+
3
+ require File.join(File.dirname(__FILE__), 'lib', 'friendly_id', 'version')
4
+
5
+ Hoe.new("friendly_id", FriendlyId::Version::STRING) do |p|
6
+ p.rubyforge_name = "friendly-id"
7
+ p.author = ['Norman Clarke', 'Adrian Mugnolo', 'Emilio Tagua']
8
+ p.email = ['norman@randomba.org', 'adrian@randomba.org', 'miloops@gmail.com']
9
+ p.summary = "A comprehensive slugging and pretty-URL plugin for Ruby on Rails."
10
+ p.description = 'A comprehensive slugging and pretty-URL plugin for Ruby on Rails.'
11
+ p.url = 'http://randomba.org'
12
+ p.need_tar = true
13
+ p.need_zip = true
14
+ p.test_globs = ['test/**/*_test.rb']
15
+ p.extra_deps << ['unicode', '>= 0.1']
16
+ p.rdoc_pattern = /^(lib|bin|ext)|txt|rdoc$/
17
+ changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
18
+ p.remote_rdoc_dir = ""
19
+ end
20
+
21
+ desc "Run RCov"
22
+ task :rcov do
23
+ run_coverage Dir["test/**/*_test.rb"]
24
+ end
25
+
26
+ def run_coverage(files)
27
+ rm_f "coverage"
28
+ rm_f "coverage.data"
29
+ if files.length == 0
30
+ puts "No files were specified for testing"
31
+ return
32
+ end
33
+ files = files.join(" ")
34
+ if PLATFORM =~ /darwin/
35
+ exclude = '--exclude "gems/"'
36
+ else
37
+ exclude = '--exclude "rubygems"'
38
+ end
39
+ rcov = "rcov -Ilib:test --sort coverage --text-report #{exclude} --no-validator-links"
40
+ cmd = "#{rcov} #{files}"
41
+ puts cmd
42
+ sh cmd
43
+ end
@@ -0,0 +1,409 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'><head><title>C0 code coverage information</title>
3
+ <style type='text/css'>body { background-color: rgb(240, 240, 245); }</style>
4
+ <style type='text/css'>span.cross-ref-title {
5
+ font-size: 140%;
6
+ }
7
+ span.cross-ref a {
8
+ text-decoration: none;
9
+ }
10
+ span.cross-ref {
11
+ background-color:#f3f7fa;
12
+ border: 1px dashed #333;
13
+ margin: 1em;
14
+ padding: 0.5em;
15
+ overflow: hidden;
16
+ }
17
+ a.crossref-toggle {
18
+ text-decoration: none;
19
+ }
20
+ span.marked0 {
21
+ background-color: rgb(185, 210, 200);
22
+ display: block;
23
+ }
24
+ span.marked1 {
25
+ background-color: rgb(190, 215, 205);
26
+ display: block;
27
+ }
28
+ span.inferred0 {
29
+ background-color: rgb(255, 255, 240);
30
+ display: block;
31
+ }
32
+ span.inferred1 {
33
+ background-color: rgb(255, 255, 240);
34
+ display: block;
35
+ }
36
+ span.uncovered0 {
37
+ background-color: rgb(225, 110, 110);
38
+ display: block;
39
+ }
40
+ span.uncovered1 {
41
+ background-color: rgb(235, 120, 120);
42
+ display: block;
43
+ }
44
+ span.overview {
45
+ border-bottom: 8px solid black;
46
+ }
47
+ div.overview {
48
+ border-bottom: 8px solid black;
49
+ }
50
+ body {
51
+ font-family: verdana, arial, helvetica;
52
+ }
53
+ div.footer {
54
+ font-size: 68%;
55
+ margin-top: 1.5em;
56
+ }
57
+ h1, h2, h3, h4, h5, h6 {
58
+ margin-bottom: 0.5em;
59
+ }
60
+ h5 {
61
+ margin-top: 0.5em;
62
+ }
63
+ .hidden {
64
+ display: none;
65
+ }
66
+ div.separator {
67
+ height: 10px;
68
+ }
69
+ /* Commented out for better readability, esp. on IE */
70
+ /*
71
+ table tr td, table tr th {
72
+ font-size: 68%;
73
+ }
74
+ td.value table tr td {
75
+ font-size: 11px;
76
+ }
77
+ */
78
+ table.percent_graph {
79
+ height: 12px;
80
+ border: #808080 1px solid;
81
+ empty-cells: show;
82
+ }
83
+ table.percent_graph td.covered {
84
+ height: 10px;
85
+ background: #00f000;
86
+ }
87
+ table.percent_graph td.uncovered {
88
+ height: 10px;
89
+ background: #e00000;
90
+ }
91
+ table.percent_graph td.NA {
92
+ height: 10px;
93
+ background: #eaeaea;
94
+ }
95
+ table.report {
96
+ border-collapse: collapse;
97
+ width: 100%;
98
+ }
99
+ table.report td.heading {
100
+ background: #dcecff;
101
+ border: #d0d0d0 1px solid;
102
+ font-weight: bold;
103
+ text-align: center;
104
+ }
105
+ table.report td.heading:hover {
106
+ background: #c0ffc0;
107
+ }
108
+ table.report td.text {
109
+ border: #d0d0d0 1px solid;
110
+ }
111
+ table.report td.value,
112
+ table.report td.lines_total,
113
+ table.report td.lines_code {
114
+ text-align: right;
115
+ border: #d0d0d0 1px solid;
116
+ }
117
+ table.report tr.light {
118
+ background-color: rgb(240, 240, 245);
119
+ }
120
+ table.report tr.dark {
121
+ background-color: rgb(230, 230, 235);
122
+ }
123
+ </style>
124
+ <script type='text/javascript'>
125
+ // <![CDATA[
126
+ function toggleCode( id ) {
127
+ if ( document.getElementById )
128
+ elem = document.getElementById( id );
129
+ else if ( document.all )
130
+ elem = eval( "document.all." + id );
131
+ else
132
+ return false;
133
+
134
+ elemStyle = elem.style;
135
+
136
+ if ( elemStyle.display != "block" ) {
137
+ elemStyle.display = "block"
138
+ } else {
139
+ elemStyle.display = "none"
140
+ }
141
+
142
+ return true;
143
+ }
144
+
145
+ // Make cross-references hidden by default
146
+ document.writeln( "<style type=\"text/css\">span.cross-ref { display: none }</style>" )
147
+ // ]]>
148
+ </script>
149
+ </head>
150
+ <body><h3>C0 code coverage information</h3>
151
+ <p>Generated on Tue Dec 16 16:57:16 -0200 2008 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.3</a>
152
+ </p>
153
+ <hr/>
154
+ <table class='report'><thead><tr><td class='heading'>Name</td>
155
+ <td class='heading'>Total lines</td>
156
+ <td class='heading'>Lines of code</td>
157
+ <td class='heading'>Total coverage</td>
158
+ <td class='heading'>Code coverage</td>
159
+ </tr>
160
+ </thead>
161
+ <tbody><tr class='light'><td>TOTAL</td>
162
+ <td class='lines_total'><tt>475</tt>
163
+ </td>
164
+ <td class='lines_code'><tt>322</tt>
165
+ </td>
166
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>93.3%</tt>
167
+ &nbsp;</td>
168
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='93'/>
169
+ <td class='uncovered' width='7'/>
170
+ </tr>
171
+ </table>
172
+ </td>
173
+ </tr>
174
+ </table>
175
+ </td>
176
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>91.0%</tt>
177
+ &nbsp;</td>
178
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='91'/>
179
+ <td class='uncovered' width='9'/>
180
+ </tr>
181
+ </table>
182
+ </td>
183
+ </tr>
184
+ </table>
185
+ </td>
186
+ </tr>
187
+ <tr class='dark'><td><a href='lib-friendly_id-shoulda_macros_rb.html'>lib/friendly_id/shoulda_macros.rb</a>
188
+ </td>
189
+ <td class='lines_total'><tt>36</tt>
190
+ </td>
191
+ <td class='lines_code'><tt>28</tt>
192
+ </td>
193
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>22.2%</tt>
194
+ &nbsp;</td>
195
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='22'/>
196
+ <td class='uncovered' width='78'/>
197
+ </tr>
198
+ </table>
199
+ </td>
200
+ </tr>
201
+ </table>
202
+ </td>
203
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>10.7%</tt>
204
+ &nbsp;</td>
205
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='11'/>
206
+ <td class='uncovered' width='89'/>
207
+ </tr>
208
+ </table>
209
+ </td>
210
+ </tr>
211
+ </table>
212
+ </td>
213
+ </tr>
214
+ <tr class='light'><td><a href='lib-slug_rb.html'>lib/slug.rb</a>
215
+ </td>
216
+ <td class='lines_total'><tt>90</tt>
217
+ </td>
218
+ <td class='lines_code'><tt>54</tt>
219
+ </td>
220
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>95.6%</tt>
221
+ &nbsp;</td>
222
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='96'/>
223
+ <td class='uncovered' width='4'/>
224
+ </tr>
225
+ </table>
226
+ </td>
227
+ </tr>
228
+ </table>
229
+ </td>
230
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>92.6%</tt>
231
+ &nbsp;</td>
232
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='93'/>
233
+ <td class='uncovered' width='7'/>
234
+ </tr>
235
+ </table>
236
+ </td>
237
+ </tr>
238
+ </table>
239
+ </td>
240
+ </tr>
241
+ <tr class='dark'><td><a href='lib-friendly_id_rb.html'>lib/friendly_id.rb</a>
242
+ </td>
243
+ <td class='lines_total'><tt>60</tt>
244
+ </td>
245
+ <td class='lines_code'><tt>36</tt>
246
+ </td>
247
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
248
+ &nbsp;</td>
249
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
250
+ <td class='uncovered' width='0'/>
251
+ </tr>
252
+ </table>
253
+ </td>
254
+ </tr>
255
+ </table>
256
+ </td>
257
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>100.0%</tt>
258
+ &nbsp;</td>
259
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
260
+ <td class='uncovered' width='0'/>
261
+ </tr>
262
+ </table>
263
+ </td>
264
+ </tr>
265
+ </table>
266
+ </td>
267
+ </tr>
268
+ <tr class='light'><td><a href='lib-friendly_id-non_sluggable_instance_methods_rb.html'>lib/friendly_id/non_sluggable_instance_methods.rb</a>
269
+ </td>
270
+ <td class='lines_total'><tt>33</tt>
271
+ </td>
272
+ <td class='lines_code'><tt>21</tt>
273
+ </td>
274
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
275
+ &nbsp;</td>
276
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
277
+ <td class='uncovered' width='0'/>
278
+ </tr>
279
+ </table>
280
+ </td>
281
+ </tr>
282
+ </table>
283
+ </td>
284
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>100.0%</tt>
285
+ &nbsp;</td>
286
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
287
+ <td class='uncovered' width='0'/>
288
+ </tr>
289
+ </table>
290
+ </td>
291
+ </tr>
292
+ </table>
293
+ </td>
294
+ </tr>
295
+ <tr class='dark'><td><a href='lib-friendly_id-non_sluggable_class_methods_rb.html'>lib/friendly_id/non_sluggable_class_methods.rb</a>
296
+ </td>
297
+ <td class='lines_total'><tt>41</tt>
298
+ </td>
299
+ <td class='lines_code'><tt>32</tt>
300
+ </td>
301
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
302
+ &nbsp;</td>
303
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
304
+ <td class='uncovered' width='0'/>
305
+ </tr>
306
+ </table>
307
+ </td>
308
+ </tr>
309
+ </table>
310
+ </td>
311
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>100.0%</tt>
312
+ &nbsp;</td>
313
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
314
+ <td class='uncovered' width='0'/>
315
+ </tr>
316
+ </table>
317
+ </td>
318
+ </tr>
319
+ </table>
320
+ </td>
321
+ </tr>
322
+ <tr class='light'><td><a href='lib-friendly_id-sluggable_instance_methods_rb.html'>lib/friendly_id/sluggable_instance_methods.rb</a>
323
+ </td>
324
+ <td class='lines_total'><tt>105</tt>
325
+ </td>
326
+ <td class='lines_code'><tt>74</tt>
327
+ </td>
328
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
329
+ &nbsp;</td>
330
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
331
+ <td class='uncovered' width='0'/>
332
+ </tr>
333
+ </table>
334
+ </td>
335
+ </tr>
336
+ </table>
337
+ </td>
338
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>100.0%</tt>
339
+ &nbsp;</td>
340
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
341
+ <td class='uncovered' width='0'/>
342
+ </tr>
343
+ </table>
344
+ </td>
345
+ </tr>
346
+ </table>
347
+ </td>
348
+ </tr>
349
+ <tr class='dark'><td><a href='lib-friendly_id-sluggable_class_methods_rb.html'>lib/friendly_id/sluggable_class_methods.rb</a>
350
+ </td>
351
+ <td class='lines_total'><tt>109</tt>
352
+ </td>
353
+ <td class='lines_code'><tt>76</tt>
354
+ </td>
355
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
356
+ &nbsp;</td>
357
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
358
+ <td class='uncovered' width='0'/>
359
+ </tr>
360
+ </table>
361
+ </td>
362
+ </tr>
363
+ </table>
364
+ </td>
365
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>100.0%</tt>
366
+ &nbsp;</td>
367
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
368
+ <td class='uncovered' width='0'/>
369
+ </tr>
370
+ </table>
371
+ </td>
372
+ </tr>
373
+ </table>
374
+ </td>
375
+ </tr>
376
+ <tr class='light'><td><a href='rails-init_rb.html'>rails/init.rb</a>
377
+ </td>
378
+ <td class='lines_total'><tt>1</tt>
379
+ </td>
380
+ <td class='lines_code'><tt>1</tt>
381
+ </td>
382
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
383
+ &nbsp;</td>
384
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
385
+ <td class='uncovered' width='0'/>
386
+ </tr>
387
+ </table>
388
+ </td>
389
+ </tr>
390
+ </table>
391
+ </td>
392
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>100.0%</tt>
393
+ &nbsp;</td>
394
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
395
+ <td class='uncovered' width='0'/>
396
+ </tr>
397
+ </table>
398
+ </td>
399
+ </tr>
400
+ </table>
401
+ </td>
402
+ </tr>
403
+ </tbody>
404
+ </table>
405
+ <hr/>
406
+ <p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
407
+ version 0.8.1.3.</p>
408
+ </body>
409
+ </html>