modularity-rails 0.9.0 → 0.9.1

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 (73) hide show
  1. data/.travis.yml +4 -6
  2. data/Guardfile +3 -4
  3. data/demo/.gitignore +15 -0
  4. data/demo/Gemfile +23 -0
  5. data/demo/README.rdoc +261 -0
  6. data/demo/Rakefile +7 -0
  7. data/demo/app/assets/images/rails.png +0 -0
  8. data/demo/app/assets/javascripts/application.coffee +2 -0
  9. data/demo/app/assets/stylesheets/application.css +13 -0
  10. data/demo/app/controllers/application_controller.rb +3 -0
  11. data/demo/app/helpers/application_helper.rb +2 -0
  12. data/demo/app/mailers/.gitkeep +0 -0
  13. data/demo/app/models/.gitkeep +0 -0
  14. data/demo/app/views/layouts/application.html.erb +14 -0
  15. data/demo/config.ru +4 -0
  16. data/demo/config/application.rb +59 -0
  17. data/demo/config/boot.rb +6 -0
  18. data/demo/config/database.yml +25 -0
  19. data/demo/config/environment.rb +5 -0
  20. data/demo/config/environments/development.rb +37 -0
  21. data/demo/config/environments/production.rb +67 -0
  22. data/demo/config/environments/test.rb +37 -0
  23. data/demo/config/initializers/backtrace_silencers.rb +7 -0
  24. data/demo/config/initializers/inflections.rb +15 -0
  25. data/demo/config/initializers/konacha.rb +5 -0
  26. data/demo/config/initializers/mime_types.rb +5 -0
  27. data/demo/config/initializers/secret_token.rb +7 -0
  28. data/demo/config/initializers/session_store.rb +8 -0
  29. data/demo/config/initializers/wrap_parameters.rb +14 -0
  30. data/demo/config/locales/en.yml +5 -0
  31. data/demo/config/routes.rb +58 -0
  32. data/demo/db/seeds.rb +7 -0
  33. data/demo/lib/assets/.gitkeep +0 -0
  34. data/demo/lib/tasks/.gitkeep +0 -0
  35. data/demo/log/.gitkeep +0 -0
  36. data/demo/public/404.html +26 -0
  37. data/demo/public/422.html +26 -0
  38. data/demo/public/500.html +25 -0
  39. data/demo/public/favicon.ico +0 -0
  40. data/demo/public/index.html +241 -0
  41. data/demo/public/robots.txt +5 -0
  42. data/demo/script/rails +6 -0
  43. data/demo/spec/javascripts/konacha_config.coffee +1 -0
  44. data/demo/spec/javascripts/mixins/closable_spec.coffee +98 -0
  45. data/{spec → demo/spec}/javascripts/modularity_spec.coffee +118 -109
  46. data/demo/spec/javascripts/modules/autogrow_textarea_spec.coffee +43 -0
  47. data/demo/spec/javascripts/modules/button_spec.coffee +39 -0
  48. data/demo/spec/javascripts/modules/counter_button_spec.coffee +57 -0
  49. data/demo/spec/javascripts/sinon-chai.js +116 -0
  50. data/demo/spec/javascripts/sinon.js +3555 -0
  51. data/demo/spec/javascripts/spec_helper.coffee +11 -0
  52. data/demo/spec/javascripts/templates/autogrow_textarea.jst.ejs +2 -0
  53. data/{spec/javascripts/templates/button.html → demo/spec/javascripts/templates/button.jst.ejs} +0 -0
  54. data/{spec/javascripts/templates/closable.html → demo/spec/javascripts/templates/closable.jst.ejs} +0 -0
  55. data/{spec/javascripts/templates/test.html → demo/spec/javascripts/templates/modularity.jst.ejs} +0 -0
  56. data/{spec → demo/spec}/javascripts/tools/ajax_loader_spec.coffee +21 -27
  57. data/{spec → demo/spec}/javascripts/tools/cache_spec.coffee +13 -18
  58. data/demo/vendor/assets/javascripts/.gitkeep +0 -0
  59. data/demo/vendor/assets/stylesheets/.gitkeep +0 -0
  60. data/demo/vendor/plugins/.gitkeep +0 -0
  61. data/lib/modularity-rails/version.rb +1 -1
  62. data/run_tests +6 -0
  63. data/vendor/assets/javascripts/modularity.js.coffee +2 -1
  64. data/vendor/assets/javascripts/modules/autogrow_textarea.coffee +31 -0
  65. data/vendor/assets/javascripts/modules/counter_button.coffee +2 -0
  66. metadata +73 -26
  67. data/spec/javascripts/external/coffee-script.js +0 -8
  68. data/spec/javascripts/external/jasmine-jquery.js +0 -288
  69. data/spec/javascripts/external/jquery.min.js +0 -4
  70. data/spec/javascripts/mixins/closable_spec.coffee +0 -101
  71. data/spec/javascripts/modules/button_spec.coffee +0 -45
  72. data/spec/javascripts/modules/counter_button_spec.coffee +0 -64
  73. data/spec/javascripts/spec_helper.coffee +0 -22
