ultimate-helpers 0.1.0.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.
Files changed (101) hide show
  1. data/.gitignore +8 -0
  2. data/.rvmrc +1 -0
  3. data/.rvmrc.example +1 -0
  4. data/Gemfile +10 -0
  5. data/Gemfile.lock +126 -0
  6. data/LICENSE +19 -0
  7. data/README.md +25 -0
  8. data/Rakefile +1 -0
  9. data/app/assets/javascripts/ultimate/base.js.coffee +11 -0
  10. data/app/assets/javascripts/ultimate/helpers/asset_tag.js.coffee +82 -0
  11. data/app/assets/javascripts/ultimate/helpers/base.js.coffee +3 -0
  12. data/app/assets/javascripts/ultimate/helpers/decor.js.coffee +19 -0
  13. data/app/assets/javascripts/ultimate/helpers/form_options.js.coffee +106 -0
  14. data/app/assets/javascripts/ultimate/helpers/form_tag.js.coffee +175 -0
  15. data/app/assets/javascripts/ultimate/helpers/javascript.js.coffee +31 -0
  16. data/app/assets/javascripts/ultimate/helpers/number.js.coffee +600 -0
  17. data/app/assets/javascripts/ultimate/helpers/record_tag.js.coffee +81 -0
  18. data/app/assets/javascripts/ultimate/helpers/tag.js.coffee +91 -0
  19. data/app/assets/javascripts/ultimate/helpers/url.js.coffee +152 -0
  20. data/app/assets/javascripts/ultimate/helpers.js.coffee +122 -0
  21. data/app/assets/javascripts/ultimate/jquery.base.js.coffee +85 -0
  22. data/app/assets/javascripts/ultimate/underscore/underscore.inflection.js +176 -0
  23. data/app/assets/javascripts/ultimate/underscore/underscore.js +1204 -0
  24. data/app/assets/javascripts/ultimate/underscore/underscore.outcasts.js.coffee +158 -0
  25. data/app/assets/javascripts/ultimate/underscore/underscore.string.js +600 -0
  26. data/config/routes.rb +2 -0
  27. data/lib/ultimate/helpers/engine.rb +7 -0
  28. data/lib/ultimate/helpers/version.rb +5 -0
  29. data/lib/ultimate/helpers.rb +8 -0
  30. data/scripts/rails +8 -0
  31. data/test/dummy/Rakefile +7 -0
  32. data/test/dummy/_emfile +18 -0
  33. data/test/dummy/app/assets/images/.gitkeep +0 -0
  34. data/test/dummy/app/assets/javascripts/application.js +3 -0
  35. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  36. data/test/dummy/app/assets/stylesheets/global/forms.css.scss +65 -0
  37. data/test/dummy/app/assets/stylesheets/global/layout/footer.scss +18 -0
  38. data/test/dummy/app/assets/stylesheets/global/layout/header.scss +13 -0
  39. data/test/dummy/app/assets/stylesheets/global/layout/main-menu.scss +68 -0
  40. data/test/dummy/app/assets/stylesheets/global/layout.css.scss +46 -0
  41. data/test/dummy/app/assets/stylesheets/global/reserved.css.scss +79 -0
  42. data/test/dummy/app/assets/stylesheets/global/reset.css.scss +85 -0
  43. data/test/dummy/app/assets/stylesheets/global/structures.css.scss +9 -0
  44. data/test/dummy/app/assets/stylesheets/import/base.scss +36 -0
  45. data/test/dummy/app/assets/stylesheets/plugins/qunit.css.scss +3 -0
  46. data/test/dummy/app/controllers/application_controller.rb +4 -0
  47. data/test/dummy/app/controllers/main_controller.rb +8 -0
  48. data/test/dummy/app/helpers/application_helper.rb +2 -0
  49. data/test/dummy/app/mailers/.gitkeep +0 -0
  50. data/test/dummy/app/models/.gitkeep +0 -0
  51. data/test/dummy/app/views/application/_footer.html.haml +3 -0
  52. data/test/dummy/app/views/application/_header.html.haml +4 -0
  53. data/test/dummy/app/views/application/_main_menu.html.haml +11 -0
  54. data/test/dummy/app/views/layouts/application.html.haml +24 -0
  55. data/test/dummy/app/views/main/index.html.haml +13 -0
  56. data/test/dummy/app/views/main/qunit.html.haml +7 -0
  57. data/test/dummy/config/application.rb +58 -0
  58. data/test/dummy/config/boot.rb +10 -0
  59. data/test/dummy/config/database.yml +25 -0
  60. data/test/dummy/config/environment.rb +5 -0
  61. data/test/dummy/config/environments/development.rb +40 -0
  62. data/test/dummy/config/environments/production.rb +67 -0
  63. data/test/dummy/config/environments/test.rb +37 -0
  64. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  65. data/test/dummy/config/initializers/inflections.rb +15 -0
  66. data/test/dummy/config/initializers/mime_types.rb +5 -0
  67. data/test/dummy/config/initializers/qunit-rails.rb +1 -0
  68. data/test/dummy/config/initializers/secret_token.rb +7 -0
  69. data/test/dummy/config/initializers/session_store.rb +8 -0
  70. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  71. data/test/dummy/config/locales/en.yml +5 -0
  72. data/test/dummy/config/routes.rb +63 -0
  73. data/test/dummy/config.ru +4 -0
  74. data/test/dummy/log/.gitkeep +0 -0
  75. data/test/dummy/public/404.html +26 -0
  76. data/test/dummy/public/422.html +26 -0
  77. data/test/dummy/public/500.html +25 -0
  78. data/test/dummy/public/favicon.ico +0 -0
  79. data/test/dummy/script/rails +6 -0
  80. data/test/javascripts/all_tests.js.coffee +12 -0
  81. data/test/javascripts/test_helper.js.coffee +3 -0
  82. data/test/javascripts/tests/helpers/asset_tag_test.js.coffee +51 -0
  83. data/test/javascripts/tests/helpers/form_options_test.js.coffee +170 -0
  84. data/test/javascripts/tests/helpers/form_tag_test.js.coffee +226 -0
  85. data/test/javascripts/tests/helpers/javascript_test.js.coffee +25 -0
  86. data/test/javascripts/tests/helpers/number_test.js.coffee +250 -0
  87. data/test/javascripts/tests/helpers/record_tag_test.js.coffee +60 -0
  88. data/test/javascripts/tests/helpers/tag_test.js.coffee +58 -0
  89. data/test/javascripts/tests/helpers/url_test.js.coffee +76 -0
  90. data/test/javascripts/tests/underscore/underscore.outcasts.test.js.coffee +47 -0
  91. data/test/javascripts/vendors/backbone.js +1533 -0
  92. data/test/javascripts/vendors/i18n-lite.js.coffee +20 -0
  93. data/test/stylesheets/test_helper.css +4 -0
  94. data/test/stylesheets/vendors/ultimate/mixins/_routines.scss +120 -0
  95. data/test/stylesheets/vendors/ultimate/mixins/_vendors.scss +44 -0
  96. data/test/stylesheets/vendors/ultimate/mixins/css3/_text-shadow.scss +40 -0
  97. data/test/stylesheets/vendors/ultimate/mixins/css3.scss +350 -0
  98. data/test/stylesheets/vendors/ultimate/mixins/fonts.scss +100 -0
  99. data/test/stylesheets/vendors/ultimate/mixins/microstructures.scss +239 -0
  100. data/ultimate-helpers.gemspec +25 -0
  101. metadata +193 -0
