ultimate-helpers 0.1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +8 -0
- data/.rvmrc +1 -0
- data/.rvmrc.example +1 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +126 -0
- data/LICENSE +19 -0
- data/README.md +25 -0
- data/Rakefile +1 -0
- data/app/assets/javascripts/ultimate/base.js.coffee +11 -0
- data/app/assets/javascripts/ultimate/helpers/asset_tag.js.coffee +82 -0
- data/app/assets/javascripts/ultimate/helpers/base.js.coffee +3 -0
- data/app/assets/javascripts/ultimate/helpers/decor.js.coffee +19 -0
- data/app/assets/javascripts/ultimate/helpers/form_options.js.coffee +106 -0
- data/app/assets/javascripts/ultimate/helpers/form_tag.js.coffee +175 -0
- data/app/assets/javascripts/ultimate/helpers/javascript.js.coffee +31 -0
- data/app/assets/javascripts/ultimate/helpers/number.js.coffee +600 -0
- data/app/assets/javascripts/ultimate/helpers/record_tag.js.coffee +81 -0
- data/app/assets/javascripts/ultimate/helpers/tag.js.coffee +91 -0
- data/app/assets/javascripts/ultimate/helpers/url.js.coffee +152 -0
- data/app/assets/javascripts/ultimate/helpers.js.coffee +122 -0
- data/app/assets/javascripts/ultimate/jquery.base.js.coffee +85 -0
- data/app/assets/javascripts/ultimate/underscore/underscore.inflection.js +176 -0
- data/app/assets/javascripts/ultimate/underscore/underscore.js +1204 -0
- data/app/assets/javascripts/ultimate/underscore/underscore.outcasts.js.coffee +158 -0
- data/app/assets/javascripts/ultimate/underscore/underscore.string.js +600 -0
- data/config/routes.rb +2 -0
- data/lib/ultimate/helpers/engine.rb +7 -0
- data/lib/ultimate/helpers/version.rb +5 -0
- data/lib/ultimate/helpers.rb +8 -0
- data/scripts/rails +8 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/_emfile +18 -0
- data/test/dummy/app/assets/images/.gitkeep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +3 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/assets/stylesheets/global/forms.css.scss +65 -0
- data/test/dummy/app/assets/stylesheets/global/layout/footer.scss +18 -0
- data/test/dummy/app/assets/stylesheets/global/layout/header.scss +13 -0
- data/test/dummy/app/assets/stylesheets/global/layout/main-menu.scss +68 -0
- data/test/dummy/app/assets/stylesheets/global/layout.css.scss +46 -0
- data/test/dummy/app/assets/stylesheets/global/reserved.css.scss +79 -0
- data/test/dummy/app/assets/stylesheets/global/reset.css.scss +85 -0
- data/test/dummy/app/assets/stylesheets/global/structures.css.scss +9 -0
- data/test/dummy/app/assets/stylesheets/import/base.scss +36 -0
- data/test/dummy/app/assets/stylesheets/plugins/qunit.css.scss +3 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/controllers/main_controller.rb +8 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.gitkeep +0 -0
- data/test/dummy/app/models/.gitkeep +0 -0
- data/test/dummy/app/views/application/_footer.html.haml +3 -0
- data/test/dummy/app/views/application/_header.html.haml +4 -0
- data/test/dummy/app/views/application/_main_menu.html.haml +11 -0
- data/test/dummy/app/views/layouts/application.html.haml +24 -0
- data/test/dummy/app/views/main/index.html.haml +13 -0
- data/test/dummy/app/views/main/qunit.html.haml +7 -0
- data/test/dummy/config/application.rb +58 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +40 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/qunit-rails.rb +1 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +63 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/javascripts/all_tests.js.coffee +12 -0
- data/test/javascripts/test_helper.js.coffee +3 -0
- data/test/javascripts/tests/helpers/asset_tag_test.js.coffee +51 -0
- data/test/javascripts/tests/helpers/form_options_test.js.coffee +170 -0
- data/test/javascripts/tests/helpers/form_tag_test.js.coffee +226 -0
- data/test/javascripts/tests/helpers/javascript_test.js.coffee +25 -0
- data/test/javascripts/tests/helpers/number_test.js.coffee +250 -0
- data/test/javascripts/tests/helpers/record_tag_test.js.coffee +60 -0
- data/test/javascripts/tests/helpers/tag_test.js.coffee +58 -0
- data/test/javascripts/tests/helpers/url_test.js.coffee +76 -0
- data/test/javascripts/tests/underscore/underscore.outcasts.test.js.coffee +47 -0
- data/test/javascripts/vendors/backbone.js +1533 -0
- data/test/javascripts/vendors/i18n-lite.js.coffee +20 -0
- data/test/stylesheets/test_helper.css +4 -0
- data/test/stylesheets/vendors/ultimate/mixins/_routines.scss +120 -0
- data/test/stylesheets/vendors/ultimate/mixins/_vendors.scss +44 -0
- data/test/stylesheets/vendors/ultimate/mixins/css3/_text-shadow.scss +40 -0
- data/test/stylesheets/vendors/ultimate/mixins/css3.scss +350 -0
- data/test/stylesheets/vendors/ultimate/mixins/fonts.scss +100 -0
- data/test/stylesheets/vendors/ultimate/mixins/microstructures.scss +239 -0
- data/ultimate-helpers.gemspec +25 -0
- 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&bcc=bccaddress%40example.com&body=This%20is%20the%20body%20of%20the%20message.&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="mailto:%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="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">me@domain.com</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="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">me(at)domain.com</a>'
|
69
|
+
equal mail_to("me@domain.com", "My email", encode: "hex", replace_at: "(at)"),
|
70
|
+
'<a href="mailto:%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="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">me(at)domain(dot)com</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'
|