@@ -0,0 +1,11 @@
1
+ #= require application
2
+ #= require sinon
3
+ #= require sinon-chai
4
+ #= require_tree ./templates
5
+
6
+ window.chai.use window.sinonChai
7
+
8
+ # Renders the template with the given path in the #konacha div.
9
+ window.template = (path) ->
10
+ $('#konacha').html JST["templates/#{path}"]()
11
+
@@ -0,0 +1,2 @@
1
+ <textarea id="autogrow_area" rows="3" cols="4"></textarea>
2
+
@@ -1,24 +1,21 @@
1
- describe 'test environment setup', ->
2
-
3
-  it 'loading libraries', ->
4
- load_modularity()
5
-    loadCS "/vendor/assets/javascripts/tools/cache.coffee"
6
-    loadCS "/vendor/assets/javascripts/tools/ajax_loader.coffee"
1
+ #= require spec_helper
2
+ #= require tools/ajax_loader
7
3
 
8
4
 
9
5
  describe 'ajax_loader', ->
10
6
   
11
- ajax_loader = null
7
+ ajax_loader = rspy = spy_get = null
12
8
  beforeEach ->
13
9
  ajax_loader = new modularity.AjaxLoader()
10
+ spy = sinon.spy()
11
+ spy_get = sinon.spy jQuery, 'get'
12
+
13
+ afterEach ->
14
+ spy_get.restore()
14
15
 
15
16
   describe 'get', ->
16
17
 
17
18
  url = "/users/4"
18
- spy = null
19
- beforeEach ->
20
- spyOn(jQuery, 'get')
21
- spy = jasmine.createSpy()
22
19
 
23
20
  describe 'the data has already been loaded', ->
24
21
 
@@ -27,8 +24,8 @@ describe 'ajax_loader', ->
27
24
 
28
25
  ajax_loader.get(url, spy)
29
26
 
30
- expect(spy).toHaveBeenCalled()
31
- expect(spy.argsForCall[0][0]).toEqual("my data")
27
+ spy.should.have.been.called
28
+ spy.should.have.been.calledWith "my data"
32
29
 
33
30
 
34
31
  describe 'the request is already in progress', ->
@@ -38,35 +35,33 @@ describe 'ajax_loader', ->
38
35
 
39
36
 
40
37
  it 'adds the callback to the callback array', ->
41
- expect(ajax_loader.cache.get(url).length).toEqual(1)
42
- expect(ajax_loader.cache.get(url)[0]).toEqual(spy)
38
+ ajax_loader.cache.get(url).should.have.length 1
39
+ ajax_loader.cache.get(url)[0].should.equal spy
43
40
 
44
41
 
45
42
  it 'returns without calling the callback', ->
46
- expect(spy).not.toHaveBeenCalled()
43
+ spy.should.not.have.been.called
47
44
 
48
45
 
49
46
  it 'does not make another ajax request', ->
50
- expect(jQuery.get).not.toHaveBeenCalled()
51
-
47
+ jQuery.get.should.not.have.been.called
52
48
 
53
49
 
54
50
  describe 'first time request', ->
55
51
 
56
52
  beforeEach ->
57
- ajax_loader.get(url, spy)
53
+ ajax_loader.get url, spy
58
54
 
59
55
  it 'makes an ajax request', ->
60
- expect(jQuery.get).toHaveBeenCalled()
56
+ jQuery.get.should.have.been.called
61
57
 
62
58
 
63
59
  it 'saves the callback for later', ->
64
- expect(ajax_loader.cache.get(url).length).toEqual(1)
65
- expect(ajax_loader.cache.get(url)[0]).toEqual(spy)
60
+ ajax_loader.cache.get(url).should.have.length 1
61
+ ajax_loader.cache.get(url)[0].should.equal spy
66
62
 
