modularity-rails 0.12.0 → 0.12.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/README.md +2 -0
- data/demo/spec/javascripts/data/persistence_manager_spec.coffee +0 -17
- data/demo/spec/javascripts/tools/object_tools_spec.coffee +19 -0
- data/lib/modularity-rails/version.rb +1 -1
- data/vendor/assets/javascripts/modularity/data/persistence_manager.coffee +12 -16
- data/vendor/assets/javascripts/modularity/tools/object_tools.coffee +11 -0
- metadata +11 -11
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Modularity::Rails [](http://travis-ci.org/#!/kevgo/modularity-rails)
|
2
2
|
|
3
|
+
A lightweight, modular, object and component oriented frontend framework for Rails applications.
|
4
|
+
|
3
5
|
Makes the [Modularity CoffeeScript](http://github.com/kevgo/modularity-coffeescript) library available to
|
4
6
|
Rails 3.1 applications.
|
5
7
|
|
@@ -33,23 +33,6 @@ describe 'PersistenceManager', ->
|
|
33
33
|
persistence_manager.key.should.equal 'id'
|
34
34
|
|
35
35
|
|
36
|
-
describe 'clone', ->
|
37
|
-
|
38
|
-
clone = null
|
39
|
-
beforeEach ->
|
40
|
-
clone = persistence_manager.clone entry_1
|
41
|
-
|
42
|
-
it 'returns an object that has the same properties as the given object', ->
|
43
|
-
clone.id.should.equal 1
|
44
|
-
clone.value.should.equal 'one'
|
45
|
-
|
46
|
-
it 'returns an object that can be changed independently from the given object', ->
|
47
|
-
clone.id = 2
|
48
|
-
clone.value = 'two'
|
49
|
-
entry_1.id.should == 1
|
50
|
-
entry_1.value.should == 'one'
|
51
|
-
|
52
|
-
|
53
36
|
describe 'create', ->
|
54
37
|
new_obj = {value: 'foo'}
|
55
38
|
|
@@ -1,6 +1,25 @@
|
|
1
1
|
#= require spec_helper
|
2
2
|
#= require modularity/tools/object_tools
|
3
3
|
|
4
|
+
|
5
|
+
describe 'clone', ->
|
6
|
+
|
7
|
+
clone = null
|
8
|
+
entry_1 = {id: 1, value: 'one'}
|
9
|
+
beforeEach ->
|
10
|
+
clone = modularity.clone_hash entry_1
|
11
|
+
|
12
|
+
it 'returns an object that has the same properties as the given object', ->
|
13
|
+
clone.id.should.equal 1
|
14
|
+
clone.value.should.equal 'one'
|
15
|
+
|
16
|
+
it 'returns an object that can be changed independently from the given object', ->
|
17
|
+
clone.id = 2
|
18
|
+
clone.value = 'two'
|
19
|
+
entry_1.id.should == 1
|
20
|
+
entry_1.value.should == 'one'
|
21
|
+
|
22
|
+
|
4
23
|
describe 'object_tools', ->
|
5
24
|
|
6
25
|
describe 'object_diff', ->
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#= require modularity/data/ajax_loader
|
1
2
|
#= require modularity/data/indexed_cache
|
2
3
|
#= require modularity/tools/object_tools
|
3
4
|
|
@@ -17,12 +18,8 @@ class modularity.PersistenceManager
|
|
17
18
|
|
18
19
|
@key = params.key or 'id'
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
clone: (obj) ->
|
23
|
-
result = {}
|
24
|
-
result[key] = value for own key, value of obj
|
25
|
-
result
|
21
|
+
# For handling parallel requests to the server.
|
22
|
+
@loader = new modularity.AjaxLoader { cache: no }
|
26
23
|
|
27
24
|
|
28
25
|
# Returns the URL to access the collection of objects.
|
@@ -73,15 +70,11 @@ class modularity.PersistenceManager
|
|
73
70
|
return callback client_obj
|
74
71
|
|
75
72
|
# No data on client at all --> load data from server.
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
client_entry = @clone server_entry
|
82
|
-
@client_data.add client_entry
|
83
|
-
callback client_entry
|
84
|
-
}
|
73
|
+
@loader.get "#{@base_url}/#{key}", (server_entry) =>
|
74
|
+
@server_data.add server_entry
|
75
|
+
client_entry = @clone server_entry
|
76
|
+
@client_data.add client_entry
|
77
|
+
callback client_entry
|
85
78
|
|
86
79
|
|
87
80
|
# Loads all objects from the server.
|
@@ -107,6 +100,9 @@ class modularity.PersistenceManager
|
|
107
100
|
@create obj, callback
|
108
101
|
|
109
102
|
|
103
|
+
# Updates the given object.
|
104
|
+
# The given object must exist on the server already,
|
105
|
+
# and have a proper value in the key attribute.
|
110
106
|
update: (obj, callback) ->
|
111
107
|
|
112
108
|
# Create a new hash, containing only the changed attributes between obj and it's replica in @server_data.
|
@@ -128,4 +124,4 @@ class modularity.PersistenceManager
|
|
128
124
|
@server_data.add server_obj
|
129
125
|
callback server_obj if callback
|
130
126
|
}
|
131
|
-
|
127
|
+
|
@@ -1,6 +1,16 @@
|
|
1
1
|
# Returns an object that contains only the attributes
|
2
2
|
# that are different between obj_1 and obj_2.
|
3
3
|
# Only looks for changed attributes, not missing attributes.
|
4
|
+
|
5
|
+
|
6
|
+
# Returns a replica of the given hash.
|
7
|
+
# Don't use this method for real objects with superclasses, prototypes, and stuff.
|
8
|
+
modularity.clone_hash = (obj) ->
|
9
|
+
result = {}
|
10
|
+
result[key] = value for own key, value of obj
|
11
|
+
result
|
12
|
+
|
13
|
+
|
4
14
|
modularity.object_diff = (obj_1, obj_2) ->
|
5
15
|
result = {}
|
6
16
|
for own key, value_2 of obj_2
|
@@ -13,3 +23,4 @@ modularity.object_diff = (obj_1, obj_2) ->
|
|
13
23
|
modularity.object_length = (obj) ->
|
14
24
|
# NOTE(KG): This doesn't work in IE8.
|
15
25
|
Object.keys(obj).length
|
26
|
+
|
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.12.
|
4
|
+
version: 0.12.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-05-19 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70133478527080 !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: *70133478527080
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: capybara-webkit
|
27
|
-
requirement: &
|
27
|
+
requirement: &70133478526560 !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: *70133478526560
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: evergreen
|
38
|
-
requirement: &
|
38
|
+
requirement: &70133478525980 !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: *70133478525980
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rb-fsevent
|
49
|
-
requirement: &
|
49
|
+
requirement: &70133478525420 !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: *70133478525420
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: guard-livereload
|
60
|
-
requirement: &
|
60
|
+
requirement: &70133478524900 !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: *70133478524900
|
69
69
|
description: Description of ModularityRails.
|
70
70
|
email:
|
71
71
|
- kevin.goslar@gmail.com
|