ultimate-base 0.2.4 → 0.3.0.alpha
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/.gitignore +4 -1
- data/.rvmrc +0 -1
- data/.rvmrc.example +0 -1
- data/Gemfile +6 -0
- data/Gemfile.lock +113 -1
- data/app/assets/javascripts/ultimate/backbone/base.js.coffee +14 -2
- data/app/assets/javascripts/ultimate/backbone/extra/jquery-plugin-adapter.js.coffee +1 -1
- data/app/assets/javascripts/ultimate/backbone/model.js.coffee +6 -0
- data/app/assets/javascripts/ultimate/backbone/view.js.coffee +5 -4
- data/app/assets/javascripts/ultimate/backbone/views/slider.js.coffee +4 -1
- data/app/assets/javascripts/ultimate/helpers/asset_tag.js.coffee +71 -54
- data/app/assets/javascripts/ultimate/helpers/base.js.coffee +3 -0
- data/app/assets/javascripts/ultimate/helpers/decor.js.coffee +19 -14
- data/app/assets/javascripts/ultimate/helpers/number.js.coffee +600 -0
- data/app/assets/javascripts/ultimate/helpers/record_tag.js.coffee +66 -0
- data/app/assets/javascripts/ultimate/helpers/tag.js.coffee +77 -0
- data/app/assets/javascripts/ultimate/helpers/url.js.coffee +49 -0
- data/app/assets/javascripts/ultimate/helpers.js.coffee +39 -66
- data/app/assets/javascripts/ultimate/{devise.js.coffee → improves/devise.js.coffee} +0 -0
- data/app/assets/javascripts/ultimate/improves/i18n-lite.js.coffee +18 -12
- data/app/assets/javascripts/ultimate/improves/magic-radios.js.coffee +2 -0
- data/app/assets/javascripts/ultimate/improves/typed-fields.js.coffee +13 -14
- data/app/assets/javascripts/ultimate/{base.js.coffee → jquery.base.js.coffee} +24 -37
- data/app/assets/javascripts/ultimate/{experimental/_inflections → underscore}/underscore.inflection.js +19 -18
- data/app/assets/javascripts/ultimate/underscore/underscore.outcasts.js.coffee +123 -0
- data/app/assets/javascripts/ultimate/underscore/underscore.string.js +16 -6
- data/config/routes.rb +2 -0
- data/lib/{ultimate-base → ultimate/base}/engine.rb +1 -0
- data/lib/{ultimate-base → ultimate/base}/version.rb +1 -1
- data/lib/ultimate/base.rb +10 -0
- data/lib/{ultimate-base → ultimate}/extensions/directive_processor.rb +0 -0
- data/lib/{ultimate-base → ultimate}/extensions/sass_script_functions.rb +0 -0
- data/scripts/rails +8 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/_emfile +18 -0
- data/{app/assets/javascripts/ultimate/helpers/forms.js.coffee → 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 +34 -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 +59 -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 +13 -0
- data/test/javascripts/test_helper.js.coffee +3 -0
- data/test/javascripts/tests/base_test.js.coffee +42 -0
- data/test/javascripts/tests/helpers/asset_tag_test.js.coffee +51 -0
- data/test/javascripts/tests/helpers/number_test.js.coffee +250 -0
- data/test/javascripts/tests/helpers/record_tag_test.js.coffee +56 -0
- data/test/javascripts/tests/helpers/tag_test.js.coffee +33 -0
- data/test/javascripts/tests/helpers/url_test.js.coffee +28 -0
- data/test/javascripts/tests/helpers_test.js.coffee +47 -0
- data/test/javascripts/tests/improves/i18n-lite_test.js.coffee +25 -0
- data/test/javascripts/tests/underscore/underscore.outcasts.test.js.coffee +38 -0
- data/test/stylesheets/test_helper.css +4 -0
- data/ultimate-base.gemspec +4 -4
- metadata +116 -24
- data/app/assets/javascripts/ultimate/bus.js.coffee +0 -57
- data/app/assets/javascripts/ultimate/experimental/_inflections/dzone.inflections.js +0 -154
- data/app/assets/javascripts/ultimate/helpers/array.js.coffee +0 -63
- data/app/assets/javascripts/ultimate/helpers/tags.js.coffee +0 -73
- data/app/assets/javascripts/ultimate/widgets/dock.js.coffee +0 -70
- data/app/assets/javascripts/ultimate/widgets/gear.js.coffee +0 -84
- data/app/assets/javascripts/ultimate/widgets/jquery-ext.js.coffee +0 -104
- data/app/assets/javascripts/ultimate/widgets/jquery.adapter.js.coffee +0 -62
- data/app/assets/javascripts/ultimate/widgets/widget.js.coffee +0 -115
- data/lib/ultimate-base.rb +0 -10
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#= require ultimate/underscore/underscore
|
|
2
|
+
#= require ultimate/underscore/underscore.string
|
|
3
|
+
#= require ultimate/helpers/asset_tag
|
|
4
|
+
|
|
5
|
+
module "Ultimate.Helpers.AssetTag"
|
|
6
|
+
|
|
7
|
+
_.extend @, Ultimate.Helpers.AssetTag
|
|
8
|
+
|
|
9
|
+
test "favicon_link_tag", ->
|
|
10
|
+
equal favicon_link_tag(), '<link href="/images/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />'
|
|
11
|
+
equal favicon_link_tag('favicon.ico'), '<link href="/images/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />'
|
|
12
|
+
equal favicon_link_tag('favicon.ico', rel: 'foo'), '<link href="/images/favicon.ico" rel="foo" type="image/vnd.microsoft.icon" />'
|
|
13
|
+
equal favicon_link_tag('favicon.ico', rel: 'foo', type: 'bar'), '<link href="/images/favicon.ico" rel="foo" type="bar" />'
|
|
14
|
+
equal favicon_link_tag('mb-icon.png', rel: 'apple-touch-icon', type: 'image/png'), '<link href="/images/mb-icon.png" rel="apple-touch-icon" type="image/png" />'
|
|
15
|
+
|
|
16
|
+
test "image_path", ->
|
|
17
|
+
equal image_path(""), ''
|
|
18
|
+
equal image_path("xml"), '/images/xml'
|
|
19
|
+
equal image_path("xml.png"), '/images/xml.png'
|
|
20
|
+
equal image_path("dir/xml.png"), '/images/dir/xml.png'
|
|
21
|
+
equal image_path("/dir/xml.png"), '/dir/xml.png'
|
|
22
|
+
|
|
23
|
+
test "path_to_image", ->
|
|
24
|
+
equal path_to_image(""), ''
|
|
25
|
+
equal path_to_image("xml"), '/images/xml'
|
|
26
|
+
equal path_to_image("xml.png"), '/images/xml.png'
|
|
27
|
+
equal path_to_image("dir/xml.png"), '/images/dir/xml.png'
|
|
28
|
+
equal path_to_image("/dir/xml.png"), '/dir/xml.png'
|
|
29
|
+
|
|
30
|
+
test "image_alt", ->
|
|
31
|
+
for prefix in ['', '/', '/foo/bar/', 'foo/bar/']
|
|
32
|
+
equal image_alt("#{prefix}rails.png"), 'Rails'
|
|
33
|
+
equal image_alt("#{prefix}rails-9c0a079bdd7701d7e729bd956823d153.png"), 'Rails'
|
|
34
|
+
equal image_alt("#{prefix}avatar-0000.png"), 'Avatar-0000'
|
|
35
|
+
|
|
36
|
+
test "image_tag", ->
|
|
37
|
+
equal image_tag("xml.png"), '<img alt="Xml" src="/images/xml.png" />'
|
|
38
|
+
equal image_tag("rss.gif", alt: "rss syndication"), '<img alt="rss syndication" src="/images/rss.gif" />'
|
|
39
|
+
equal image_tag("gold.png", size: "45x70"), '<img alt="Gold" height="70" src="/images/gold.png" width="45" />'
|
|
40
|
+
equal image_tag("gold.png", size: "45x70"), '<img alt="Gold" height="70" src="/images/gold.png" width="45" />'
|
|
41
|
+
equal image_tag("error.png", size: "45"), '<img alt="Error" src="/images/error.png" />'
|
|
42
|
+
equal image_tag("error.png", size: "45 x 70"), '<img alt="Error" src="/images/error.png" />'
|
|
43
|
+
equal image_tag("error.png", size: "x"), '<img alt="Error" src="/images/error.png" />'
|
|
44
|
+
equal image_tag("google.com.png"), '<img alt="Google.com" src="/images/google.com.png" />'
|
|
45
|
+
equal image_tag("slash..png"), '<img alt="Slash." src="/images/slash..png" />'
|
|
46
|
+
equal image_tag(".pdf.png"), '<img alt=".pdf" src="/images/.pdf.png" />'
|
|
47
|
+
equal image_tag("http://www.rubyonrails.com/images/rails.png"), '<img alt="Rails" src="http://www.rubyonrails.com/images/rails.png" />'
|
|
48
|
+
equal image_tag("//www.rubyonrails.com/images/rails.png"), '<img alt="Rails" src="//www.rubyonrails.com/images/rails.png" />'
|
|
49
|
+
equal image_tag("mouse.png", alt: null), '<img src="/images/mouse.png" />'
|
|
50
|
+
equal image_tag("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==", alt: null), '<img src="data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" />'
|
|
51
|
+
equal image_tag(""), '<img src="" />'
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
#= require ultimate/underscore/underscore
|
|
2
|
+
#= require ultimate/underscore/underscore.string
|
|
3
|
+
#= require ultimate/improves/i18n-lite
|
|
4
|
+
#= require ultimate/helpers/number
|
|
5
|
+
|
|
6
|
+
module "Ultimate.Helpers.Number"
|
|
7
|
+
|
|
8
|
+
_.extend @, Ultimate.Helpers.Number
|
|
9
|
+
|
|
10
|
+
kilobytes = (number) -> number * 1024
|
|
11
|
+
megabytes = (number) -> kilobytes(number) * 1024
|
|
12
|
+
gigabytes = (number) -> megabytes(number) * 1024
|
|
13
|
+
terabytes = (number) -> gigabytes(number) * 1024
|
|
14
|
+
|
|
15
|
+
test "number_to_phone", ->
|
|
16
|
+
equal number_to_phone(5551234), "555-1234"
|
|
17
|
+
equal number_to_phone(8005551212), "800-555-1212"
|
|
18
|
+
equal number_to_phone(8005551212, area_code: true), "(800) 555-1212"
|
|
19
|
+
strictEqual number_to_phone("", area_code: true), ""
|
|
20
|
+
equal number_to_phone(8005551212, delimiter: " "), "800 555 1212"
|
|
21
|
+
equal number_to_phone(8005551212, area_code: true, extension: 123), "(800) 555-1212 x 123"
|
|
22
|
+
equal number_to_phone(8005551212, extension: " "), "800-555-1212"
|
|
23
|
+
strictEqual number_to_phone(5551212, delimiter: '.'), "555.1212"
|
|
24
|
+
equal number_to_phone("8005551212"), "800-555-1212"
|
|
25
|
+
equal number_to_phone(8005551212, country_code: 1), "+1-800-555-1212"
|
|
26
|
+
strictEqual number_to_phone(8005551212, country_code: 1, delimiter: ''), "+18005551212"
|
|
27
|
+
equal number_to_phone(225551212), "22-555-1212"
|
|
28
|
+
equal number_to_phone(225551212, country_code: 45), "+45-22-555-1212"
|
|
29
|
+
equal number_to_phone(911), "911"
|
|
30
|
+
equal number_to_phone(0), "0"
|
|
31
|
+
equal number_to_phone(-1), "1"
|
|
32
|
+
|
|
33
|
+
test "number_to_currency", ->
|
|
34
|
+
equal number_to_currency(1234567890.50), "$1,234,567,890.50"
|
|
35
|
+
equal number_to_currency(1234567890.506), "$1,234,567,890.51"
|
|
36
|
+
equal number_to_currency(-1234567890.50), "-$1,234,567,890.50"
|
|
37
|
+
equal number_to_currency(-1234567890.50, format: "%u %n"), "-$ 1,234,567,890.50"
|
|
38
|
+
equal number_to_currency(-1234567890.50, negative_format: "(%u%n)"), "($1,234,567,890.50)"
|
|
39
|
+
equal number_to_currency(1234567891.50, precision: 0), "$1,234,567,892"
|
|
40
|
+
equal number_to_currency(1234567890.50, precision: 1), "$1,234,567,890.5"
|
|
41
|
+
equal number_to_currency(1234567890.50, unit: "£", separator: ",", delimiter: ""), "£1234567890,50"
|
|
42
|
+
equal number_to_currency("1234567890.50"), "$1,234,567,890.50"
|
|
43
|
+
equal number_to_currency("1234567890.50", unit: "Kč", format: "%n %u"), "1,234,567,890.50 Kč"
|
|
44
|
+
equal number_to_currency("-1234567890.50", unit: "Kč", format: "%n %u", negative_format: "%n - %u"), "1,234,567,890.50 - Kč"
|
|
45
|
+
strictEqual number_to_currency(0.0, unit: "", negative_format: "(%n)"), "0.00"
|
|
46
|
+
|
|
47
|
+
test "number_to_percentage", ->
|
|
48
|
+
equal number_to_percentage(100), "100.000%"
|
|
49
|
+
equal number_to_percentage(100, precision: 0), "100%"
|
|
50
|
+
equal number_to_percentage(302.0574, precision: 2), "302.06%"
|
|
51
|
+
equal number_to_percentage("100"), "100.000%"
|
|
52
|
+
equal number_to_percentage("1000"), "1000.000%"
|
|
53
|
+
equal number_to_percentage(123.400, precision: 3, strip_insignificant_zeros: true), "123.4%"
|
|
54
|
+
equal number_to_percentage(1000, delimiter: '.', separator: ','), "1.000,000%"
|
|
55
|
+
equal number_to_percentage(1000, format: "%n %"), "1000.000 %"
|
|
56
|
+
equal number_to_percentage(0), "0.000%"
|
|
57
|
+
equal number_to_percentage(-1), "-1.000%"
|
|
58
|
+
|
|
59
|
+
test "number_to_delimited", ->
|
|
60
|
+
strictEqual number_to_delimited(12345678), "12,345,678"
|
|
61
|
+
strictEqual number_to_delimited(0), "0"
|
|
62
|
+
strictEqual number_to_delimited(123), "123"
|
|
63
|
+
strictEqual number_to_delimited(123456), "123,456"
|
|
64
|
+
strictEqual number_to_delimited(123456.78), "123,456.78"
|
|
65
|
+
strictEqual number_to_delimited(123456.789), "123,456.789"
|
|
66
|
+
strictEqual number_to_delimited(123456.78901), "123,456.78901"
|
|
67
|
+
strictEqual number_to_delimited(123456789.78901), "123,456,789.78901"
|
|
68
|
+
strictEqual number_to_delimited(0.78901), "0.78901"
|
|
69
|
+
strictEqual number_to_delimited("123456.78"), "123,456.78"
|
|
70
|
+
strictEqual number_to_delimited(12345678, delimiter: ' '), "12 345 678"
|
|
71
|
+
strictEqual number_to_delimited(12345678.05, separator: '-'), "12,345,678-05"
|
|
72
|
+
strictEqual number_to_delimited(12345678.05, separator: ',', delimiter: '.'), "12.345.678,05"
|
|
73
|
+
strictEqual number_to_delimited(12345678.05, delimiter: '.', separator: ','), "12.345.678,05"
|
|
74
|
+
|
|
75
|
+
test "round_with_precision", ->
|
|
76
|
+
strictEqual round_with_precision(10/3), 3.33
|
|
77
|
+
strictEqual round_with_precision(10/3, 0), 3
|
|
78
|
+
strictEqual round_with_precision(100/3, 5), 33.33333
|
|
79
|
+
strictEqual round_with_precision(100/3, -1), 30
|
|
80
|
+
strictEqual round_with_precision("19.3", -1), 20
|
|
81
|
+
# strictEqual round_with_precision(9.995, 2), 10
|
|
82
|
+
strictEqual round_with_precision(null), 0
|
|
83
|
+
|
|
84
|
+
test "number_to_rounded", ->
|
|
85
|
+
strictEqual number_to_rounded(-111.2346), "-111.235"
|
|
86
|
+
strictEqual number_to_rounded(111.2346), "111.235"
|
|
87
|
+
strictEqual number_to_rounded(31.825, precision: 2), "31.83"
|
|
88
|
+
strictEqual number_to_rounded(111.2346, precision: 2), "111.23"
|
|
89
|
+
strictEqual number_to_rounded(111, precision: 2), "111.00"
|
|
90
|
+
strictEqual number_to_rounded("111.2346"), "111.235"
|
|
91
|
+
strictEqual number_to_rounded("31.825", precision: 2), "31.83"
|
|
92
|
+
strictEqual number_to_rounded((32.6751 * 100.00), precision: 0), "3268"
|
|
93
|
+
strictEqual number_to_rounded(111.50, precision: 0), "112"
|
|
94
|
+
strictEqual number_to_rounded(1234567891.50, precision: 0), "1234567892"
|
|
95
|
+
strictEqual number_to_rounded(0, precision: 0), "0"
|
|
96
|
+
strictEqual number_to_rounded(0.001, precision: 5), "0.00100"
|
|
97
|
+
strictEqual number_to_rounded(0.00111, precision: 3), "0.001"
|
|
98
|
+
# strictEqual number_to_rounded(9.995, precision: 2), "10.00"
|
|
99
|
+
strictEqual number_to_rounded(10.995, precision: 2), "11.00"
|
|
100
|
+
strictEqual number_to_rounded(-0.001, precision: 2), "0.00"
|
|
101
|
+
strictEqual number_to_rounded(31.825, precision: 2, separator: ','), "31,83"
|
|
102
|
+
strictEqual number_to_rounded(1231.825, precision: 2, separator: ',', delimiter: '.'), "1.231,83"
|
|
103
|
+
strictEqual number_to_rounded(123987, precision: 3, significant: true), "124000"
|
|
104
|
+
strictEqual number_to_rounded(123987876, precision: 2, significant: true ), "120000000"
|
|
105
|
+
strictEqual number_to_rounded("43523", precision: 1, significant: true ), "40000"
|
|
106
|
+
strictEqual number_to_rounded(9775, precision: 4, significant: true ), "9775"
|
|
107
|
+
strictEqual number_to_rounded(5.3923, precision: 2, significant: true ), "5.4"
|
|
108
|
+
strictEqual number_to_rounded(5.3923, precision: 1, significant: true ), "5"
|
|
109
|
+
strictEqual number_to_rounded(1.232, precision: 1, significant: true ), "1"
|
|
110
|
+
strictEqual number_to_rounded(7, precision: 1, significant: true ), "7"
|
|
111
|
+
strictEqual number_to_rounded(1, precision: 1, significant: true ), "1"
|
|
112
|
+
strictEqual number_to_rounded(52.7923, precision: 2, significant: true ), "53"
|
|
113
|
+
strictEqual number_to_rounded(9775, precision: 6, significant: true ), "9775.00"
|
|
114
|
+
strictEqual number_to_rounded(5.3929, precision: 7, significant: true ), "5.392900"
|
|
115
|
+
strictEqual number_to_rounded(0, precision: 2, significant: true ), "0.0"
|
|
116
|
+
strictEqual number_to_rounded(0, precision: 1, significant: true ), "0"
|
|
117
|
+
strictEqual number_to_rounded(0.0001, precision: 1, significant: true ), "0.0001"
|
|
118
|
+
strictEqual number_to_rounded(0.0001, precision: 3, significant: true ), "0.000100"
|
|
119
|
+
strictEqual number_to_rounded(0.0001111, precision: 1, significant: true ), "0.0001"
|
|
120
|
+
# strictEqual number_to_rounded(9.995, precision: 3, significant: true), "10.0"
|
|
121
|
+
strictEqual number_to_rounded(9.994, precision: 3, significant: true), "9.99"
|
|
122
|
+
strictEqual number_to_rounded(10.995, precision: 3, significant: true), "11.0"
|
|
123
|
+
strictEqual number_to_rounded(9775.43, precision: 4, strip_insignificant_zeros: true ), "9775.43"
|
|
124
|
+
strictEqual number_to_rounded(9775.2, precision: 6, significant: true, strip_insignificant_zeros: true ), "9775.2"
|
|
125
|
+
strictEqual number_to_rounded(0, precision: 6, significant: true, strip_insignificant_zeros: true ), "0"
|
|
126
|
+
strictEqual number_to_rounded(123.987, precision: 0, significant: true), "124"
|
|
127
|
+
strictEqual number_to_rounded(12, precision: 0, significant: true ), "12"
|
|
128
|
+
strictEqual number_to_rounded("12.3", precision: 0, significant: true ), "12"
|
|
129
|
+
|
|
130
|
+
test "number_to_human_size", ->
|
|
131
|
+
equal number_to_human_size(0), "0 Bytes"
|
|
132
|
+
# equal number_to_human_size(1), "1 Byte"
|
|
133
|
+
equal number_to_human_size(3.14159265), "3 Bytes"
|
|
134
|
+
equal number_to_human_size(123.0), "123 Bytes"
|
|
135
|
+
equal number_to_human_size(123), "123 Bytes"
|
|
136
|
+
equal number_to_human_size(1234), "1.21 KB"
|
|
137
|
+
equal number_to_human_size(12345), "12.1 KB"
|
|
138
|
+
equal number_to_human_size(1234567), "1.18 MB"
|
|
139
|
+
equal number_to_human_size(1234567890), "1.15 GB"
|
|
140
|
+
equal number_to_human_size(1234567890123), "1.12 TB"
|
|
141
|
+
equal number_to_human_size(terabytes(1026)), "1030 TB"
|
|
142
|
+
equal number_to_human_size(kilobytes(444)), "444 KB"
|
|
143
|
+
equal number_to_human_size(megabytes(1023)), "1020 MB"
|
|
144
|
+
equal number_to_human_size(terabytes(3)), "3 TB"
|
|
145
|
+
equal number_to_human_size(1234567, precision: 2), "1.2 MB"
|
|
146
|
+
equal number_to_human_size(3.14159265, precision: 4), "3 Bytes"
|
|
147
|
+
equal number_to_human_size('123'), "123 Bytes"
|
|
148
|
+
equal number_to_human_size(kilobytes(1.0123), precision: 2), "1 KB"
|
|
149
|
+
equal number_to_human_size(kilobytes(1.0100), precision: 4), "1.01 KB"
|
|
150
|
+
equal number_to_human_size(kilobytes(10.000), precision: 4), "10 KB"
|
|
151
|
+
# equal number_to_human_size(1.1), "1 Byte"
|
|
152
|
+
equal number_to_human_size(10), "10 Bytes"
|
|
153
|
+
equal number_to_human_size(3.14159265, prefix: 'si'), "3 Bytes"
|
|
154
|
+
equal number_to_human_size(123.0, prefix: 'si'), "123 Bytes"
|
|
155
|
+
equal number_to_human_size(123, prefix: 'si'), "123 Bytes"
|
|
156
|
+
equal number_to_human_size(1234, prefix: 'si'), "1.23 KB"
|
|
157
|
+
equal number_to_human_size(12345, prefix: 'si'), "12.3 KB"
|
|
158
|
+
equal number_to_human_size(1234567, prefix: 'si'), "1.23 MB"
|
|
159
|
+
equal number_to_human_size(1234567890, prefix: 'si'), "1.23 GB"
|
|
160
|
+
equal number_to_human_size(1234567890123, prefix: 'si'), "1.23 TB"
|
|
161
|
+
equal number_to_human_size(1234567, precision: 2), "1.2 MB"
|
|
162
|
+
equal number_to_human_size(3.14159265, precision: 4), "3 Bytes"
|
|
163
|
+
equal number_to_human_size(kilobytes(1.0123), precision: 2), "1 KB"
|
|
164
|
+
equal number_to_human_size(kilobytes(1.0100), precision: 4), "1.01 KB"
|
|
165
|
+
equal number_to_human_size(kilobytes(10.000), precision: 4), "10 KB"
|
|
166
|
+
equal number_to_human_size(1234567890123, precision: 1), "1 TB"
|
|
167
|
+
equal number_to_human_size(524288000, precision: 3), "500 MB"
|
|
168
|
+
equal number_to_human_size(9961472, precision: 0), "10 MB"
|
|
169
|
+
equal number_to_human_size(41010, precision: 1), "40 KB"
|
|
170
|
+
equal number_to_human_size(41100, precision: 2), "40 KB"
|
|
171
|
+
equal number_to_human_size(kilobytes(1.0123), precision: 2, strip_insignificant_zeros: false), "1.0 KB"
|
|
172
|
+
equal number_to_human_size(kilobytes(1.0123), precision: 3, significant: false), "1.012 KB"
|
|
173
|
+
equal number_to_human_size(kilobytes(1.0123), precision: 0, significant: true), "1 KB" #ignores significant it precision is 0
|
|
174
|
+
equal number_to_human_size(kilobytes(1.0123), precision: 3, separator: ','), "1,01 KB"
|
|
175
|
+
equal number_to_human_size(kilobytes(1.0100), precision: 4, separator: ','), "1,01 KB"
|
|
176
|
+
equal number_to_human_size(terabytes(1000.1), precision: 5, delimiter: '.', separator: ','), "1.000,1 TB"
|
|
177
|
+
|
|
178
|
+
test "number_to_human", ->
|
|
179
|
+
strictEqual number_to_human(-123), "-123"
|
|
180
|
+
strictEqual number_to_human(-0.5), "-0.5"
|
|
181
|
+
strictEqual number_to_human(0), "0"
|
|
182
|
+
strictEqual number_to_human(0.5), "0.5"
|
|
183
|
+
strictEqual number_to_human(123), "123"
|
|
184
|
+
equal number_to_human(1234), "1.23 Thousand"
|
|
185
|
+
equal number_to_human(12345), "12.3 Thousand"
|
|
186
|
+
equal number_to_human(1234567), "1.23 Million"
|
|
187
|
+
equal number_to_human(1234567890), "1.23 Billion"
|
|
188
|
+
equal number_to_human(1234567890123), "1.23 Trillion"
|
|
189
|
+
equal number_to_human(1234567890123456), "1.23 Quadrillion"
|
|
190
|
+
equal number_to_human(1234567890123456789), "1230 Quadrillion"
|
|
191
|
+
equal number_to_human(489939, precision: 2), "490 Thousand"
|
|
192
|
+
equal number_to_human(489939, precision: 4), "489.9 Thousand"
|
|
193
|
+
equal number_to_human(489000, precision: 4), "489 Thousand"
|
|
194
|
+
equal number_to_human(489000, precision: 4, strip_insignificant_zeros: false), "489.0 Thousand"
|
|
195
|
+
equal number_to_human(1234567, precision: 4, significant: false), "1.2346 Million"
|
|
196
|
+
equal number_to_human(1234567, precision: 1, significant: false, separator: ','), "1,2 Million"
|
|
197
|
+
equal number_to_human(1234567, precision: 0, significant: true, separator: ','), "1 Million" #significant forced to false
|
|
198
|
+
#Only integers
|
|
199
|
+
volume = unit: "ml", thousand: "lt", million: "m3"
|
|
200
|
+
equal number_to_human(123456, units: volume), "123 lt"
|
|
201
|
+
equal number_to_human(12, units: volume), "12 ml"
|
|
202
|
+
equal number_to_human(1234567, units: volume), "1.23 m3"
|
|
203
|
+
#Including fractionals
|
|
204
|
+
distance = mili: "mm", centi: "cm", deci: "dm", unit: "m", ten: "dam", hundred: "hm", thousand: "km"
|
|
205
|
+
equal number_to_human(0.00123, units: distance), "1.23 mm"
|
|
206
|
+
equal number_to_human(0.0123, units: distance), "1.23 cm"
|
|
207
|
+
equal number_to_human(0.123, units: distance), "1.23 dm"
|
|
208
|
+
equal number_to_human(1.23, units: distance), "1.23 m"
|
|
209
|
+
equal number_to_human(12.3, units: distance), "1.23 dam"
|
|
210
|
+
equal number_to_human(123, units: distance), "1.23 hm"
|
|
211
|
+
equal number_to_human(1230, units: distance), "1.23 km"
|
|
212
|
+
equal number_to_human(1230, units: distance), "1.23 km"
|
|
213
|
+
equal number_to_human(1230, units: distance), "1.23 km"
|
|
214
|
+
equal number_to_human(12300, units: distance), "12.3 km"
|
|
215
|
+
#The quantifiers don't need to be a continuous sequence
|
|
216
|
+
gangster = hundred: "hundred bucks", million: "thousand quids"
|
|
217
|
+
equal number_to_human(100, units: gangster), "1 hundred bucks"
|
|
218
|
+
equal number_to_human(2500, units: gangster), "25 hundred bucks"
|
|
219
|
+
equal number_to_human(25000000, units: gangster), "25 thousand quids"
|
|
220
|
+
equal number_to_human(12345000000, units: gangster), "12300 thousand quids"
|
|
221
|
+
#Spaces are stripped from the resulting string
|
|
222
|
+
strictEqual number_to_human(4, units: unit: "", ten: 'tens '), "4"
|
|
223
|
+
equal number_to_human(45, units: unit: "", ten: ' tens '), "4.5 tens"
|
|
224
|
+
equal number_to_human(123456, format: "%n times %u"), "123 times Thousand"
|
|
225
|
+
volume = unit: "ml", thousand: "lt", million: "m3"
|
|
226
|
+
equal number_to_human(123456, units: volume, format: "%n.%u"), "123.lt"
|
|
227
|
+
|
|
228
|
+
number_to_helpers = _.string.words("phone currency percentage delimited rounded human_size human")
|
|
229
|
+
|
|
230
|
+
test "number helpers should return empty string when given null", number_to_helpers.length, =>
|
|
231
|
+
for h in number_to_helpers
|
|
232
|
+
strictEqual @["number_to_#{h}"](null), "", "number_to_#{h}"
|
|
233
|
+
|
|
234
|
+
test "number helpers don't mutate options hash", number_to_helpers.length, =>
|
|
235
|
+
options = raise: true
|
|
236
|
+
for h in number_to_helpers
|
|
237
|
+
@["number_to_#{h}"](1, options)
|
|
238
|
+
deepEqual options, {raise: true}, "number_to_#{h}"
|
|
239
|
+
|
|
240
|
+
test "number helpers should return non numeric param unchanged", ->
|
|
241
|
+
equal number_to_phone("x", country_code: 1, extension: 123), "+1-x x 123"
|
|
242
|
+
equal number_to_phone("x"), "x"
|
|
243
|
+
equal number_to_currency("x."), "$x."
|
|
244
|
+
equal number_to_currency("x"), "$x"
|
|
245
|
+
equal number_to_percentage("x"), "x%"
|
|
246
|
+
equal number_to_delimited("x"), "x"
|
|
247
|
+
equal number_to_rounded("x."), "x."
|
|
248
|
+
equal number_to_rounded("x"), "x"
|
|
249
|
+
equal number_to_human_size('x'), "x"
|
|
250
|
+
equal number_to_human('x'), "x"
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#= require ultimate/underscore/underscore
|
|
2
|
+
#= require ultimate/underscore/underscore.string
|
|
3
|
+
#= require ultimate/underscore/underscore.inflection
|
|
4
|
+
#= require ultimate/helpers/record_tag
|
|
5
|
+
|
|
6
|
+
module "Ultimate.Helpers.RecordTag"
|
|
7
|
+
|
|
8
|
+
_.extend @, Ultimate.Helpers.RecordTag
|
|
9
|
+
|
|
10
|
+
class RecordTagPost
|
|
11
|
+
body: "What a wonderful world!"
|
|
12
|
+
constructor: (options = {}) ->
|
|
13
|
+
_.extend @, options
|
|
14
|
+
|
|
15
|
+
record = new RecordTagPost()
|
|
16
|
+
singular = 'record_tag_post'
|
|
17
|
+
|
|
18
|
+
test "dom_class", ->
|
|
19
|
+
equal dom_class(record), singular
|
|
20
|
+
equal dom_class(record, "custom_prefix"), "custom_prefix_#{singular}"
|
|
21
|
+
|
|
22
|
+
test "dom_id", ->
|
|
23
|
+
record.id = null
|
|
24
|
+
equal dom_id(record), "new_#{singular}"
|
|
25
|
+
equal dom_id(record, "custom_prefix"), "custom_prefix_#{singular}"
|
|
26
|
+
record.id = 1
|
|
27
|
+
equal dom_id(record), "#{singular}_1"
|
|
28
|
+
equal dom_id(record, "edit"), "edit_#{singular}_1"
|
|
29
|
+
|
|
30
|
+
test "content_tag_for", ->
|
|
31
|
+
record.id = 45
|
|
32
|
+
equal content_tag_for('li', record),
|
|
33
|
+
"<li class=\"#{singular}\" id=\"#{singular}_45\"></li>"
|
|
34
|
+
equal content_tag_for('ul', record, 'archived'),
|
|
35
|
+
"<ul class=\"archived_#{singular}\" id=\"archived_#{singular}_45\"></ul>"
|
|
36
|
+
equal content_tag_for('tr', record, class: "special", style: "background-color: #f0f0f0"),
|
|
37
|
+
"<tr class=\"#{singular} special\" id=\"#{singular}_45\" style=\"background-color: #f0f0f0\"></tr>"
|
|
38
|
+
equal content_tag_for('tr', record, 'archived', class: "special", style: "background-color: #f0f0f0"),
|
|
39
|
+
"<tr class=\"archived_#{singular} special\" id=\"archived_#{singular}_45\" style=\"background-color: #f0f0f0\"></tr>"
|
|
40
|
+
equal content_tag_for('tr', record, -> record.body),
|
|
41
|
+
"<tr class=\"#{singular}\" id=\"#{singular}_45\">What a wonderful world!</tr>"
|
|
42
|
+
post_1 = new RecordTagPost(id: 101, body: "Hello!")
|
|
43
|
+
post_2 = new RecordTagPost(id: 102, body: "World!")
|
|
44
|
+
equal content_tag_for('li', [post_1, post_2], (post) -> post.body),
|
|
45
|
+
"<li class=\"#{singular}\" id=\"#{singular}_101\">Hello!</li>\n<li class=\"#{singular}\" id=\"#{singular}_102\">World!</li>"
|
|
46
|
+
options = class: 'important'
|
|
47
|
+
content_tag_for('li', record, options)
|
|
48
|
+
deepEqual options, class: 'important'
|
|
49
|
+
|
|
50
|
+
test "div_for", ->
|
|
51
|
+
equal div_for(record, class: 'special', -> record.body),
|
|
52
|
+
"<div class=\"#{singular} special\" id=\"#{singular}_45\">What a wonderful world!</div>"
|
|
53
|
+
post_1 = new RecordTagPost(id: 101, body: "Hello!")
|
|
54
|
+
post_2 = new RecordTagPost(id: 102, body: "World!")
|
|
55
|
+
equal div_for([post_1, post_2], (post) -> post.body),
|
|
56
|
+
"<div class=\"#{singular}\" id=\"#{singular}_101\">Hello!</div>\n<div class=\"#{singular}\" id=\"#{singular}_102\">World!</div>"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#= require ultimate/underscore/underscore
|
|
2
|
+
#= require ultimate/underscore/underscore.string
|
|
3
|
+
#= require ultimate/helpers/tag
|
|
4
|
+
|
|
5
|
+
module "Ultimate.Helpers.Tag"
|
|
6
|
+
|
|
7
|
+
_.extend @, Ultimate.Helpers.Tag
|
|
8
|
+
|
|
9
|
+
test "tag_options", ->
|
|
10
|
+
strictEqual tag_options(), ""
|
|
11
|
+
strictEqual tag_options({}), ""
|
|
12
|
+
ok /title="Some title"/.test tag_options(class: "some-class", title: "Some title")
|
|
13
|
+
strictEqual tag_options(class: ["song", "play>"]), ' class="song play>"'
|
|
14
|
+
strictEqual tag_options(disabled: true, itemscope: false, multiple: true, readonly: true), ' disabled="disabled" multiple="multiple" readonly="readonly"'
|
|
15
|
+
strictEqual tag_options(data: {remote: true}, role: "ajax"), ' data-remote="true" role="ajax"'
|
|
16
|
+
strictEqual tag_options(data: {inner: {section: true}}), ' data-inner="{"section":true}"'
|
|
17
|
+
strictEqual tag_options(data: {inner: {section: true}}, false), ' data-inner="{"section":true}"'
|
|
18
|
+
strictEqual tag_options(included: ''), ' included=""'
|
|
19
|
+
|
|
20
|
+
test "tag", ->
|
|
21
|
+
strictEqual tag('br'), '<br />'
|
|
22
|
+
strictEqual tag('br', null, true), '<br>'
|
|
23
|
+
strictEqual tag('input', type: 'text', disabled: true), '<input disabled="disabled" type="text" />'
|
|
24
|
+
strictEqual tag('img', src: 'open & shut.png'), '<img src="open & shut.png" />'
|
|
25
|
+
# strictEqual tag("img", {src: "open & shut.png"}, false, false), '<img src="open & shut.png" />'
|
|
26
|
+
# strictEqual tag("div", data: {name: 'Stephen', city_state: "(Chicago IL)"}), '<div data-name="Stephen" data-city-state="["Chicago","IL"]" />'
|
|
27
|
+
|
|
28
|
+
test "content_tag", ->
|
|
29
|
+
strictEqual content_tag('div', '', class: ['some', 'class']), '<div class="some class"></div>'
|
|
30
|
+
strictEqual content_tag('div', '<Inner content>', class: 'some class'), '<div class="some class"><Inner content></div>'
|
|
31
|
+
strictEqual content_tag('div', '<Inner content>', class: 'some class', false), '<div class="some class"><Inner content></div>'
|
|
32
|
+
strictEqual content_tag('div', class: 'some class', -> '<Inner content>'), '<div class="some class"><Inner content></div>'
|
|
33
|
+
strictEqual content_tag('div', class: 'some class', false, -> '<Inner content>'), '<div class="some class"><Inner content></div>'
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
strictEqual link_to('Hello', 'http://www.example.com'), '<a href="http://www.example.com">Hello</a>'
|
|
24
|
+
strictEqual link_to('Test Link', '/'), '<a href="/">Test Link</a>'
|
|
25
|
+
strictEqual link_to(null, 'http://ya.ru/'), '<a href="http://ya.ru/">http://ya.ru/</a>'
|
|
26
|
+
strictEqual link_to('caption'), '<a href="javascript:;">caption</a>'
|
|
27
|
+
strictEqual link_to("Hello", "http://www.example.com", class: "red", data: {confirm: 'You cant possibly be sure,\n can you?'}),
|
|
28
|
+
'<a class="red" data-confirm="You cant possibly be sure,\n can you?" href="http://www.example.com">Hello</a>'
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#= require ultimate/underscore/underscore
|
|
2
|
+
#= require ultimate/helpers
|
|
3
|
+
|
|
4
|
+
module "ultimate/helpers"
|
|
5
|
+
|
|
6
|
+
test "cout", ->
|
|
7
|
+
ok _.isBoolean(window.DEBUG_MODE), "global DEBUG_MODE is Boolean"
|
|
8
|
+
window.DEBUG_MODE = true
|
|
9
|
+
strictEqual cout(123), 123, "cout() must return first argument"
|
|
10
|
+
window.DEBUG_MODE = false
|
|
11
|
+
for method in ['log', 'info', 'warn', 'error', 'assert', 'clear']
|
|
12
|
+
strictEqual cout(method, 123), 123, "cout() must return second argument if first is `#{method}` as method"
|
|
13
|
+
window.DEBUG_MODE = true
|
|
14
|
+
|
|
15
|
+
test "_cout", ->
|
|
16
|
+
strictEqual _cout(123), 123, "_cout() must return first argument"
|
|
17
|
+
for method in ['log', 'info', 'warn', 'error', 'assert', 'clear']
|
|
18
|
+
strictEqual _cout(method, 123), method, "_cout() on so strong that it does not use the method `#{method}` as first argument, and return first argument always"
|
|
19
|
+
|
|
20
|
+
test "deprecate", ->
|
|
21
|
+
equal deprecate('first thing'), "`first thing` DEPRECATED!", "log and return message about deprecated function"
|
|
22
|
+
equal deprecate('first thing', 'second thing'), "`first thing` DEPRECATED! Use instead `second thing`", "log and return message about deprecated function, and hint about using instead"
|
|
23
|
+
|
|
24
|
+
test "todo", ->
|
|
25
|
+
ok _.isBoolean(window.LOG_TODO), "global LOG_TODO is Boolean"
|
|
26
|
+
window.LOG_TODO = true
|
|
27
|
+
equal todo('some todo'), "TODO: some todo", "log and return todo"
|
|
28
|
+
equal todo('some todo', "helpers_test.js.coffee"), "TODO: some todo ### helpers_test.js.coffee", "log and return todo with location string"
|
|
29
|
+
equal todo('some todo', "helpers_test.js.coffee", "test \"deprecate\""), "TODO: some todo ### helpers_test.js.coffee > test \"deprecate\"", "log and return todo with description of function"
|
|
30
|
+
equal todo('some todo', "helpers_test.js.coffee", 12), "TODO: some todo ### helpers_test.js.coffee:12", "log and return message with string number"
|
|
31
|
+
window.LOG_TODO = false
|
|
32
|
+
equal todo('some todo'), undefined, "don't log and return `undefined` if global LOG_TODO == false"
|
|
33
|
+
window.LOG_TODO = true
|
|
34
|
+
|
|
35
|
+
test "logicalXOR", ->
|
|
36
|
+
strictEqual logicalXOR(false, false), false, "false XOR false === false"
|
|
37
|
+
strictEqual logicalXOR(false, true), true, "false XOR true === true"
|
|
38
|
+
strictEqual logicalXOR(true, false), true, "true XOR false === true"
|
|
39
|
+
strictEqual logicalXOR(true, true), false, "true XOR true === false"
|
|
40
|
+
|
|
41
|
+
test "bound", ->
|
|
42
|
+
equal bound(0, 10, 100), 10
|
|
43
|
+
equal bound(100, 10, 100), 100
|
|
44
|
+
equal bound(50, 10, 100), 50
|
|
45
|
+
equal bound(-20, -10, 100), -10
|
|
46
|
+
equal bound(-20, 10, -10), 10
|
|
47
|
+
equal bound(20, 10, -10), 10
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#= require ultimate/underscore/underscore
|
|
2
|
+
#= require ultimate/underscore/underscore.string
|
|
3
|
+
#= require ultimate/improves/i18n-lite
|
|
4
|
+
|
|
5
|
+
module "ultimate/improves/i18n-lite"
|
|
6
|
+
|
|
7
|
+
I18n.translations =
|
|
8
|
+
models:
|
|
9
|
+
post:
|
|
10
|
+
title: "Post title"
|
|
11
|
+
body: "Post body"
|
|
12
|
+
|
|
13
|
+
test "locale", ->
|
|
14
|
+
equal I18n.locale, 'en'
|
|
15
|
+
|
|
16
|
+
test "translate", ->
|
|
17
|
+
ok _.isFunction(I18n.translate)
|
|
18
|
+
ok _.isFunction(I18n.t)
|
|
19
|
+
equal I18n.translate('models.post.missing_key'), 'models.post.missing_key'
|
|
20
|
+
equal I18n.translate('models.post.missing_key', default: 'Default value'), 'Default value'
|
|
21
|
+
equal I18n.translate('models.post.missing_key', default: 0), 0
|
|
22
|
+
equal I18n.translate('models.post.missing_key', default: ''), ''
|
|
23
|
+
equal I18n.translate('models.post.body'), 'Post body'
|
|
24
|
+
equal I18n.t('models.post.body'), 'Post body'
|
|
25
|
+
deepEqual I18n.t('models.post'), title: 'Post title', body: 'Post body'
|
|
@@ -0,0 +1,38 @@
|
|
|
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(), {}
|
data/ultimate-base.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
|
3
|
-
require "ultimate
|
|
3
|
+
require "ultimate/base/version"
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |s|
|
|
6
6
|
s.name = "ultimate-base"
|
|
@@ -13,9 +13,9 @@ Gem::Specification.new do |s|
|
|
|
13
13
|
|
|
14
14
|
s.rubyforge_project = "ultimate-base"
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
s.add_development_dependency "rails", "~> 3.2.8"
|
|
17
|
+
s.add_development_dependency "sqlite3"
|
|
18
|
+
s.add_development_dependency "coffee-rails", "~> 3.2.1"
|
|
19
19
|
|
|
20
20
|
s.files = `git ls-files`.split("\n")
|
|
21
21
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|