67
63
  it 'returns without calling the callback', ->
68
- expect(spy).not.toHaveBeenCalled()
69
-
64
+ spy.should.not.have.been.called
70
65
 
71
66
 
72
67
  describe 'ajax request successful', ->
@@ -78,8 +73,7 @@ describe 'ajax_loader', ->
78
73
  jquery_callback('result')
79
74
 
80
75
  it 'calls the given callbacks', ->
81
- expect(spy).toHaveBeenCalled()
82
- expect(spy.argsForCall[0][0]).toEqual('result')
76
+ spy.should.have.been.calledWith 'result'
83
77
 
84
78
  it 'replaces the cache callbacks with returned data', ->
85
- expect(ajax_loader.cache.get(url)).toEqual('result')
79
+ ajax_loader.cache.get(url).should.equal 'result'
@@ -1,10 +1,5 @@
1
1
  #= require spec_helper
2
-
3
- describe 'test environment setup', ->
4
-
5
- it 'loading libraries', ->
6
- load_modularity()
7
- loadCS "/vendor/assets/javascripts/tools/cache.coffee"
2
+ #= require tools/cache
8
3
 
9
4
 
10
5
  describe 'Cache', ->
@@ -17,29 +12,29 @@ describe 'Cache', ->
17
12
  describe 'constructor', ->
18
13
 
19
14
  it 'initializes with an empty cache', ->
20
- expect(cache.cache).toEqual({})
15
+ cache.cache.should.eql({})
21
16
 
22
17
 
23
18
  describe 'add', ->
24
19
 
25
20
  it 'stores the given data in the cache', ->
26
21
  cache.add('foo', 'bar')
27
- expect(cache.cache).toEqual({'foo': 'bar'})
22
+ cache.cache.should.eql({'foo': 'bar'})
28
23
 
29
24
  it 'overwrites existing entries', ->
30
25
  cache.cache = {'foo', 'bar'}
31
26
  cache.add 'foo', 'new'
32
- expect(cache.cache['foo']).toBe('new')
27
+ (cache.cache['foo']).should.be.equal('new')
33
28
 
34
29
 
35
30
  describe 'get', ->
36
31
 
37
32
  it "returns undefined if the entry doesn't exist", ->
38
- expect(cache.get('zonk')).toBe(undefined)
33
+ expect(cache.get('zonk')).to.be.undefined
39
34
 
40
35
  it "returns the entry if it exists", ->
41
36
  cache.add 'foo', 'bar'
42
- expect(cache.get('foo')).toBe('bar')
37
+ cache.get('foo').should.equal('bar')
43
38
 
44
39
 
45
40
  describe 'getMany', ->
@@ -51,21 +46,21 @@ describe 'Cache', ->
51
46
  result = cache.getMany ['one', 'three']
52
47
 
53
48
  it "returns the values that exist in the 'found' structure", ->
54
- expect(result.found).toEqual({'one': 1})
49
+ result.found.should.eql({'one': 1})
55
50
 
56
51
  it "returns the values that don't exist in the 'missing' structure", ->
57
- expect(result.missing).toEqual(['three'])
52
+ result.missing.should.eql(['three'])
58
53
 
59
54
 
60
55
  describe 'length', ->
61
56
 
62
57
  it 'returns 0 for empty cache', ->
63
- expect(cache.length()).toBe 0
58
+ cache.length().should.equal 0
64
59
 
65
60
  it 'returns the number of objects in the cache', ->
66
61
  cache.add('foo', 'bar')
67
62
  cache.add('fooz', 'baz')
68
- expect(cache.length()).toBe(2)
63
+ cache.length().should.equal(2)
69
64
 
70
65
 
71
66
  describe 'replaceAll', ->
@@ -73,7 +68,7 @@ describe 'Cache', ->
73
68
  it 'replaces the whole cache with the given data', ->
74
69
  cache.add 'one', 1
75
70
  cache.replaceAll {'one': 2, two: 3}
76
- expect(cache.length()).toBe(2)
77
- expect(cache.get('one')).toBe(2)
78
- expect(cache.get('two')).toBe(3)
71
+ cache.length().should.equal(2)
72
+ cache.get('one').should.equal(2)
73
+ cache.get('two').should.equal(3)
79
74
 
