tao_on_rails 0.10.0 → 1.0.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/generators/tao/component/component_generator.rb +2 -12
- data/lib/generators/tao/install/install_generator.rb +11 -9
- data/lib/generators/tao/install/templates/app/views/layouts/application.html.erb +0 -1
- data/lib/tao_on_rails/action_view/helpers.rb +1 -1
- data/lib/tao_on_rails/components/base.rb +10 -3
- data/lib/tao_on_rails/engine.rb +0 -4
- data/lib/tao_on_rails/version.rb +1 -1
- metadata +7 -133
- data/lib/assets/javascripts/tao/application.coffee +0 -86
- data/lib/assets/javascripts/tao/attribute_manager.coffee +0 -94
- data/lib/assets/javascripts/tao/component.coffee +0 -175
- data/lib/assets/javascripts/tao/helpers.coffee +0 -34
- data/lib/assets/javascripts/tao/index.coffee +0 -14
- data/lib/assets/javascripts/tao/module.coffee +0 -93
- data/lib/assets/javascripts/tao/page.coffee +0 -9
- data/lib/assets/stylesheets/tao.scss +0 -3
- data/lib/generators/tao/assets/USAGE +0 -18
- data/lib/generators/tao/assets/assets_generator.rb +0 -8
- data/lib/generators/tao/channel/USAGE +0 -9
- data/lib/generators/tao/channel/channel_generator.rb +0 -17
- data/lib/generators/tao/channel/templates/channel.coffee.erb +0 -20
- data/lib/generators/tao/channel/templates/channel.rb.erb +0 -13
- data/lib/generators/tao/coffee/USAGE +0 -15
- data/lib/generators/tao/coffee/coffee_generator.rb +0 -27
- data/lib/generators/tao/coffee/templates/coffee.erb +0 -14
- data/lib/generators/tao/component/templates/component.coffee.erb +0 -5
- data/lib/generators/tao/component/templates/component.scss.erb +0 -3
- data/lib/generators/tao/controller/USAGE +0 -8
- data/lib/generators/tao/controller/controller_generator.rb +0 -20
- data/lib/generators/tao/controller/templates/controller.rb.erb +0 -57
- data/lib/generators/tao/locale/USAGE +0 -11
- data/lib/generators/tao/locale/locale_generator.rb +0 -34
- data/lib/generators/tao/locale/templates/model.yml.erb +0 -7
- data/lib/generators/tao/sass/USAGE +0 -15
- data/lib/generators/tao/sass/sass_generator.rb +0 -27
- data/lib/generators/tao/sass/templates/sass.erb +0 -3
- data/lib/generators/tao/scaffold/USAGE +0 -22
- data/lib/generators/tao/scaffold/scaffold_generator.rb +0 -16
- data/lib/generators/tao/view/USAGE +0 -9
- data/lib/generators/tao/view/templates/create.js.coffee +0 -5
- data/lib/generators/tao/view/templates/destroy.js.coffee +0 -2
- data/lib/generators/tao/view/templates/edit.html.erb +0 -1
- data/lib/generators/tao/view/templates/index.html.erb +0 -1
- data/lib/generators/tao/view/templates/new.html.erb +0 -1
- data/lib/generators/tao/view/templates/show.html.erb +0 -1
- data/lib/generators/tao/view/templates/update.js.coffee +0 -5
- data/lib/generators/tao/view/view_generator.rb +0 -38
- data/vendor/assets/javascripts/polyfills/custom-elements.js +0 -68
- data/vendor/assets/javascripts/polyfills/index.coffee +0 -7
- data/vendor/assets/javascripts/polyfills/native-shim.coffee +0 -117
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ba89a2aca102b14a98c51bcf0c5a57075cfdf34
|
4
|
+
data.tar.gz: dbadc3a082ab9c79cb00aa6ada0a786c445a1eb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e349016c0cf23a7877da2fb3215c346749f84483f50278a997eef1e0d9c5ccf8d68899813bf561fcd65faf88aef69cb69bd8819a7193ab3dce1713855d84f813
|
7
|
+
data.tar.gz: d70070f3f4b1523e8ca62baf77b54475f81f962374d1451506708b6a6614d351684d8844a7d1ecb98bdcd7935fce4d05e443c6165fffaf80f16a25501c52fa53
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
1
3
|
module Tao
|
2
4
|
module Generators
|
3
5
|
|
@@ -6,23 +8,11 @@ module Tao
|
|
6
8
|
|
7
9
|
check_class_collision suffix: "Component"
|
8
10
|
|
9
|
-
class_option :variants, type: :array, default: [], desc: "Generate assets for different variants"
|
10
|
-
|
11
11
|
attr_reader :component_name
|
12
12
|
|
13
13
|
def create_component_file
|
14
14
|
@component_name = class_name.underscore.split('/').map(&:singularize).join('_')
|
15
15
|
template "component.rb.erb", File.join('app/components', class_path, "#{file_name}_component.rb")
|
16
|
-
|
17
|
-
if (variants = options[:variants]).any?
|
18
|
-
variants.each do |variant|
|
19
|
-
template "component.coffee.erb", File.join('app/assets/javascripts/', variant, class_path, "components/#{file_name}.coffee")
|
20
|
-
template "component.scss.erb", File.join('app/assets/stylesheets/', variant, class_path, "components/#{file_name}.scss")
|
21
|
-
end
|
22
|
-
else
|
23
|
-
template "component.coffee.erb", File.join('app/assets/javascripts/', class_path, "components/#{file_name}.coffee")
|
24
|
-
template "component.scss.erb", File.join('app/assets/stylesheets/', class_path, "components/#{file_name}.scss")
|
25
|
-
end
|
26
16
|
end
|
27
17
|
|
28
18
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
1
3
|
module Tao
|
2
4
|
module Generators
|
3
5
|
class InstallGenerator < Rails::Generators::Base
|
@@ -8,15 +10,15 @@ module Tao
|
|
8
10
|
|
9
11
|
gem 'tao_on_rails'
|
10
12
|
|
11
|
-
remove_file 'app/assets/javascripts/cable.js'
|
12
|
-
remove_file 'app/assets/javascripts/application.js'
|
13
|
-
remove_file 'app/assets/stylesheets/application.css'
|
14
|
-
|
15
|
-
template 'app/assets/javascripts/application.coffee'
|
16
|
-
template 'app/assets/stylesheets/application.scss'
|
17
|
-
template 'app/assets/stylesheets/_globals.scss'
|
18
|
-
|
19
|
-
template 'app/views/layouts/application.html.erb', force: true
|
13
|
+
# remove_file 'app/assets/javascripts/cable.js'
|
14
|
+
# remove_file 'app/assets/javascripts/application.js'
|
15
|
+
# remove_file 'app/assets/stylesheets/application.css'
|
16
|
+
#
|
17
|
+
# template 'app/assets/javascripts/application.coffee'
|
18
|
+
# template 'app/assets/stylesheets/application.scss'
|
19
|
+
# template 'app/assets/stylesheets/_globals.scss'
|
20
|
+
#
|
21
|
+
# template 'app/views/layouts/application.html.erb', force: true
|
20
22
|
|
21
23
|
template 'app/components/application_component.rb'
|
22
24
|
end
|
@@ -39,8 +39,15 @@ module TaoOnRails
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def translate key, options = {}
|
42
|
-
|
43
|
-
|
42
|
+
keys = [].tap do |result|
|
43
|
+
component_class = self.class
|
44
|
+
until component_class == TaoOnRails::Components::Base
|
45
|
+
scope = component_class.name.underscore.split('/').join('.').gsub(/(.+)_component$/, '\1')
|
46
|
+
result << "#{scope}.#{key}".to_sym
|
47
|
+
component_class = component_class.superclass
|
48
|
+
end
|
49
|
+
end
|
50
|
+
I18n.t(keys.shift, options.merge!(default: keys))
|
44
51
|
end
|
45
52
|
alias_method :t, :translate
|
46
53
|
|
@@ -117,7 +124,7 @@ module TaoOnRails
|
|
117
124
|
end
|
118
125
|
|
119
126
|
def find_template(name = template_name)
|
120
|
-
view.lookup_context.find_all(name, template_paths, true, template_keys).first
|
127
|
+
view.lookup_context.find_all(name, template_paths, true, template_keys, formats: [:html]).first
|
121
128
|
end
|
122
129
|
|
123
130
|
def template_keys
|
data/lib/tao_on_rails/engine.rb
CHANGED
data/lib/tao_on_rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tao_on_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.beta.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Siyuan Liu
|
@@ -9,50 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-01-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: turbolinks
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - "~>"
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: 5.0.1
|
21
|
-
type: :runtime
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - "~>"
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: 5.0.1
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: jquery-rails
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - "~>"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: 4.3.1
|
35
|
-
type: :runtime
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: 4.3.1
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: lodash-rails
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - "~>"
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: 4.17.4
|
49
|
-
type: :runtime
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - "~>"
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: 4.17.4
|
56
14
|
- !ruby/object:Gem::Dependency
|
57
15
|
name: rails
|
58
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -62,7 +20,7 @@ dependencies:
|
|
62
20
|
version: 5.0.0
|
63
21
|
- - "<"
|
64
22
|
- !ruby/object:Gem::Version
|
65
|
-
version: '5.
|
23
|
+
version: '5.3'
|
66
24
|
type: :runtime
|
67
25
|
prerelease: false
|
68
26
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -72,7 +30,7 @@ dependencies:
|
|
72
30
|
version: 5.0.0
|
73
31
|
- - "<"
|
74
32
|
- !ruby/object:Gem::Version
|
75
|
-
version: '5.
|
33
|
+
version: '5.3'
|
76
34
|
- !ruby/object:Gem::Dependency
|
77
35
|
name: sqlite3
|
78
36
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,48 +45,6 @@ dependencies:
|
|
87
45
|
- - ">="
|
88
46
|
- !ruby/object:Gem::Version
|
89
47
|
version: '0'
|
90
|
-
- !ruby/object:Gem::Dependency
|
91
|
-
name: blade
|
92
|
-
requirement: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 0.7.0
|
97
|
-
type: :development
|
98
|
-
prerelease: false
|
99
|
-
version_requirements: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 0.7.0
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
name: blade-sauce_labs_plugin
|
106
|
-
requirement: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 0.7.1
|
111
|
-
type: :development
|
112
|
-
prerelease: false
|
113
|
-
version_requirements: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 0.7.1
|
118
|
-
- !ruby/object:Gem::Dependency
|
119
|
-
name: selenium-webdriver
|
120
|
-
requirement: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 3.2.0
|
125
|
-
type: :development
|
126
|
-
prerelease: false
|
127
|
-
version_requirements: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 3.2.0
|
132
48
|
- !ruby/object:Gem::Dependency
|
133
49
|
name: mocha
|
134
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,31 +72,9 @@ files:
|
|
156
72
|
- LICENSE
|
157
73
|
- README.md
|
158
74
|
- Rakefile
|
159
|
-
- lib/assets/javascripts/tao/application.coffee
|
160
|
-
- lib/assets/javascripts/tao/attribute_manager.coffee
|
161
|
-
- lib/assets/javascripts/tao/component.coffee
|
162
|
-
- lib/assets/javascripts/tao/helpers.coffee
|
163
|
-
- lib/assets/javascripts/tao/index.coffee
|
164
|
-
- lib/assets/javascripts/tao/module.coffee
|
165
|
-
- lib/assets/javascripts/tao/page.coffee
|
166
|
-
- lib/assets/stylesheets/tao.scss
|
167
|
-
- lib/generators/tao/assets/USAGE
|
168
|
-
- lib/generators/tao/assets/assets_generator.rb
|
169
|
-
- lib/generators/tao/channel/USAGE
|
170
|
-
- lib/generators/tao/channel/channel_generator.rb
|
171
|
-
- lib/generators/tao/channel/templates/channel.coffee.erb
|
172
|
-
- lib/generators/tao/channel/templates/channel.rb.erb
|
173
|
-
- lib/generators/tao/coffee/USAGE
|
174
|
-
- lib/generators/tao/coffee/coffee_generator.rb
|
175
|
-
- lib/generators/tao/coffee/templates/coffee.erb
|
176
75
|
- lib/generators/tao/component/USAGE
|
177
76
|
- lib/generators/tao/component/component_generator.rb
|
178
|
-
- lib/generators/tao/component/templates/component.coffee.erb
|
179
77
|
- lib/generators/tao/component/templates/component.rb.erb
|
180
|
-
- lib/generators/tao/component/templates/component.scss.erb
|
181
|
-
- lib/generators/tao/controller/USAGE
|
182
|
-
- lib/generators/tao/controller/controller_generator.rb
|
183
|
-
- lib/generators/tao/controller/templates/controller.rb.erb
|
184
78
|
- lib/generators/tao/install/USAGE
|
185
79
|
- lib/generators/tao/install/install_generator.rb
|
186
80
|
- lib/generators/tao/install/templates/app/assets/javascripts/application.coffee
|
@@ -188,32 +82,12 @@ files:
|
|
188
82
|
- lib/generators/tao/install/templates/app/assets/stylesheets/application.scss
|
189
83
|
- lib/generators/tao/install/templates/app/components/application_component.rb
|
190
84
|
- lib/generators/tao/install/templates/app/views/layouts/application.html.erb
|
191
|
-
- lib/generators/tao/locale/USAGE
|
192
|
-
- lib/generators/tao/locale/locale_generator.rb
|
193
|
-
- lib/generators/tao/locale/templates/model.yml.erb
|
194
|
-
- lib/generators/tao/sass/USAGE
|
195
|
-
- lib/generators/tao/sass/sass_generator.rb
|
196
|
-
- lib/generators/tao/sass/templates/sass.erb
|
197
|
-
- lib/generators/tao/scaffold/USAGE
|
198
|
-
- lib/generators/tao/scaffold/scaffold_generator.rb
|
199
|
-
- lib/generators/tao/view/USAGE
|
200
|
-
- lib/generators/tao/view/templates/create.js.coffee
|
201
|
-
- lib/generators/tao/view/templates/destroy.js.coffee
|
202
|
-
- lib/generators/tao/view/templates/edit.html.erb
|
203
|
-
- lib/generators/tao/view/templates/index.html.erb
|
204
|
-
- lib/generators/tao/view/templates/new.html.erb
|
205
|
-
- lib/generators/tao/view/templates/show.html.erb
|
206
|
-
- lib/generators/tao/view/templates/update.js.coffee
|
207
|
-
- lib/generators/tao/view/view_generator.rb
|
208
85
|
- lib/tao_on_rails.rb
|
209
86
|
- lib/tao_on_rails/action_view/helpers.rb
|
210
87
|
- lib/tao_on_rails/components/base.rb
|
211
88
|
- lib/tao_on_rails/components/page_component.rb
|
212
89
|
- lib/tao_on_rails/engine.rb
|
213
90
|
- lib/tao_on_rails/version.rb
|
214
|
-
- vendor/assets/javascripts/polyfills/custom-elements.js
|
215
|
-
- vendor/assets/javascripts/polyfills/index.coffee
|
216
|
-
- vendor/assets/javascripts/polyfills/native-shim.coffee
|
217
91
|
homepage: https://github.com/mycolorway/tao_on_rails
|
218
92
|
licenses:
|
219
93
|
- MIT
|
@@ -229,12 +103,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
229
103
|
version: 2.3.1
|
230
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
105
|
requirements:
|
232
|
-
- - "
|
106
|
+
- - ">"
|
233
107
|
- !ruby/object:Gem::Version
|
234
|
-
version:
|
108
|
+
version: 1.3.1
|
235
109
|
requirements: []
|
236
110
|
rubyforge_project:
|
237
|
-
rubygems_version: 2.6.
|
111
|
+
rubygems_version: 2.6.14
|
238
112
|
signing_key:
|
239
113
|
specification_version: 4
|
240
114
|
summary: The missing frontend solution for Rails project
|
@@ -1,86 +0,0 @@
|
|
1
|
-
#= require ./module
|
2
|
-
|
3
|
-
class TaoApplication extends TaoModule
|
4
|
-
|
5
|
-
@_initializers: {}
|
6
|
-
|
7
|
-
@initializer: (name, callback) ->
|
8
|
-
@_initializers[name] = callback
|
9
|
-
|
10
|
-
@removeInitializer: (name) ->
|
11
|
-
@_initializers[name] = null
|
12
|
-
|
13
|
-
_init: ->
|
14
|
-
@_initGon()
|
15
|
-
@_initI18n()
|
16
|
-
@_initUjs()
|
17
|
-
@_initTurbolinks()
|
18
|
-
|
19
|
-
callback?(@) for name, callback of @constructor._initializers
|
20
|
-
|
21
|
-
_initGon: ->
|
22
|
-
return unless window.gon
|
23
|
-
$.extend @, window.gon
|
24
|
-
window.gon = null
|
25
|
-
|
26
|
-
_initUjs: ->
|
27
|
-
$(document).on "ajax:before", 'a[data-remote]', ->
|
28
|
-
$link = $ @
|
29
|
-
return false if $link.hasClass('disabled')
|
30
|
-
$link.addClass 'disabled'
|
31
|
-
.on "ajax:complete", 'a[data-remote]', ->
|
32
|
-
$(@).removeClass 'disabled'
|
33
|
-
|
34
|
-
_initI18n: ->
|
35
|
-
I18n.locale = @locale if window.I18n && @locale
|
36
|
-
|
37
|
-
_initPage: ($page) ->
|
38
|
-
window.currentPage = @currentPage = $page[0]
|
39
|
-
|
40
|
-
_initTurbolinks: ->
|
41
|
-
$(document).on 'turbolinks:before-visit', (e) =>
|
42
|
-
if @currentPage?.trigger?('before-leave') == false
|
43
|
-
e.preventDefault()
|
44
|
-
return
|
45
|
-
|
46
|
-
@trigger 'before-page-visit', [e.originalEvent?.data.url]
|
47
|
-
|
48
|
-
.on 'turbolinks:request-start', (e) =>
|
49
|
-
@trigger 'page-request-start', [e.originalEvent?.data.xhr]
|
50
|
-
|
51
|
-
.on 'turbolinks:visit', (e) =>
|
52
|
-
@trigger 'page-visit', [e.originalEvent?.data.url]
|
53
|
-
|
54
|
-
.on 'turbolinks:before-cache', (e) =>
|
55
|
-
@trigger 'before-page-cache', [@currentPage]
|
56
|
-
$(@currentPage).find('[tao-id]').each (i, el) ->
|
57
|
-
el.beforeCache?()
|
58
|
-
null
|
59
|
-
@currentPage?.beforeCache?()
|
60
|
-
window.currentPage = @currentPage = null
|
61
|
-
|
62
|
-
.on 'turbolinks:request-end', (e) =>
|
63
|
-
@trigger 'page-request-end', [e.originalEvent?.data.xhr]
|
64
|
-
|
65
|
-
.on 'turbolinks:before-render', (e) =>
|
66
|
-
# turbolinks render won't trigger patching of customElements polyfills
|
67
|
-
if customElements._internals
|
68
|
-
customElements._internals.disconnectTree document.body
|
69
|
-
|
70
|
-
@trigger 'before-page-render', [$ e.originalEvent?.data.newBody]
|
71
|
-
|
72
|
-
.on 'turbolinks:render', (e) =>
|
73
|
-
# turbolinks render won't trigger patching of customElements polyfills
|
74
|
-
if customElements._internals
|
75
|
-
customElements._internals.connectTree document.body
|
76
|
-
|
77
|
-
@trigger 'page-render', [$('body > .tao-page')]
|
78
|
-
|
79
|
-
.on 'turbolinks:load', (e) =>
|
80
|
-
$page = $ 'body > .tao-page'
|
81
|
-
return unless $page.length > 0
|
82
|
-
@_initGon()
|
83
|
-
@_initPage $page
|
84
|
-
@trigger 'page-load', [@currentPage]
|
85
|
-
|
86
|
-
Tao.Application = window.TaoApplication = TaoApplication
|
@@ -1,94 +0,0 @@
|
|
1
|
-
#= require ./module
|
2
|
-
|
3
|
-
manager = null
|
4
|
-
|
5
|
-
class TaoAttributeManager extends TaoModule
|
6
|
-
|
7
|
-
@defaultOptions =
|
8
|
-
type: 'string'
|
9
|
-
|
10
|
-
@getManager: ->
|
11
|
-
manager ||= new TaoAttributeManager()
|
12
|
-
|
13
|
-
@getAttribute: (element, name, options) ->
|
14
|
-
manager = @getManager()
|
15
|
-
options = _.extend {}, @defaultOptions, options
|
16
|
-
manager._attributes[_.camelCase(options.type)]?.get element, name, options
|
17
|
-
|
18
|
-
@setAttribute: (element, name, val, options) ->
|
19
|
-
manager = @getManager()
|
20
|
-
options = _.extend {}, @defaultOptions, options
|
21
|
-
manager._attributes[_.camelCase(options.type)]?.set element, name, val, options
|
22
|
-
|
23
|
-
_attributes: {}
|
24
|
-
|
25
|
-
@registerAttribute: (type, config) ->
|
26
|
-
if _.isString config
|
27
|
-
@::_attributes[type] = @::_attributes[config]
|
28
|
-
else
|
29
|
-
@::_attributes[type] = config
|
30
|
-
|
31
|
-
@registerAttribute 'string',
|
32
|
-
get: (element, name, options) ->
|
33
|
-
element.getAttribute(name) || options.default || ''
|
34
|
-
set: (element, name, val, options) ->
|
35
|
-
element.setAttribute(name, val.toString())
|
36
|
-
|
37
|
-
@registerAttribute 'number',
|
38
|
-
get: (element, name, options) ->
|
39
|
-
value = parseFloat element.getAttribute(name)
|
40
|
-
if _.isNaN value
|
41
|
-
if _.isNumber(options.default) then options.default else null
|
42
|
-
else
|
43
|
-
value
|
44
|
-
set: (element, name, val, options) ->
|
45
|
-
element.setAttribute(name, val.toString())
|
46
|
-
|
47
|
-
@registerAttribute 'boolean',
|
48
|
-
get: (element, name, options) ->
|
49
|
-
element.hasAttribute(name)
|
50
|
-
set: (element, name, val, options) ->
|
51
|
-
if val
|
52
|
-
element.setAttribute name, ''
|
53
|
-
else
|
54
|
-
element.removeAttribute name
|
55
|
-
|
56
|
-
@registerAttribute 'bool', 'boolean'
|
57
|
-
|
58
|
-
@registerAttribute 'hash',
|
59
|
-
get: (element, name, options) ->
|
60
|
-
value = element.getAttribute name
|
61
|
-
if _.isString value
|
62
|
-
try
|
63
|
-
JSON.parse value
|
64
|
-
catch e
|
65
|
-
options.default || null
|
66
|
-
else
|
67
|
-
options.default || null
|
68
|
-
set: (element, name, val, options) ->
|
69
|
-
val = try
|
70
|
-
JSON.stringify val
|
71
|
-
catch e
|
72
|
-
'{}'
|
73
|
-
element.setAttribute name, val
|
74
|
-
|
75
|
-
@registerAttribute 'object', 'hash'
|
76
|
-
|
77
|
-
@registerAttribute 'array',
|
78
|
-
get: (element, name, options) ->
|
79
|
-
value = element.getAttribute name
|
80
|
-
if _.isString value
|
81
|
-
try
|
82
|
-
JSON.parse value
|
83
|
-
catch e
|
84
|
-
options.default || null
|
85
|
-
else
|
86
|
-
options.default || null
|
87
|
-
set: (element, name, val, options) ->
|
88
|
-
val = try
|
89
|
-
JSON.stringify val
|
90
|
-
catch e
|
91
|
-
'[]'
|
92
|
-
element.setAttribute name, val
|
93
|
-
|
94
|
-
Tao.AttributeManager = window.TaoAttributeManager = TaoAttributeManager
|