modularity-rails 0.8.0 → 0.8.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.
- data/lib/modularity-rails/version.rb +1 -1
- data/spec/javascripts/tools/cache_spec.coffee +79 -0
- data/vendor/assets/javascripts/modularity.js.coffee +4 -1
- data/vendor/assets/javascripts/modules/button.coffee +1 -1
- data/vendor/assets/javascripts/modules/counter_button.coffee +1 -1
- data/vendor/assets/javascripts/tools/cache.coffee +43 -0
- metadata +15 -13
@@ -0,0 +1,79 @@
|
|
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"
|
8
|
+
|
9
|
+
|
10
|
+
describe 'Cache', ->
|
11
|
+
|
12
|
+
cache = null
|
13
|
+
beforeEach ->
|
14
|
+
cache = new window.Cache()
|
15
|
+
|
16
|
+
|
17
|
+
describe 'constructor', ->
|
18
|
+
|
19
|
+
it 'initializes with an empty cache', ->
|
20
|
+
expect(cache.cache).toEqual({})
|
21
|
+
|
22
|
+
|
23
|
+
describe 'add', ->
|
24
|
+
|
25
|
+
it 'stores the given data in the cache', ->
|
26
|
+
cache.add('foo', 'bar')
|
27
|
+
expect(cache.cache).toEqual({'foo': 'bar'})
|
28
|
+
|
29
|
+
it 'overwrites existing entries', ->
|
30
|
+
cache.cache = {'foo', 'bar'}
|
31
|
+
cache.add 'foo', 'new'
|
32
|
+
expect(cache.cache['foo']).toBe('new')
|
33
|
+
|
34
|
+
|
35
|
+
describe 'get', ->
|
36
|
+
|
37
|
+
it "returns undefined if the entry doesn't exist", ->
|
38
|
+
expect(cache.get('zonk')).toBe(undefined)
|
39
|
+
|
40
|
+
it "returns the entry if it exists", ->
|
41
|
+
cache.add 'foo', 'bar'
|
42
|
+
expect(cache.get('foo')).toBe('bar')
|
43
|
+
|
44
|
+
|
45
|
+
describe 'getMany', ->
|
46
|
+
|
47
|
+
result = null
|
48
|
+
beforeEach ->
|
49
|
+
cache.add('one', 1)
|
50
|
+
cache.add('two', 2)
|
51
|
+
result = cache.getMany ['one', 'three']
|
52
|
+
|
53
|
+
it "returns the values that exist in the 'found' structure", ->
|
54
|
+
expect(result.found).toEqual({'one': 1})
|
55
|
+
|
56
|
+
it "returns the values that don't exist in the 'missing' structure", ->
|
57
|
+
expect(result.missing).toEqual(['three'])
|
58
|
+
|
59
|
+
|
60
|
+
describe 'length', ->
|
61
|
+
|
62
|
+
it 'returns 0 for empty cache', ->
|
63
|
+
expect(cache.length()).toBe 0
|
64
|
+
|
65
|
+
it 'returns the number of objects in the cache', ->
|
66
|
+
cache.add('foo', 'bar')
|
67
|
+
cache.add('fooz', 'baz')
|
68
|
+
expect(cache.length()).toBe(2)
|
69
|
+
|
70
|
+
|
71
|
+
describe 'replaceAll', ->
|
72
|
+
|
73
|
+
it 'replaces the whole cache with the given data', ->
|
74
|
+
cache.add 'one', 1
|
75
|
+
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)
|
79
|
+
|
@@ -4,7 +4,10 @@
|
|
4
4
|
#
|
5
5
|
# Please see https://github.com/kevgo/modularity for more information.
|
6
6
|
|
7
|
-
|
7
|
+
|
8
|
+
window.modularity or= {}
|
9
|
+
|
10
|
+
class window.modularity.Module
|
8
11
|
|
9
12
|
# The container variable is required. Provide 'testing' in tests.
|
10
13
|
constructor: (container) ->
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# A button that counts how often it is clicked.
|
2
2
|
# This is implemented as a subclass of Button,
|
3
3
|
# to take advantage of the already existing functionality there.
|
4
|
-
class window.CounterButton extends Button
|
4
|
+
class window.modularity.CounterButton extends Button
|
5
5
|
|
6
6
|
constructor: ->
|
7
7
|
super
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# A generic cache.
|
2
|
+
# Stores key-value pairs.
|
3
|
+
class window.modularity.Cache
|
4
|
+
|
5
|
+
constructor: ->
|
6
|
+
@cache = {}
|
7
|
+
|
8
|
+
|
9
|
+
# Adds the given entry to the cache.
|
10
|
+
# Overwrites existing entries.
|
11
|
+
add: (key, value) ->
|
12
|
+
@cache[key] = value
|
13
|
+
|
14
|
+
|
15
|
+
# Returns the entry with the given key from the cache, or NULL if no entry exists.
|
16
|
+
get: (key) ->
|
17
|
+
@cache[key]
|
18
|
+
|
19
|
+
|
20
|
+
# Looks up several entries at once.
|
21
|
+
# Returns a hash of found entries, and a list of missing entries.
|
22
|
+
getMany: (keys) ->
|
23
|
+
result = { found: {}, missing: [] }
|
24
|
+
for key in keys
|
25
|
+
do (key) =>
|
26
|
+
value = @cache[key]
|
27
|
+
if value
|
28
|
+
result.found[key] = value
|
29
|
+
else
|
30
|
+
result.missing.push key
|
31
|
+
result
|
32
|
+
|
33
|
+
|
34
|
+
# Replaces the cache with the given data.
|
35
|
+
replaceAll: (data) ->
|
36
|
+
@cache = data
|
37
|
+
|
38
|
+
|
39
|
+
# Returns the number of cached objects.
|
40
|
+
length: () ->
|
41
|
+
# TODO(KG): This doesn't work in IE8.
|
42
|
+
Object.keys(@cache).length
|
43
|
+
|
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.8.
|
4
|
+
version: 0.8.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-
|
12
|
+
date: 2012-05-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70325015499260 !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: *
|
24
|
+
version_requirements: *70325015499260
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: capybara-webkit
|
27
|
-
requirement: &
|
27
|
+
requirement: &70325015480180 !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: *
|
35
|
+
version_requirements: *70325015480180
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: evergreen
|
38
|
-
requirement: &
|
38
|
+
requirement: &70325015479500 !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: *
|
46
|
+
version_requirements: *70325015479500
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rb-fsevent
|
49
|
-
requirement: &
|
49
|
+
requirement: &70325015478760 !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: *
|
57
|
+
version_requirements: *70325015478760
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: guard-livereload
|
60
|
-
requirement: &
|
60
|
+
requirement: &70325015478160 !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: *
|
68
|
+
version_requirements: *70325015478160
|
69
69
|
description: Description of ModularityRails.
|
70
70
|
email:
|
71
71
|
- kevin.goslar@gmail.com
|
@@ -97,12 +97,14 @@ files:
|
|
97
97
|
- spec/javascripts/templates/closable.html
|
98
98
|
- spec/javascripts/templates/test.html
|
99
99
|
- spec/javascripts/tools/ajax_loader_spec.coffee
|
100
|
+
- spec/javascripts/tools/cache_spec.coffee
|
100
101
|
- vendor/assets/javascripts/mixins/clickable.coffee
|
101
102
|
- vendor/assets/javascripts/mixins/closable.coffee
|
102
103
|
- vendor/assets/javascripts/modularity.js.coffee
|
103
104
|
- vendor/assets/javascripts/modules/button.coffee
|
104
105
|
- vendor/assets/javascripts/modules/counter_button.coffee
|
105
106
|
- vendor/assets/javascripts/tools/ajax_loader.coffee
|
107
|
+
- vendor/assets/javascripts/tools/cache.coffee
|
106
108
|
homepage: http://github.com/kevgo/modularity-rails
|
107
109
|
licenses: []
|
108
110
|
post_install_message:
|
@@ -123,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
125
|
version: '0'
|
124
126
|
requirements: []
|
125
127
|
rubyforge_project:
|
126
|
-
rubygems_version: 1.8.
|
128
|
+
rubygems_version: 1.8.10
|
127
129
|
signing_key:
|
128
130
|
specification_version: 3
|
129
131
|
summary: Summary of ModularityRails.
|