modularity-rails 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
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.