ultimate-base 0.2.4 → 0.3.0.alpha
Sign up to get free protection for your applications and to get access to all the features.
- 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")
|