File without changes
@@ -1,3 +1,3 @@
1
1
  module ModularityRails
2
- VERSION = "0.9.0"
2
+ VERSION = "0.9.1"
3
3
  end
@@ -0,0 +1,6 @@
1
+ cd demo/
2
+ bundle
3
+ echo
4
+ bundle exec rake konacha:run
5
+ echo
6
+
@@ -59,7 +59,7 @@ class window.modularity.Module
59
59
  @[methodName] = => method.apply(@, arguments)
60
60
 
61
61
  # Call constructor function from mixin.
62
- mixin_data.mixin.constructor.apply @, arguments
62
+ mixin_data.mixin?.constructor?.apply(@, arguments)
63
63
 
64
64
 
65
65
  # MODULE EVENTS.
@@ -80,6 +80,7 @@ class window.modularity.Module
80
80
  # mixin = constructor of Draggable
81
81
  # self = Card
82
82
  @mixin: (mixin, p...) ->
83
+ alert("mixin not found") unless mixin
83
84
  @prototype.mixins or= []
84
85
  @prototype.mixins.push({mixin: mixin, params: p})
85
86
 
@@ -0,0 +1,31 @@
1
+ # Autogrowing textarea.
2
+ class modularity.AutogrowTextArea extends modularity.Module
3
+
4
+ constructor: (container) ->
5
+ super
6
+ @textarea = @container[0]
7
+ @textarea.style.height = "auto"
8
+ @textarea.style.overflow = "hidden"
9
+ @container.keyup @grow
10
+ @container.focus @grow
11
+ @container.blur @grow
12
+
13
+ # How many characters per line.
14
+ @characters_per_line = this.textarea.cols
15
+
16
+ # The initial (minimal) number of rows.
17
+ @min_rows = this.textarea.rows
18
+
19
+ @grow()
20
+
21
+
22
+ # Sets the height of the textarea according to the content.
23
+ grow: =>
24
+ @textarea.rows = Math.max modularity.AutogrowTextArea.lines(@characters_per_line, @textarea.value), @min_rows
25
+
26
+ # Returns the number of lines
27
+ @lines: (width, text) ->
28
+ lines_count = 0
29
+ lines = text.split(/\n/)
30
+ lines_count += Math.floor((line.length / width) + 1) for line in lines
31
+ lines_count
@@ -1,3 +1,5 @@
1
+ #= require modules/button
2
+
1
3
  # A button that counts how often it is clicked.
2
4
  # This is implemented as a subclass of Button,
3
5
  # to take advantage of the already existing functionality there.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modularity-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-11 00:00:00.000000000 Z
12
+ date: 2012-05-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70160283637480 !ruby/object:Gem::Requirement
16
+ requirement: &70252801875220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70160283637480
24
+ version_requirements: *70252801875220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: capybara-webkit
27
- requirement: &70160283637020 !ruby/object:Gem::Requirement
27
+ requirement: &70252801874260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70160283637020
35
+ version_requirements: *70252801874260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: evergreen
38
- requirement: &70160283636560 !ruby/object:Gem::Requirement
38
+ requirement: &70252801871820 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70160283636560
46
+ version_requirements: *70252801871820
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rb-fsevent
49
- requirement: &70160283635920 !ruby/object:Gem::Requirement
49
+ requirement: &70252801870780 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70160283635920
57
+ version_requirements: *70252801870780
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard-livereload
60
- requirement: &70160283635300 !ruby/object:Gem::Requirement
60
+ requirement: &70252801869880 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70160283635300
68
+ version_requirements: *70252801869880
69
69
  description: Description of ModularityRails.
70
70
  email:
71
71
  - kevin.goslar@gmail.com
@@ -81,26 +81,73 @@ files:
81
81
  - LICENSE
82
82
  - README.md
83
83
  - Rakefile