@@ -0,0 +1,76 @@
1
+ #= require ultimate/underscore/underscore
2
+ #= require ultimate/underscore/underscore.string
3
+ #= require ultimate/helpers/url
4
+
5
+ module "Ultimate.Helpers.Url"
6
+
7
+ _.extend @, Ultimate.Helpers.Url
8
+
9
+ test "url_for", ->
10
+ strictEqual url_for(), 'javascript:;'
11
+ strictEqual url_for({}), 'javascript:;'
12
+ strictEqual url_for(gamma: 2.2), '?gamma=2.2'
13
+ strictEqual url_for(gamma: 2.2, url: 'some_url'), 'some_url?gamma=2.2'
14
+ # strictEqual url_for(host: "www.example.com"), 'http://www.example.com/'
15
+ strictEqual url_for(url: -> 'some_url'), 'some_url'
16
+ options = gamma: 2.2, anchor: 'comments', url: 'some_url', lambda: false
17
+ strictEqual url_for(options), 'some_url?gamma=2.2&lambda=false#comments'
18
+ deepEqual options, gamma: 2.2, anchor: 'comments', url: 'some_url', lambda: false
19
+ strictEqual url_for("back"), 'javascript:history.back();'
20
+ strictEqual url_for("/back"), '/back'
21
+
22
+ test "link_to", ->
23
+ equal link_to('Hello', 'http://www.example.com'), '<a href="http://www.example.com">Hello</a>'
24
+ equal link_to('Test Link', '/'), '<a href="/">Test Link</a>'
25
+ equal link_to(null, 'http://ya.ru/'), '<a href="http://ya.ru/">http://ya.ru/</a>'
26
+ equal link_to('caption'), '<a href="javascript:;">caption</a>'
27
+ equal link_to('caption', null, class: 'link'), '<a class="link" href="javascript:;">caption</a>'
28
+ equal link_to("Hello", "http://www.example.com", class: "red", data: {confirm: 'You cant possibly be sure,\n can you?'}),
29
+ '<a class="red" data-confirm="You cant possibly be sure,\n can you?" href="http://www.example.com">Hello</a>'
30
+ equal link_to(null, -> 'caption'), '<a href="javascript:;">caption</a>'
31
+ equal link_to(-> 'caption'), '<a href="javascript:;">caption</a>'
32
+ equal link_to('0', 'http://www.example.com'), '<a href="http://www.example.com">0</a>'
33
+ equal link_to(0, 'http://www.example.com'), '<a href="http://www.example.com">0</a>'
34
+ equal link_to(false, 'http://www.example.com'), '<a href="http://www.example.com">false</a>'
35
+ equal link_to('', 'http://www.example.com'), '<a href="http://www.example.com"></a>'
36
+
37
+ test "link_to_js", ->
38
+ equal link_to_js('caption'), '<a href="javascript:;">caption</a>'
39
+ equal link_to_js('caption', class: 'link'), '<a class="link" href="javascript:;">caption</a>'
40
+ equal link_to_js("Hello", class: "red", data: {confirm: 'You cant possibly be sure,\n can you?'}),
41
+ '<a class="red" data-confirm="You cant possibly be sure,\n can you?" href="javascript:;">Hello</a>'
42
+ equal link_to_js(null, -> 'caption'), '<a href="javascript:;">caption</a>'
43
+ equal link_to_js(class: 'link', -> 'caption'), '<a class="link" href="javascript:;">caption</a>'
44
+ equal link_to_js(-> 'caption'), '<a href="javascript:;">caption</a>'
45
+
46
+ test "mail_to", ->
47
+ equal mail_to("david@loudthinking.com"),
48
+ '<a href="mailto:david@loudthinking.com">david@loudthinking.com</a>'
49
+ equal mail_to("david@loudthinking.com", "David Heinemeier Hansson"),
50
+ '<a href="mailto:david@loudthinking.com">David Heinemeier Hansson</a>'
51
+ equal mail_to("david@loudthinking.com", "David Heinemeier Hansson", class: "admin"),
52
+ '<a class="admin" href="mailto:david@loudthinking.com">David Heinemeier Hansson</a>'
53
+ equal mail_to("me@domain.com", "My email", encode: "javascript"),
54
+ "<script>eval(decodeURIComponent('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%5c%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%5c%22%3e%4d%79%20%65%6d%61%69%6c%3c%5c%2f%61%3e%27%29%3b'))</script>"
55
+ # equal mail_to("unicode@example.com", "únicode", encode: "javascript"),
56
+ # "<script>eval(decodeURIComponent('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%5c%22%6d%61%69%6c%74%6f%3a%75%6e%69%63%6f%64%65%40%65%78%61%6d%70%6c%65%2e%63%6f%6d%5c%22%3e%c3%ba%6e%69%63%6f%64%65%3c%5c%2f%61%3e%27%29%3b'))</script>"
57
+ equal mail_to("me@example.com", "My email", cc: "ccaddress@example.com", bcc: "bccaddress@example.com", subject: "This is an example email", body: "This is the body of the message."),
58
+ '<a href="mailto:me@example.com?cc=ccaddress%40example.com&amp;bcc=bccaddress%40example.com&amp;body=This%20is%20the%20body%20of%20the%20message.&amp;subject=This%20is%20an%20example%20email">My email</a>'
59
+ equal mail_to('feedback@example.com', '<img src="/feedback.png" />'),
60
+ '<a href="mailto:feedback@example.com"><img src="/feedback.png" /></a>'
61
+ equal mail_to("me@domain.com", "My email", encode: "hex"),
62
+ '<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>'
63
+ equal mail_to("me@domain.com", null, encode: "hex"),
64
+ '<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">&#109;&#101;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;</a>'
65
+ equal mail_to("wolfgang@stufenlos.net", null, replace_at: "(at)", replace_dot: "(dot)"),
66
+ '<a href="mailto:wolfgang@stufenlos.net">wolfgang(at)stufenlos(dot)net</a>'
67
+ equal mail_to("me@domain.com", null, encode: "hex", replace_at: "(at)"),
68
+ '<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">&#109;&#101;&#40;&#97;&#116;&#41;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;</a>'
69
+ equal mail_to("me@domain.com", "My email", encode: "hex", replace_at: "(at)"),
70
+ '<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>'
71
+ equal mail_to("me@domain.com", null, encode: "hex", replace_at: "(at)", replace_dot: "(dot)"),
72
+ '<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">&#109;&#101;&#40;&#97;&#116;&#41;&#100;&#111;&#109;&#97;&#105;&#110;&#40;&#100;&#111;&#116;&#41;&#99;&#111;&#109;</a>'
73
+ equal mail_to("me@domain.com", "My email", encode: "javascript", replace_at: "(at)", replace_dot: "(dot)"),
74
+ "<script>eval(decodeURIComponent('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%5c%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%5c%22%3e%4d%79%20%65%6d%61%69%6c%3c%5c%2f%61%3e%27%29%3b'))</script>"
75
+ equal mail_to("me@domain.com", null, encode: "javascript", replace_at: "(at)", replace_dot: "(dot)"),
76
+ "<script>eval(decodeURIComponent('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%5c%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%5c%22%3e%6d%65%28%61%74%29%64%6f%6d%61%69%6e%28%64%6f%74%29%63%6f%6d%3c%5c%2f%61%3e%27%29%3b'))</script>"
@@ -0,0 +1,47 @@
1
+ #= require ultimate/underscore/underscore
2
+ #= require ultimate/underscore/underscore.outcasts
3
+
4
+ # Include Underscore.outcasts methods to Underscore namespace
5
+ _.mixin(_.outcasts.exports())
6
+
7
+ module('Underscore.outcasts')
8
+
9
+ test "delete", ->
10
+ obj = a: 'Apple', b: 'Banana'
11
+ equal _.delete(obj, 'a'), 'Apple'
12
+ deepEqual obj, {b: 'Banana'}
13
+
14
+ test "blockGiven", ->
15
+ do (v1 = 111, v2 = 222, v3 = 333) ->
16
+ strictEqual _.blockGiven(arguments), null
17
+ strictEqual _.blockGiven([]), null
18
+ do (v1 = 111, v2 = 222, block = (_v) -> "block #{_v}") ->
19
+ ok _.isFunction(_.blockGiven(arguments))
20
+ equal _.blockGiven(arguments)('given'), "block given"
21
+
22
+ test "sortHash", ->
23
+ deepEqual _.sortHash({}), []
24
+ deepEqual _.sortHash(title: 'cadabra', alt: 'bubble', href: 'abra'), [['alt', 'bubble'], ['href', 'abra'], ['title', 'cadabra']]
25
+ deepEqual _.sortHash(title: 'cadabra', alt: 'bubble', href: 'abra', true), [['href', 'abra'], ['alt', 'bubble'], ['title', 'cadabra']]
26
+
27
+ test "invert", ->
28
+ deepEqual _.invert(a: 1, b: 2, c: 0), {1: 'a', 2: 'b', 0: 'c'}
29
+ obj =
30
+ a: 1
31
+ b: 2
32
+ c: 0
33
+ d: 1
34
+ 2: 'e-1'
35
+ f: -> 'func'
36
+ deepEqual _.invert(obj), {1: ['a', 'd'], 2: 'b', 0: 'c', 'e-1': '2'}
37
+ deepEqual _.invert(_.invert(obj)), {a: '1', b: '2', c: '0', d: '1', 2: 'e-1'}
38
+ deepEqual _.invert(), {}
39
+
40
+ test "scan", ->
41
+ a = "cruel world"
42
+ deepEqual _.scan(a, /\w+/) , ["cruel", "world"]
43
+ deepEqual _.scan(a, /.../) , ["cru", "el ", "wor"]
44
+ deepEqual _.scan(a, /(...)/) , [["cru"], ["el "], ["wor"]]
45
+ deepEqual _.scan(a, /(..)(..)/) , [["cr", "ue"], ["l ", "wo"]]
46
+ equal _.scan(a, /\w+/, (w) -> "<<#{w}>> ").join(''), '<<cruel>> <<world>> '
47
+ equal _.scan(a, /(.)(.)/, (x, y) -> y + x).join(''), 'rceu lowlr'