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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/tao/component/component_generator.rb +2 -12
  3. data/lib/generators/tao/install/install_generator.rb +11 -9
  4. data/lib/generators/tao/install/templates/app/views/layouts/application.html.erb +0 -1
  5. data/lib/tao_on_rails/action_view/helpers.rb +1 -1
  6. data/lib/tao_on_rails/components/base.rb +10 -3
  7. data/lib/tao_on_rails/engine.rb +0 -4
  8. data/lib/tao_on_rails/version.rb +1 -1
  9. metadata +7 -133
  10. data/lib/assets/javascripts/tao/application.coffee +0 -86
  11. data/lib/assets/javascripts/tao/attribute_manager.coffee +0 -94
  12. data/lib/assets/javascripts/tao/component.coffee +0 -175
  13. data/lib/assets/javascripts/tao/helpers.coffee +0 -34
  14. data/lib/assets/javascripts/tao/index.coffee +0 -14
  15. data/lib/assets/javascripts/tao/module.coffee +0 -93
  16. data/lib/assets/javascripts/tao/page.coffee +0 -9
  17. data/lib/assets/stylesheets/tao.scss +0 -3
  18. data/lib/generators/tao/assets/USAGE +0 -18
  19. data/lib/generators/tao/assets/assets_generator.rb +0 -8
  20. data/lib/generators/tao/channel/USAGE +0 -9
  21. data/lib/generators/tao/channel/channel_generator.rb +0 -17
  22. data/lib/generators/tao/channel/templates/channel.coffee.erb +0 -20
  23. data/lib/generators/tao/channel/templates/channel.rb.erb +0 -13
  24. data/lib/generators/tao/coffee/USAGE +0 -15
  25. data/lib/generators/tao/coffee/coffee_generator.rb +0 -27
  26. data/lib/generators/tao/coffee/templates/coffee.erb +0 -14
  27. data/lib/generators/tao/component/templates/component.coffee.erb +0 -5
  28. data/lib/generators/tao/component/templates/component.scss.erb +0 -3
  29. data/lib/generators/tao/controller/USAGE +0 -8
  30. data/lib/generators/tao/controller/controller_generator.rb +0 -20
  31. data/lib/generators/tao/controller/templates/controller.rb.erb +0 -57
  32. data/lib/generators/tao/locale/USAGE +0 -11
  33. data/lib/generators/tao/locale/locale_generator.rb +0 -34
  34. data/lib/generators/tao/locale/templates/model.yml.erb +0 -7
  35. data/lib/generators/tao/sass/USAGE +0 -15
  36. data/lib/generators/tao/sass/sass_generator.rb +0 -27
  37. data/lib/generators/tao/sass/templates/sass.erb +0 -3
  38. data/lib/generators/tao/scaffold/USAGE +0 -22
  39. data/lib/generators/tao/scaffold/scaffold_generator.rb +0 -16
  40. data/lib/generators/tao/view/USAGE +0 -9
  41. data/lib/generators/tao/view/templates/create.js.coffee +0 -5
  42. data/lib/generators/tao/view/templates/destroy.js.coffee +0 -2
  43. data/lib/generators/tao/view/templates/edit.html.erb +0 -1
  44. data/lib/generators/tao/view/templates/index.html.erb +0 -1
  45. data/lib/generators/tao/view/templates/new.html.erb +0 -1
  46. data/lib/generators/tao/view/templates/show.html.erb +0 -1
  47. data/lib/generators/tao/view/templates/update.js.coffee +0 -5
  48. data/lib/generators/tao/view/view_generator.rb +0 -38
  49. data/vendor/assets/javascripts/polyfills/custom-elements.js +0 -68
  50. data/vendor/assets/javascripts/polyfills/index.coffee +0 -7
  51. 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: 9bafebffce03548b6276eaab7c9af6f5cf015fd3
4
- data.tar.gz: 02f27e9957ae1e1387420e4f1d85ccbcdf5d40d5
3
+ metadata.gz: 5ba89a2aca102b14a98c51bcf0c5a57075cfdf34
4
+ data.tar.gz: dbadc3a082ab9c79cb00aa6ada0a786c445a1eb8
5
5
  SHA512:
6
- metadata.gz: b3f076acc51ff5ae2f085332db2f13983824063ab03ecfa2fb4410324c80c764b6706b0bfda767cc3ca30ac0b7f21ac633e12e735d520c242b0691f3eaebbea2
7
- data.tar.gz: 9d08e93ae5ef79aa4214c8ad0a9a4aedb2a5e2bbc236c67ed2870fbfa74f7e487576b72027cb98afe934e624c3fce4be639456d60f73705cd3a8247f862e58e2
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
@@ -17,5 +17,4 @@
17
17
  <%%= yield %>
18
18
  <%% end %>
19
19
  </body>
20
- </body>
21
20
  </html>
@@ -30,7 +30,7 @@ module TaoOnRails
30
30
  root.join('lib/**/components/**/*.rb'),
31
31
  root.join('app/**/components/**/*.rb')
32
32
  ]).each do |component|
33
- require_dependency component
33
+ require component
34
34
  end
35
35
  end
36
36
 
@@ -39,8 +39,15 @@ module TaoOnRails
39
39
  end
40
40
 
41
41
  def translate key, options = {}
42
- i18n_scope = self.class.name.underscore.split('/').join('.').gsub(/(.+)_component$/, '\1')
43
- I18n.t(key, options.merge!(scope: i18n_scope)).presence
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
@@ -1,7 +1,3 @@
1
- require 'turbolinks'
2
- require 'jquery-rails'
3
- require 'lodash-rails'
4
-
5
1
  module TaoOnRails
6
2
  class Engine < Rails::Engine
7
3
 
@@ -1,3 +1,3 @@
1
1
  module TaoOnRails
2
- VERSION = "0.10.0"
2
+ VERSION = "1.0.0.beta.1"
3
3
  end
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.10.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: 2017-09-03 00:00:00.000000000 Z
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.2'
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.2'
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: '0'
108
+ version: 1.3.1
235
109
  requirements: []
236
110
  rubyforge_project:
237
- rubygems_version: 2.6.11
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