ultimate-helpers 0.1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. data/.gitignore +8 -0
  2. data/.rvmrc +1 -0
  3. data/.rvmrc.example +1 -0
  4. data/Gemfile +10 -0
  5. data/Gemfile.lock +126 -0
  6. data/LICENSE +19 -0
  7. data/README.md +25 -0
  8. data/Rakefile +1 -0
  9. data/app/assets/javascripts/ultimate/base.js.coffee +11 -0
  10. data/app/assets/javascripts/ultimate/helpers/asset_tag.js.coffee +82 -0
  11. data/app/assets/javascripts/ultimate/helpers/base.js.coffee +3 -0
  12. data/app/assets/javascripts/ultimate/helpers/decor.js.coffee +19 -0
  13. data/app/assets/javascripts/ultimate/helpers/form_options.js.coffee +106 -0
  14. data/app/assets/javascripts/ultimate/helpers/form_tag.js.coffee +175 -0
  15. data/app/assets/javascripts/ultimate/helpers/javascript.js.coffee +31 -0
  16. data/app/assets/javascripts/ultimate/helpers/number.js.coffee +600 -0
  17. data/app/assets/javascripts/ultimate/helpers/record_tag.js.coffee +81 -0
  18. data/app/assets/javascripts/ultimate/helpers/tag.js.coffee +91 -0
  19. data/app/assets/javascripts/ultimate/helpers/url.js.coffee +152 -0
  20. data/app/assets/javascripts/ultimate/helpers.js.coffee +122 -0
  21. data/app/assets/javascripts/ultimate/jquery.base.js.coffee +85 -0
  22. data/app/assets/javascripts/ultimate/underscore/underscore.inflection.js +176 -0
  23. data/app/assets/javascripts/ultimate/underscore/underscore.js +1204 -0
  24. data/app/assets/javascripts/ultimate/underscore/underscore.outcasts.js.coffee +158 -0
  25. data/app/assets/javascripts/ultimate/underscore/underscore.string.js +600 -0
  26. data/config/routes.rb +2 -0
  27. data/lib/ultimate/helpers/engine.rb +7 -0
  28. data/lib/ultimate/helpers/version.rb +5 -0
  29. data/lib/ultimate/helpers.rb +8 -0
  30. data/scripts/rails +8 -0
  31. data/test/dummy/Rakefile +7 -0
  32. data/test/dummy/_emfile +18 -0
  33. data/test/dummy/app/assets/images/.gitkeep +0 -0
  34. data/test/dummy/app/assets/javascripts/application.js +3 -0
  35. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  36. data/test/dummy/app/assets/stylesheets/global/forms.css.scss +65 -0
  37. data/test/dummy/app/assets/stylesheets/global/layout/footer.scss +18 -0
  38. data/test/dummy/app/assets/stylesheets/global/layout/header.scss +13 -0
  39. data/test/dummy/app/assets/stylesheets/global/layout/main-menu.scss +68 -0
  40. data/test/dummy/app/assets/stylesheets/global/layout.css.scss +46 -0
  41. data/test/dummy/app/assets/stylesheets/global/reserved.css.scss +79 -0
  42. data/test/dummy/app/assets/stylesheets/global/reset.css.scss +85 -0
  43. data/test/dummy/app/assets/stylesheets/global/structures.css.scss +9 -0
  44. data/test/dummy/app/assets/stylesheets/import/base.scss +36 -0
  45. data/test/dummy/app/assets/stylesheets/plugins/qunit.css.scss +3 -0
  46. data/test/dummy/app/controllers/application_controller.rb +4 -0
  47. data/test/dummy/app/controllers/main_controller.rb +8 -0
  48. data/test/dummy/app/helpers/application_helper.rb +2 -0
  49. data/test/dummy/app/mailers/.gitkeep +0 -0
  50. data/test/dummy/app/models/.gitkeep +0 -0
  51. data/test/dummy/app/views/application/_footer.html.haml +3 -0
  52. data/test/dummy/app/views/application/_header.html.haml +4 -0
  53. data/test/dummy/app/views/application/_main_menu.html.haml +11 -0
  54. data/test/dummy/app/views/layouts/application.html.haml +24 -0
  55. data/test/dummy/app/views/main/index.html.haml +13 -0
  56. data/test/dummy/app/views/main/qunit.html.haml +7 -0
  57. data/test/dummy/config/application.rb +58 -0
  58. data/test/dummy/config/boot.rb +10 -0
  59. data/test/dummy/config/database.yml +25 -0
  60. data/test/dummy/config/environment.rb +5 -0
  61. data/test/dummy/config/environments/development.rb +40 -0
  62. data/test/dummy/config/environments/production.rb +67 -0
  63. data/test/dummy/config/environments/test.rb +37 -0
  64. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  65. data/test/dummy/config/initializers/inflections.rb +15 -0
  66. data/test/dummy/config/initializers/mime_types.rb +5 -0
  67. data/test/dummy/config/initializers/qunit-rails.rb +1 -0
  68. data/test/dummy/config/initializers/secret_token.rb +7 -0
  69. data/test/dummy/config/initializers/session_store.rb +8 -0
  70. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  71. data/test/dummy/config/locales/en.yml +5 -0
  72. data/test/dummy/config/routes.rb +63 -0
  73. data/test/dummy/config.ru +4 -0
  74. data/test/dummy/log/.gitkeep +0 -0
  75. data/test/dummy/public/404.html +26 -0
  76. data/test/dummy/public/422.html +26 -0
  77. data/test/dummy/public/500.html +25 -0
  78. data/test/dummy/public/favicon.ico +0 -0
  79. data/test/dummy/script/rails +6 -0
  80. data/test/javascripts/all_tests.js.coffee +12 -0
  81. data/test/javascripts/test_helper.js.coffee +3 -0
  82. data/test/javascripts/tests/helpers/asset_tag_test.js.coffee +51 -0
  83. data/test/javascripts/tests/helpers/form_options_test.js.coffee +170 -0
  84. data/test/javascripts/tests/helpers/form_tag_test.js.coffee +226 -0
  85. data/test/javascripts/tests/helpers/javascript_test.js.coffee +25 -0
  86. data/test/javascripts/tests/helpers/number_test.js.coffee +250 -0
  87. data/test/javascripts/tests/helpers/record_tag_test.js.coffee +60 -0
  88. data/test/javascripts/tests/helpers/tag_test.js.coffee +58 -0
  89. data/test/javascripts/tests/helpers/url_test.js.coffee +76 -0
  90. data/test/javascripts/tests/underscore/underscore.outcasts.test.js.coffee +47 -0
  91. data/test/javascripts/vendors/backbone.js +1533 -0
  92. data/test/javascripts/vendors/i18n-lite.js.coffee +20 -0
  93. data/test/stylesheets/test_helper.css +4 -0
  94. data/test/stylesheets/vendors/ultimate/mixins/_routines.scss +120 -0
  95. data/test/stylesheets/vendors/ultimate/mixins/_vendors.scss +44 -0
  96. data/test/stylesheets/vendors/ultimate/mixins/css3/_text-shadow.scss +40 -0
  97. data/test/stylesheets/vendors/ultimate/mixins/css3.scss +350 -0
  98. data/test/stylesheets/vendors/ultimate/mixins/fonts.scss +100 -0
  99. data/test/stylesheets/vendors/ultimate/mixins/microstructures.scss +239 -0
  100. data/ultimate-helpers.gemspec +25 -0
  101. metadata +193 -0