84
+ - demo/.gitignore
85
+ - demo/Gemfile
86
+ - demo/README.rdoc
87
+ - demo/Rakefile
88
+ - demo/app/assets/images/rails.png
89
+ - demo/app/assets/javascripts/application.coffee
90
+ - demo/app/assets/stylesheets/application.css
91
+ - demo/app/controllers/application_controller.rb
92
+ - demo/app/helpers/application_helper.rb
93
+ - demo/app/mailers/.gitkeep
94
+ - demo/app/models/.gitkeep
95
+ - demo/app/views/layouts/application.html.erb
96
+ - demo/config.ru
97
+ - demo/config/application.rb
98
+ - demo/config/boot.rb
99
+ - demo/config/database.yml
100
+ - demo/config/environment.rb
101
+ - demo/config/environments/development.rb
102
+ - demo/config/environments/production.rb
103
+ - demo/config/environments/test.rb
104
+ - demo/config/initializers/backtrace_silencers.rb
105
+ - demo/config/initializers/inflections.rb
106
+ - demo/config/initializers/konacha.rb
107
+ - demo/config/initializers/mime_types.rb
108
+ - demo/config/initializers/secret_token.rb
109
+ - demo/config/initializers/session_store.rb
110
+ - demo/config/initializers/wrap_parameters.rb
111
+ - demo/config/locales/en.yml
112
+ - demo/config/routes.rb
113
+ - demo/db/seeds.rb
114
+ - demo/lib/assets/.gitkeep
115
+ - demo/lib/tasks/.gitkeep
116
+ - demo/log/.gitkeep
117
+ - demo/public/404.html
118
+ - demo/public/422.html
119
+ - demo/public/500.html
120
+ - demo/public/favicon.ico
121
+ - demo/public/index.html
122
+ - demo/public/robots.txt
123
+ - demo/script/rails
124
+ - demo/spec/javascripts/konacha_config.coffee
125
+ - demo/spec/javascripts/mixins/closable_spec.coffee
126
+ - demo/spec/javascripts/modularity_spec.coffee
127
+ - demo/spec/javascripts/modules/autogrow_textarea_spec.coffee
128
+ - demo/spec/javascripts/modules/button_spec.coffee
129
+ - demo/spec/javascripts/modules/counter_button_spec.coffee
130
+ - demo/spec/javascripts/sinon-chai.js
131
+ - demo/spec/javascripts/sinon.js
132
+ - demo/spec/javascripts/spec_helper.coffee
133
+ - demo/spec/javascripts/templates/autogrow_textarea.jst.ejs
134
+ - demo/spec/javascripts/templates/button.jst.ejs
135
+ - demo/spec/javascripts/templates/closable.jst.ejs
136
+ - demo/spec/javascripts/templates/modularity.jst.ejs
137
+ - demo/spec/javascripts/tools/ajax_loader_spec.coffee
138
+ - demo/spec/javascripts/tools/cache_spec.coffee
139
+ - demo/vendor/assets/javascripts/.gitkeep
140
+ - demo/vendor/assets/stylesheets/.gitkeep
141
+ - demo/vendor/plugins/.gitkeep
84
142
  - lib/modularity-rails.rb
85
143
  - lib/modularity-rails/engine.rb
86
144
  - lib/modularity-rails/version.rb
87
145
  - modularity-rails.gemspec
88
- - spec/javascripts/external/coffee-script.js
89
- - spec/javascripts/external/jasmine-jquery.js
90
- - spec/javascripts/external/jquery.min.js
91
- - spec/javascripts/mixins/closable_spec.coffee
92
- - spec/javascripts/modularity_spec.coffee
93
- - spec/javascripts/modules/button_spec.coffee
94
- - spec/javascripts/modules/counter_button_spec.coffee
95
- - spec/javascripts/spec_helper.coffee
96
- - spec/javascripts/templates/button.html
97
- - spec/javascripts/templates/closable.html
98
- - spec/javascripts/templates/test.html
99
- - spec/javascripts/tools/ajax_loader_spec.coffee
100
- - spec/javascripts/tools/cache_spec.coffee
146
+ - run_tests
101
147
  - vendor/assets/javascripts/mixins/clickable.coffee
102
148
  - vendor/assets/javascripts/mixins/closable.coffee
103
149
  - vendor/assets/javascripts/modularity.js.coffee
150
+ - vendor/assets/javascripts/modules/autogrow_textarea.coffee
104
151
  - vendor/assets/javascripts/modules/button.coffee
105
152
  - vendor/assets/javascripts/modules/counter_button.coffee
106
153
  - vendor/assets/javascripts/tools/ajax_loader.coffee
@@ -125,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
172
  version: '0'
126
173
  requirements: []
127
174
  rubyforge_project:
128
- rubygems_version: 1.8.15
175
+ rubygems_version: 1.8.10
129
176
  signing_key:
130
177
  specification_version: 3
131
178
  summary: Summary of ModularityRails.