ultimate-helpers 0.1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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'