@@ -0,0 +1,158 @@
1
+ ###
2
+ Underscore.outcasts
3
+ (c) 2012 Dmitry Karpunin <koderfunk aet gmail dot com>
4
+ Underscore.outcasts is freely distributable under the terms of the MIT license.
5
+ Documentation: https://github.com/KODerFunk/underscore.outcasts
6
+ Some code is borrowed from outcasts pull requests to Underscore.
7
+ Version '0.1.4'
8
+ ###
9
+
10
+ 'use strict'
11
+
12
+
13
+
14
+ # Defining underscore.outcasts
15
+
16
+ UnderscoreOutcasts =
17
+
18
+ VERSION: '0.1.4'
19
+
20
+ delete: (object, key) ->
21
+ value = object[key]
22
+ delete object[key]
23
+ value
24
+
25
+ blockGiven: (args) ->
26
+ block = _.last(args)
27
+ if _.isFunction(block) then block else null
28
+
29
+ sortHash: (hash, byValue = false) ->
30
+ _.sortBy(_.map(hash, (value, key) -> [key, value]), (pair) -> pair[if byValue then 1 else 0])
31
+
32
+ regexpValidKey: /^[\w\-]+$/
33
+
34
+ invert: (object) ->
35
+ result = {}
36
+ for key, value of object
37
+ if _.isArray(value)
38
+ for newKey in value when UnderscoreOutcasts.regexpValidKey.test(newKey)
39
+ result[newKey] = key
40
+ else if UnderscoreOutcasts.regexpValidKey.test(value)
41
+ if _.has(result, value)
42
+ if _.isArray(result[value])
43
+ result[value].push key
44
+ else
45
+ result[value] = [result[value], key]
46
+ else
47
+ result[value] = key
48
+ result
49
+
50
+ scan: (str, pattern) ->
51
+ block = @blockGiven(arguments)
52
+ result = []
53
+ while str.length
54
+ matches = str.match(pattern)
55
+ if matches
56
+ cut = matches.shift()
57
+ str = str.slice(matches.index + cut.length)
58
+ result.push if block
59
+ if matches.length then block(matches...) else block(cut)
60
+ else
61
+ if matches.length then matches else cut
62
+ else
63
+ str = ''
64
+ result
65
+
66
+ arrayWrap: (object) ->
67
+ unless object?
68
+ []
69
+ else if _.isArray(object)
70
+ object
71
+ else if _.isFunction(object.toArray)
72
+ object.toArray() or [object]
73
+ else
74
+ [object]
75
+
76
+ # http://coderwall.com/p/krcdig
77
+ deepBindAll: (obj) ->
78
+ target = _.last(arguments)
79
+ for key, value of obj
80
+ if _.isFunction(value)
81
+ obj[key] = _.bind(value, target)
82
+ else if _.isObject(value)
83
+ obj[key] = _.deepBindAll(value, target)
84
+ obj
85
+
86
+ ###
87
+ Split array into slices of <number> elements.
88
+ Map result by iterator if last given.
89
+
90
+ >>> eachSlice [1..10], 3, (a) -> cout a
91
+ [1, 2, 3]
92
+ [4, 5, 6]
93
+ [7, 8, 9]
94
+ [10]
95
+ ###
96
+ eachSlice: (array, number) ->
97
+ size = array.length
98
+ index = 0
99
+ slices = []
100
+ while index < size
101
+ nextIndex = index + number
102
+ slices.push array.slice(index, nextIndex)
103
+ index = nextIndex
104
+ if block = @blockGiven(arguments) then _.map(slices, block) else slices
105
+
106
+ ###
107
+ Splits or iterates over the array in groups of size +number+,
108
+ padding any remaining slots with +fill_with+ unless it is +false+.
109
+
110
+ >>> inGroupsOf [1..7], 3, (group) -> cout group
111
+ [1, 2, 3]
112
+ [4, 5, 6]
113
+ [7, null, null]
114
+
115
+ >>> inGroupsOf [1..3], 2, '&nbsp;', (group) -> cout group
116
+ [1, 2]
117
+ [3, "&nbsp;"]
118
+
119
+ >>> inGroupsOf [1..3], 2, false, (group) -> cout group
120
+ [1, 2]
121
+ [3]
122
+ ###
123
+ inGroupsOf: (array, number, fillWith = null) ->
124
+ return array if number < 1
125
+ unless fillWith is false
126
+ # size % number gives how many extra we have;
127
+ # subtracting from number gives how many to add;
128
+ # modulo number ensures we don't add group of just fill.
129
+ padding = (number - array.length % number) % number
130
+ if padding
131
+ fillWith = null if _.isFunction(fillWith)
132
+ array = array.slice()
133
+ array.push(fillWith) while padding-- > 0
134
+ @eachSlice array, number, @blockGiven(arguments)
135
+
136
+ exports: ->
137
+ result = {}
138
+ for prop of @
139
+ continue if not @hasOwnProperty(prop) or prop.match(/^(?:include|contains|reverse)$/)
140
+ result[prop] = @[prop]
141
+ result
142
+
143
+
144
+
145
+ # CommonJS module is defined
146
+ if exports?
147
+ if module?.exports
148
+ # Export module
149
+ module.exports = UnderscoreOutcasts
150
+ exports.UnderscoreOutcasts = UnderscoreOutcasts
151
+ else if define?.amd
152
+ # Register as a named module with AMD.
153
+ define 'underscore.outcasts', [], -> UnderscoreOutcasts
154
+ else
155
+ # Integrate with Underscore.js if defined
156
+ # or create our own underscore object.
157
+ @_ ||= {}
158
+ @_.outcasts = @_.out = UnderscoreOutcasts