modularity-rails 0.29.0 → 0.30.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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/Rakefile +0 -1
- data/app/assets/javascripts/modularity.min.js +3 -0
- data/lib/modularity-rails/version.rb +1 -1
- metadata +6 -93
- data/app/assets/javascripts/modularity/modularity.coffee +0 -139
- data/app/assets/javascripts/modularity/tools/array_tools.coffee +0 -6
- data/app/assets/javascripts/modularity/tools/object_tools.coffee +0 -31
- data/app/assets/javascripts/modularity/tools/string_tools.coffee +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 25dba21d976b604a2e44399fdd2b3898188bf33c
|
|
4
|
+
data.tar.gz: 5586725cd3912c2f899c79ad2b29818b2f34719d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4736d3136725af8ae0d42c42790ba52a994972c1dfc24c64edf3437d65c70b6a7fc0a9fb364732173bfe49976811dd124587bc3bfa493952be4b499bbf92595c
|
|
7
|
+
data.tar.gz: 5eee9530eb0a24a2f43b122985d89740ec4b391e09548575377897c6f2788b1e2454388e2d6144325a665b78323251ead8104c0f3ea8692ca9e8e98b0bc5f276
|
data/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Modularity::Rails [](https://travis-ci.org/kevgo/modularity-rails) [](https://gemnasium.com/kevgo/modularity-rails)
|
|
2
2
|
|
|
3
|
-
Makes the [
|
|
4
|
-
Rails 3.1 applications.
|
|
3
|
+
Makes the [modularity.js](http://github.com/kevgo/modularity.js) library
|
|
4
|
+
available to Rails 3.1 applications.
|
|
5
5
|
|
|
6
6
|
Modularity is a framework for lightweight component-oriented CoffeeScript.
|
|
7
7
|
It allows to compose functionally rich web pages in a clean, intuitive, and testable way
|
data/Rakefile
CHANGED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! modularity.js 0.30.0, copyright 2014 Kevin Goslar, see https://github.com/kevgo/modularity.js */
|
|
2
|
+
(function(){var a=function(a,b){return function(){return a.apply(b,arguments)}},b=[].slice;window.modularity={assert:function(a,b){return a&&0!==(null!=a?a.length:void 0)?!0:(alert(b),!1)},bind_global_event:function(a,b){return modularity.assert("string"==typeof a,"modularity.bind_global_event: parameter 'event_type' is empty")?"function"!=typeof b?alert("modularity.bind_global_event: parameter 'callback' must be a function, "+b+" ("+typeof b+") given."):modularity.global_event_container().bind(a,b):void 0},fire_global_event:function(a,b){return modularity.assert(a,"Module.fire_global_event: You must provide the event type to fire."),"string"!=typeof a?alert("Module.fire_global_event: Event type must be a string, "+a+" ("+typeof a+") given."):modularity.global_event_container().trigger(a,null!=b?b:b={})},global_event_container:function(){return modularity.global_event_container_cache||(modularity.global_event_container_cache=$(window))}},window.modularity.bindGlobalEvent=window.modularity.bind_global_event,window.modularity.fireGlobalEvent=window.modularity.fire_global_event,window.modularity.Module=function(){function c(b){this.trigger=a(this.trigger,this),this.on=a(this.on,this);var c,d,e,f,g,h,i,j,k,l,m=this;if("string"==typeof b&&"testing"!==b&&(b=$(b)),this.container=b,null==this.container)return alert("Error in Module constructor: No container given.");if("testing"!==b){if("string"!=typeof b.jquery)return alert("Error in Module constructor: The given container must be a jQuery object.");if(!(null!=b&&b.length>0))return alert("Error in Module constructor: The given container ('"+b.selector+"') is empty.");if(null==b||1!==b.length)return alert("Error in Module constructor: The given container ('"+b.selector+"') has more than one element.")}if(null!=this.mixins)for(i=this.mixins,g=0,h=i.length;h>g;g++){e=i[g],j=e.mixin,f=function(a,b){return m[a]?void 0:m[a]=function(){return b.apply(m,arguments)}};for(d in j)c=j[d],f(d,c);null!=(k=e.mixin)&&null!=(l=k.constructor)&&l.apply(this,arguments)}}return c.prototype.$=function(a,b){var c;return null==b&&(b={reportEmptyResults:!0}),c=this.container.find(a),0===c.length&&b.reportEmptyResults?alert("@$: element not found: "+c.selector):c},c.prototype.autobind=function(){var a,b,c,d,e,f,g,h,i,j;f=[],e=[];for(b in this)switch(typeof this[b]){case"object":f.push(b);break;case"function":modularity.string_starts_with(b,"on_")&&e.push(b)}for(g=0,i=f.length;i>g;g++)for(d=f[g],h=0,j=e.length;j>h;h++)a=e[h],modularity.string_starts_with(a,"on_"+d+"_")&&(c=a.substring(4+d.length),this[d].on(c,this[a]));return!1},c.prototype.on=function(a,b){return modularity.assert("string"==typeof a,"Module.bind_event: parameter 'event_type' is empty")?"function"!=typeof b?alert("Module.bind_event: parameter 'callback' must be a function, "+b+" ("+typeof b+") given."):this.container.bind(a,b):void 0},c.prototype.bindEvent=c.prototype.bind_event,c.prototype.bind_event=c.prototype.bind_event,c.prototype.trigger=function(a,b){return modularity.assert(a,"Module.fire_event: You must provide the event type to fire."),"string"!=typeof a?alert("Module.fire_event: Event type must be a string, "+a+" ("+typeof a+") given."):this.container.trigger(a,null!=b?b:b={})},c.prototype.fireEvent=c.prototype.fire_event,c.prototype.fire_event=c.prototype.fire_event,c.prototype.hide=function(){return this.container.hide(),this.container.trigger("hide")},c.mixin=function(){var a,c,d;return a=arguments[0],c=2<=arguments.length?b.call(arguments,1):[],a||alert("mixin not found"),(d=this.prototype).mixins||(d.mixins=[]),this.prototype.mixins.push({mixin:a,params:c})},c.prototype.show=function(){return this.container.show(),this.container.trigger("show")},c.prototype.visible=function(){return this.container.is(":visible")},c}(),window.modularity.string_starts_with=function(a,b){return a.substring(0,b.length)===b}}).call(this);
|
|
3
|
+
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: modularity-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.30.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kevin Goslar
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2014-01-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -24,91 +24,7 @@ dependencies:
|
|
|
24
24
|
- - '>='
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: 3.1.0
|
|
27
|
-
|
|
28
|
-
name: coffee-rails
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - '>='
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - '>='
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: jquery-rails
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - '>='
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :runtime
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - '>='
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: guard-livereload
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - '>='
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - '>='
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: konacha
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - '>='
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - '>='
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: selenium-webdriver
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - '>='
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - '>='
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: sqlite3
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - '>='
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0'
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - '>='
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0'
|
|
111
|
-
description: Makes the modularity-coffee framework available to Ruby on Rails applications.
|
|
27
|
+
description: Makes the modularity.js framework available to Ruby on Rails applications.
|
|
112
28
|
email:
|
|
113
29
|
- kevin.goslar@gmail.com
|
|
114
30
|
executables: []
|
|
@@ -117,12 +33,9 @@ extra_rdoc_files: []
|
|
|
117
33
|
files:
|
|
118
34
|
- app/assets/javascripts/modularity/mixins/clickable.coffee
|
|
119
35
|
- app/assets/javascripts/modularity/mixins/closable.coffee
|
|
120
|
-
- app/assets/javascripts/modularity/modularity.coffee
|
|
121
36
|
- app/assets/javascripts/modularity/modules/autogrow_textarea.coffee
|
|
122
37
|
- app/assets/javascripts/modularity/modules/button.coffee
|
|
123
|
-
- app/assets/javascripts/modularity
|
|
124
|
-
- app/assets/javascripts/modularity/tools/object_tools.coffee
|
|
125
|
-
- app/assets/javascripts/modularity/tools/string_tools.coffee
|
|
38
|
+
- app/assets/javascripts/modularity.min.js
|
|
126
39
|
- lib/modularity-rails/engine.rb
|
|
127
40
|
- lib/modularity-rails/version.rb
|
|
128
41
|
- lib/modularity-rails.rb
|
|
@@ -151,6 +64,6 @@ rubyforge_project:
|
|
|
151
64
|
rubygems_version: 2.0.14
|
|
152
65
|
signing_key:
|
|
153
66
|
specification_version: 4
|
|
154
|
-
summary: A lightweight, object- and component-oriented
|
|
155
|
-
|
|
67
|
+
summary: A lightweight, object- and component-oriented JavaScript framework for Ruby
|
|
68
|
+
on Rails applications.
|
|
156
69
|
test_files: []
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
#= require_self
|
|
2
|
-
#= require ./tools/string_tools
|
|
3
|
-
|
|
4
|
-
# The Modularity framework written specificially for CoffeeScript.
|
|
5
|
-
#
|
|
6
|
-
# Use UglifyJS (http://github.com/mishoo/UglifyJS) for compression.
|
|
7
|
-
#
|
|
8
|
-
# Please see https://github.com/kevgo/modularity for more information on Modularity,
|
|
9
|
-
# and https://github.com/kevgo/modularity-rails for Rails integration.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@modularity = {
|
|
13
|
-
|
|
14
|
-
# Checks whether the given condition is true.
|
|
15
|
-
# Shows an alert with the given message if not.
|
|
16
|
-
assert: (condition, message) ->
|
|
17
|
-
if !condition or condition?.length == 0
|
|
18
|
-
alert message
|
|
19
|
-
return false
|
|
20
|
-
true
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
# GLOBAL EVENTS.
|
|
24
|
-
|
|
25
|
-
# Subscribes to the given global event,
|
|
26
|
-
# i.e. calls the given function when the given global event type happens.
|
|
27
|
-
bind_global_event: (event_type, callback) ->
|
|
28
|
-
return unless modularity.assert typeof event_type == 'string', "modularity.bind_global_event: parameter 'event_type' is empty"
|
|
29
|
-
return alert "modularity.bind_global_event: parameter 'callback' must be a function, #{callback} (#{typeof callback}) given." unless typeof callback == 'function'
|
|
30
|
-
modularity.global_event_container().bind event_type, callback
|
|
31
|
-
|
|
32
|
-
# Fires the given global event with the given data payload.
|
|
33
|
-
fire_global_event: (event_type, data) ->
|
|
34
|
-
modularity.assert event_type, 'Module.fire_global_event: You must provide the event type to fire.'
|
|
35
|
-
return alert("Module.fire_global_event: Event type must be a string, #{event_type} (#{typeof event_type}) given.") unless typeof event_type == 'string'
|
|
36
|
-
modularity.global_event_container().trigger event_type, data ?= []
|
|
37
|
-
|
|
38
|
-
# Returns the DOM object that is used to fire global events on.
|
|
39
|
-
global_event_container: -> modularity.global_event_container_cache or= $(window)
|
|
40
|
-
}
|
|
41
|
-
@modularity.bindGlobalEvent = @modularity.bind_global_event
|
|
42
|
-
@modularity.fireGlobalEvent = @modularity.fire_global_event
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class @modularity.Module
|
|
46
|
-
|
|
47
|
-
# The container variable is required. Provide 'testing' in tests.
|
|
48
|
-
constructor: (container) ->
|
|
49
|
-
container = $(container) if (typeof container == 'string') and container != 'testing'
|
|
50
|
-
@container = container
|
|
51
|
-
|
|
52
|
-
return alert 'Error in Module constructor: No container given.' unless @container?
|
|
53
|
-
if container != 'testing'
|
|
54
|
-
return alert 'Error in Module constructor: The given container must be a jQuery object.' unless typeof container.jquery == 'string'
|
|
55
|
-
return alert "Error in Module constructor: The given container ('#{container.selector}') is empty." unless container? and container.length > 0
|
|
56
|
-
return alert "Error in Module constructor: The given container ('#{container.selector}') has more than one element." unless container? and container.length == 1
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
# Attach mixins.
|
|
60
|
-
if @mixins?
|
|
61
|
-
for mixin_data in @mixins
|
|
62
|
-
|
|
63
|
-
# Attach all properties from mixin to the prototype.
|
|
64
|
-
for methodName, method of mixin_data.mixin
|
|
65
|
-
do (methodName, method) => unless @[methodName]
|
|
66
|
-
@[methodName] = => method.apply(@, arguments)
|
|
67
|
-
|
|
68
|
-
# Call constructor function from mixin.
|
|
69
|
-
mixin_data.mixin?.constructor?.apply(@, arguments)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
# Runs the given query within the container element.
|
|
73
|
-
$: (query, options = { reportEmptyResults: yes }) ->
|
|
74
|
-
result = @container.find query
|
|
75
|
-
return alert "@$: element not found: #{result.selector}" if result.length == 0 and options['reportEmptyResults']
|
|
76
|
-
result
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
# MODULE EVENTS.
|
|
80
|
-
|
|
81
|
-
# Automatically binds events to member elements.
|
|
82
|
-
autobind: ->
|
|
83
|
-
my_fields = []
|
|
84
|
-
my_callbacks = []
|
|
85
|
-
for element of @
|
|
86
|
-
switch typeof @[element]
|
|
87
|
-
when 'object'
|
|
88
|
-
my_fields.push element
|
|
89
|
-
when 'function'
|
|
90
|
-
my_callbacks.push(element) if modularity.string_starts_with element, 'on_'
|
|
91
|
-
for field in my_fields
|
|
92
|
-
for callback in my_callbacks
|
|
93
|
-
if modularity.string_starts_with callback, "on_#{field}_"
|
|
94
|
-
event_name = callback.substring 4 + field.length
|
|
95
|
-
@[field].on event_name, @[callback]
|
|
96
|
-
false
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
# Calls the given function when this widget fires the given local event.
|
|
100
|
-
on: (event_type, callback) =>
|
|
101
|
-
return unless modularity.assert typeof event_type == 'string', "Module.bind_event: parameter 'event_type' is empty"
|
|
102
|
-
return alert "Module.bind_event: parameter 'callback' must be a function, #{callback} (#{typeof callback}) given." unless typeof callback == 'function'
|
|
103
|
-
@container.bind event_type, callback
|
|
104
|
-
bindEvent: Module::bind_event
|
|
105
|
-
bind_event: Module::bind_event
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
# Fires the given local event with the given data payload.
|
|
109
|
-
trigger: (event_type, data) =>
|
|
110
|
-
modularity.assert event_type, 'Module.fire_event: You must provide the event type to fire.'
|
|
111
|
-
return alert("Module.fire_event: Event type must be a string, #{event_type} (#{typeof event_type}) given.") unless typeof event_type == 'string'
|
|
112
|
-
@container.trigger event_type, data ?= {}
|
|
113
|
-
fireEvent: Module::fire_event
|
|
114
|
-
fire_event: Module::fire_event
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
# Hides this module.
|
|
118
|
-
hide: ->
|
|
119
|
-
@container.hide()
|
|
120
|
-
@container.trigger 'hide'
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
# mixin = constructor of Draggable
|
|
124
|
-
# self = Card
|
|
125
|
-
@mixin: (mixin, p...) ->
|
|
126
|
-
alert("mixin not found") unless mixin
|
|
127
|
-
@prototype.mixins or= []
|
|
128
|
-
@prototype.mixins.push({mixin: mixin, params: p})
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
# Shows this module.
|
|
132
|
-
show: ->
|
|
133
|
-
@container.show()
|
|
134
|
-
@container.trigger 'show'
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
# Returns whether this module is currently visible.
|
|
138
|
-
visible: ->
|
|
139
|
-
@container.is ':visible'
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# Returns a replica of the given hash.
|
|
2
|
-
# Don't use this method for real objects with superclasses, prototypes, and stuff.
|
|
3
|
-
modularity.clone_hash = (obj) ->
|
|
4
|
-
result = {}
|
|
5
|
-
result[key] = value for own key, value of obj
|
|
6
|
-
result
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# Returns an object that contains only the attributes
|
|
10
|
-
# that are different between obj_1 and obj_2.
|
|
11
|
-
# Only looks for changed attributes, not missing attributes.
|
|
12
|
-
modularity.object_diff = (obj_1, obj_2) ->
|
|
13
|
-
result = {}
|
|
14
|
-
for own key, value_2 of obj_2
|
|
15
|
-
do (key, value_2) ->
|
|
16
|
-
value_1 = obj_1[key]
|
|
17
|
-
result[key] = value_2 if value_1 != value_2
|
|
18
|
-
result
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
# Returns the number of attributes of the given object.
|
|
22
|
-
# NOTE(KG): This doesn't work in IE8.
|
|
23
|
-
modularity.object_length = (obj) ->
|
|
24
|
-
Object.keys(obj).length
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
# Allows to populate the given object through a callback.
|
|
28
|
-
modularity.tap = (obj, callback) ->
|
|
29
|
-
callback obj
|
|
30
|
-
obj
|
|
31
|
-
|