riojs 0.0.0

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.
Files changed (270) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +24 -0
  3. data/VERSION +1 -0
  4. data/bin/rio +5 -0
  5. data/generators/rio_app/USAGE +19 -0
  6. data/generators/rio_app/rio_app_generator.rb +40 -0
  7. data/generators/rio_app/templates/app.build +10 -0
  8. data/generators/rio_app/templates/app.css +0 -0
  9. data/generators/rio_app/templates/app.js +20 -0
  10. data/generators/rio_app/templates/app_view.html.erb +19 -0
  11. data/generators/rio_app/templates/fixture.js +4 -0
  12. data/generators/rio_app/templates/rio.html.erb +18 -0
  13. data/generators/rio_app/templates/rio_controller.rb +2 -0
  14. data/generators/rio_app/templates/spec.js +7 -0
  15. data/generators/rio_component/USAGE +13 -0
  16. data/generators/rio_component/rio_component_generator.rb +16 -0
  17. data/generators/rio_component/templates/component.css +0 -0
  18. data/generators/rio_component/templates/component.js +11 -0
  19. data/generators/rio_component/templates/fixture.js +3 -0
  20. data/generators/rio_component/templates/spec.js +6 -0
  21. data/generators/rio_model/USAGE +12 -0
  22. data/generators/rio_model/rio_model_generator.rb +21 -0
  23. data/generators/rio_model/templates/fixture.js +3 -0
  24. data/generators/rio_model/templates/model.js +9 -0
  25. data/generators/rio_model/templates/spec.js +6 -0
  26. data/generators/rio_page/USAGE +14 -0
  27. data/generators/rio_page/rio_page_generator.rb +16 -0
  28. data/generators/rio_page/templates/fixture.js +3 -0
  29. data/generators/rio_page/templates/page.css +12 -0
  30. data/generators/rio_page/templates/page.js +12 -0
  31. data/generators/rio_page/templates/page.jst +64 -0
  32. data/generators/rio_page/templates/spec.js +6 -0
  33. data/generators/rio_resource/USAGE +20 -0
  34. data/generators/rio_resource/rio_resource_generator.rb +10 -0
  35. data/generators/rio_resource/templates/controller.rb +3 -0
  36. data/init.rb +4 -0
  37. data/install/config/juggernaut_hosts.yml +18 -0
  38. data/install/lib/tasks/rio.rake +1 -0
  39. data/install/script/rio_server +37 -0
  40. data/lib/rio/autospec.rb +86 -0
  41. data/lib/rio/install.rb +90 -0
  42. data/lib/rio/juggernaut.rb +212 -0
  43. data/lib/rio/path.rb +3 -0
  44. data/lib/rio/rio_compressor.rb +219 -0
  45. data/lib/rio/rio_file_controller.rb +16 -0
  46. data/lib/rio/rio_on_rails.rb +586 -0
  47. data/lib/rio/rio_proxy_controller.rb +60 -0
  48. data/lib/rio/rio_push_controller.rb +48 -0
  49. data/lib/rio/rio_routes.rb +24 -0
  50. data/lib/rio/rio_spec_controller.rb +70 -0
  51. data/lib/riojs.rb +14 -0
  52. data/lib/tasks/rio.rb +63 -0
  53. data/public/images/background-chiffon.png +0 -0
  54. data/public/images/button-gradient-overlay-down.png +0 -0
  55. data/public/images/button-gradient-overlay.png +0 -0
  56. data/public/images/icons/add.png +0 -0
  57. data/public/images/icons/error-big.png +0 -0
  58. data/public/images/icons/warning-big.png +0 -0
  59. data/public/images/rio-logo-big.png +0 -0
  60. data/public/images/rio-logo.png +0 -0
  61. data/public/images/splitter-handle-horizontal.png +0 -0
  62. data/public/images/splitter-handle-vertical.png +0 -0
  63. data/public/images/tab-bar-gradient-overlay.png +0 -0
  64. data/public/images/title-gradient-overlay.png +0 -0
  65. data/public/images/trash.gif +0 -0
  66. data/public/javascripts/components/accordion.js +144 -0
  67. data/public/javascripts/components/alert_box.js +59 -0
  68. data/public/javascripts/components/base.js +47 -0
  69. data/public/javascripts/components/box.js +63 -0
  70. data/public/javascripts/components/button.js +98 -0
  71. data/public/javascripts/components/checkbox.js +44 -0
  72. data/public/javascripts/components/container.js +265 -0
  73. data/public/javascripts/components/grid_view.js +107 -0
  74. data/public/javascripts/components/image.js +19 -0
  75. data/public/javascripts/components/input.js +171 -0
  76. data/public/javascripts/components/label.js +15 -0
  77. data/public/javascripts/components/lightbox.js +160 -0
  78. data/public/javascripts/components/link.js +43 -0
  79. data/public/javascripts/components/list_item.js +44 -0
  80. data/public/javascripts/components/list_view.js +192 -0
  81. data/public/javascripts/components/marquee.js +131 -0
  82. data/public/javascripts/components/menu.js +89 -0
  83. data/public/javascripts/components/notification.js +75 -0
  84. data/public/javascripts/components/overlay.js +134 -0
  85. data/public/javascripts/components/panel.js +146 -0
  86. data/public/javascripts/components/radio.js +46 -0
  87. data/public/javascripts/components/splitter.js +65 -0
  88. data/public/javascripts/components/tab_bar.js +64 -0
  89. data/public/javascripts/components/tab_panel.js +57 -0
  90. data/public/javascripts/components/textarea.js +223 -0
  91. data/public/javascripts/components/toggle_button.js +22 -0
  92. data/public/javascripts/components/tooltip.js +80 -0
  93. data/public/javascripts/lib/application.js +482 -0
  94. data/public/javascripts/lib/attr.js +760 -0
  95. data/public/javascripts/lib/benchmark.js +235 -0
  96. data/public/javascripts/lib/blank.html +39 -0
  97. data/public/javascripts/lib/boot.js +300 -0
  98. data/public/javascripts/lib/clipboard.js +96 -0
  99. data/public/javascripts/lib/collection_entity.js +46 -0
  100. data/public/javascripts/lib/component.js +129 -0
  101. data/public/javascripts/lib/console.js +75 -0
  102. data/public/javascripts/lib/console/apps/console.build +43 -0
  103. data/public/javascripts/lib/console/apps/console.js +28 -0
  104. data/public/javascripts/lib/console/blank.html +39 -0
  105. data/public/javascripts/lib/console/components/benchmark.js +196 -0
  106. data/public/javascripts/lib/console/components/console.js +352 -0
  107. data/public/javascripts/lib/console/components/dependencies_list.js +17 -0
  108. data/public/javascripts/lib/console/components/docs.js +66 -0
  109. data/public/javascripts/lib/console/components/playground.js +30 -0
  110. data/public/javascripts/lib/console/console.html +27 -0
  111. data/public/javascripts/lib/console/console_commands.js +287 -0
  112. data/public/javascripts/lib/console/console_commands.js.rej +21 -0
  113. data/public/javascripts/lib/console/console_mixin.js +22 -0
  114. data/public/javascripts/lib/console/docs/files.html +579 -0
  115. data/public/javascripts/lib/console/docs/index.html +323 -0
  116. data/public/javascripts/lib/console/docs/symbols/Object.html +291 -0
  117. data/public/javascripts/lib/console/docs/symbols/_global_.html +413 -0
  118. data/public/javascripts/lib/console/docs/symbols/rio.AIM.html +490 -0
  119. data/public/javascripts/lib/console/docs/symbols/rio.Application.html +841 -0
  120. data/public/javascripts/lib/console/docs/symbols/rio.Attr.html +1075 -0
  121. data/public/javascripts/lib/console/docs/symbols/rio.Binding.html +272 -0
  122. data/public/javascripts/lib/console/docs/symbols/rio.Component.html +419 -0
  123. data/public/javascripts/lib/console/docs/symbols/rio.Cookie.html +543 -0
  124. data/public/javascripts/lib/console/docs/symbols/rio.DelayedTask#initialize.html +270 -0
  125. data/public/javascripts/lib/console/docs/symbols/rio.DelayedTask.html +391 -0
  126. data/public/javascripts/lib/console/docs/symbols/rio.JsTemplate.html +271 -0
  127. data/public/javascripts/lib/console/docs/symbols/rio.Juggernaut.html +329 -0
  128. data/public/javascripts/lib/console/docs/symbols/rio.Model.html +822 -0
  129. data/public/javascripts/lib/console/docs/symbols/rio.Page.html +383 -0
  130. data/public/javascripts/lib/console/docs/symbols/rio.Template.html +328 -0
  131. data/public/javascripts/lib/console/docs/symbols/rio.Utils.html +617 -0
  132. data/public/javascripts/lib/console/docs/symbols/rio.html +506 -0
  133. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_components_base.js.html +54 -0
  134. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_application.js.html +490 -0
  135. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_attr.js.html +768 -0
  136. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_boot.js.html +308 -0
  137. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_clipboard.js.html +103 -0
  138. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_collection_entity.js.html +53 -0
  139. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_component.js.html +137 -0
  140. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_cookie.js.html +81 -0
  141. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_delayed_task.js.html +68 -0
  142. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_file.js.html +80 -0
  143. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_flash_detect.js.html +129 -0
  144. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_form.js.html +95 -0
  145. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_id.js.html +50 -0
  146. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_inflector.js.html +167 -0
  147. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_js_template.js.html +283 -0
  148. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_juggernaut.js.html +303 -0
  149. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_key_map.js.html +68 -0
  150. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_layout_manager.js.html +175 -0
  151. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_log.js.html +17 -0
  152. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_model.js.html +1074 -0
  153. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_page.js.html +246 -0
  154. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_parameters.js.html +66 -0
  155. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_protohack.js.html +305 -0
  156. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_push.js.html +12 -0
  157. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_rsh.js.html +659 -0
  158. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_swfobject.js.html +12 -0
  159. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_tag.js.html +60 -0
  160. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_template.js.html +64 -0
  161. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_theme.js.html +105 -0
  162. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_undo.js.html +142 -0
  163. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_utils.js.html +87 -0
  164. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_yaml.js.html +88 -0
  165. data/public/javascripts/lib/console/file-small.png +0 -0
  166. data/public/javascripts/lib/console/green-circle.png +0 -0
  167. data/public/javascripts/lib/console/loading.gif +0 -0
  168. data/public/javascripts/lib/console/pages/console_page.js +149 -0
  169. data/public/javascripts/lib/console/pages/console_page.jst +27 -0
  170. data/public/javascripts/lib/console/red-circle.png +0 -0
  171. data/public/javascripts/lib/cookie.js +74 -0
  172. data/public/javascripts/lib/delayed_task.js +61 -0
  173. data/public/javascripts/lib/dependencies.js +76 -0
  174. data/public/javascripts/lib/environment.js +30 -0
  175. data/public/javascripts/lib/event.simulate.js +137 -0
  176. data/public/javascripts/lib/expressinstall.swf +0 -0
  177. data/public/javascripts/lib/file.js +72 -0
  178. data/public/javascripts/lib/flash_detect.js +122 -0
  179. data/public/javascripts/lib/flashembed.min.js +16 -0
  180. data/public/javascripts/lib/form.js +88 -0
  181. data/public/javascripts/lib/id.js +43 -0
  182. data/public/javascripts/lib/inflector.js +160 -0
  183. data/public/javascripts/lib/instrumenter.js +106 -0
  184. data/public/javascripts/lib/js_template.js +275 -0
  185. data/public/javascripts/lib/jslint.js +4950 -0
  186. data/public/javascripts/lib/juggernaut.js +295 -0
  187. data/public/javascripts/lib/juggernaut.swf +0 -0
  188. data/public/javascripts/lib/key_map.js +60 -0
  189. data/public/javascripts/lib/layout_manager.js +167 -0
  190. data/public/javascripts/lib/model.js +1067 -0
  191. data/public/javascripts/lib/page.js +238 -0
  192. data/public/javascripts/lib/parameters.js +59 -0
  193. data/public/javascripts/lib/png_fix.js +75 -0
  194. data/public/javascripts/lib/protohack.js +297 -0
  195. data/public/javascripts/lib/push.js +5 -0
  196. data/public/javascripts/lib/rio.build +28 -0
  197. data/public/javascripts/lib/rio_development.build +5 -0
  198. data/public/javascripts/lib/rio_lint.js +66 -0
  199. data/public/javascripts/lib/rsh.js +651 -0
  200. data/public/javascripts/lib/spec.js +545 -0
  201. data/public/javascripts/lib/spec_runner.js +242 -0
  202. data/public/javascripts/lib/swfobject.js +5 -0
  203. data/public/javascripts/lib/tag.js +52 -0
  204. data/public/javascripts/lib/undo.js +134 -0
  205. data/public/javascripts/lib/utils.js +80 -0
  206. data/public/javascripts/lib/yaml.js +80 -0
  207. data/public/javascripts/pages/playground_page.js +15 -0
  208. data/public/javascripts/prototype/builder.js +146 -0
  209. data/public/javascripts/prototype/controls.js +1004 -0
  210. data/public/javascripts/prototype/dragdrop.js +1030 -0
  211. data/public/javascripts/prototype/effects.js +1137 -0
  212. data/public/javascripts/prototype/prototype.js +4320 -0
  213. data/public/javascripts/prototype/slider.js +283 -0
  214. data/public/javascripts/prototype/sound.js +67 -0
  215. data/public/javascripts/specs/components/box_spec.js +6 -0
  216. data/public/javascripts/specs/components/checkbox_spec.js +26 -0
  217. data/public/javascripts/specs/components/container_spec.js +6 -0
  218. data/public/javascripts/specs/components/input_spec.js +71 -0
  219. data/public/javascripts/specs/components/panel_spec.js +6 -0
  220. data/public/javascripts/specs/components/radio_spec.js +40 -0
  221. data/public/javascripts/specs/fixtures/components/box.js +3 -0
  222. data/public/javascripts/specs/fixtures/components/checkbox.js +9 -0
  223. data/public/javascripts/specs/fixtures/components/container.js +3 -0
  224. data/public/javascripts/specs/fixtures/components/input.js +12 -0
  225. data/public/javascripts/specs/fixtures/components/menu.js +19 -0
  226. data/public/javascripts/specs/fixtures/components/menu_item.js +18 -0
  227. data/public/javascripts/specs/fixtures/components/radio.js +11 -0
  228. data/public/javascripts/specs/lib/application_spec.js +281 -0
  229. data/public/javascripts/specs/lib/attr_spec.js +1514 -0
  230. data/public/javascripts/specs/lib/benchmark_spec.js +361 -0
  231. data/public/javascripts/specs/lib/collection_entity_spec.js +131 -0
  232. data/public/javascripts/specs/lib/component_spec.js +86 -0
  233. data/public/javascripts/specs/lib/form_spec.js +171 -0
  234. data/public/javascripts/specs/lib/id_spec.js +21 -0
  235. data/public/javascripts/specs/lib/instrumenter_spec.js +5 -0
  236. data/public/javascripts/specs/lib/js_template_spec.js +131 -0
  237. data/public/javascripts/specs/lib/key_map_spec.js +227 -0
  238. data/public/javascripts/specs/lib/model_spec.js +2268 -0
  239. data/public/javascripts/specs/lib/parameters_spec.js +94 -0
  240. data/public/javascripts/specs/lib/spec_spec.js +943 -0
  241. data/public/javascripts/specs/lib/undo_spec.js +105 -0
  242. data/public/javascripts/specs/lib/yaml_spec.js +127 -0
  243. data/public/sounds/basso.wav +0 -0
  244. data/public/sounds/purr.wav +0 -0
  245. data/public/stylesheets/components/accordion.css +24 -0
  246. data/public/stylesheets/components/alert_box.css +35 -0
  247. data/public/stylesheets/components/box.css +0 -0
  248. data/public/stylesheets/components/button.css +39 -0
  249. data/public/stylesheets/components/checkbox.css +9 -0
  250. data/public/stylesheets/components/container.css +3 -0
  251. data/public/stylesheets/components/grid_view.css +52 -0
  252. data/public/stylesheets/components/input.css +10 -0
  253. data/public/stylesheets/components/label.css +3 -0
  254. data/public/stylesheets/components/lightbox.css +31 -0
  255. data/public/stylesheets/components/link.css +4 -0
  256. data/public/stylesheets/components/list_view.css +23 -0
  257. data/public/stylesheets/components/marquee.css +29 -0
  258. data/public/stylesheets/components/menu.css +34 -0
  259. data/public/stylesheets/components/notification.css +52 -0
  260. data/public/stylesheets/components/overlay.css +8 -0
  261. data/public/stylesheets/components/panel.css +36 -0
  262. data/public/stylesheets/components/radio.css +9 -0
  263. data/public/stylesheets/components/splitter.css +35 -0
  264. data/public/stylesheets/components/tab_bar.css +59 -0
  265. data/public/stylesheets/components/tab_panel.css +15 -0
  266. data/public/stylesheets/components/textarea.css +11 -0
  267. data/public/stylesheets/components/tooltip.css +10 -0
  268. data/public/stylesheets/console.css +151 -0
  269. data/public/stylesheets/css_reset.css +55 -0
  270. metadata +343 -0
@@ -0,0 +1,768 @@
1
+ <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
2
+ .KEYW {color: #933;}
3
+ .COMM {color: #bbb; font-style: italic;}
4
+ .NUMB {color: #393;}
5
+ .STRN {color: #393;}
6
+ .REGX {color: #339;}
7
+ .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
8
+ </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/**
9
+ <span class='line'> 2</span> @class
10
+ <span class='line'> 3</span>
11
+ <span class='line'> 4</span> Attr is the basis for most of rio. It is the class from which all apps, pages, models, and components
12
+ <span class='line'> 5</span> are derived, though you will rarely have to use Attr directly. Attr provides all of the functionality
13
+ <span class='line'> 6</span> related to attributes, bindings, dependency management, and events.
14
+ <span class='line'> 7</span>
15
+ <span class='line'> 8</span> @author Jason Tillery
16
+ <span class='line'> 9</span> @copyright 2008-2009 Thinklink LLC
17
+ <span class='line'> 10</span> */</span><span class="WHIT">
18
+ <span class='line'> 11</span> </span><span class="NAME">rio.Attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
19
+ <span class='line'> 12</span> </span><span class="COMM">/**
20
+ <span class='line'> 13</span> Creates an instance of rio.Attr.
21
+ <span class='line'> 14</span>
22
+ <span class='line'> 15</span> @param {String} name (optional) The name of this Attr. Used primarily for testing reports.
23
+ <span class='line'> 16</span> @param {Object} extends (optional) An Attr class to use as a superclass.
24
+ <span class='line'> 17</span> @param {Object} args (optional) The definition of the class.
25
+ <span class='line'> 18</span> @returns a new instance of type Attr
26
+ <span class='line'> 19</span> @type rio.Attr
27
+ <span class='line'> 20</span> @example
28
+ <span class='line'> 21</span> var attr = rio.Attr.create("AttrName", {
29
+ <span class='line'> 22</span> attrAccessors: [], // list of accessors
30
+ <span class='line'> 23</span> attrReaders: [], // list of readers
31
+ <span class='line'> 24</span> methods: {
32
+ <span class='line'> 25</span> initialize: function() {
33
+ <span class='line'> 26</span>
34
+ <span class='line'> 27</span> }
35
+ <span class='line'> 28</span> },
36
+ <span class='line'> 29</span> classMethods: {
37
+ <span class='line'> 30</span>
38
+ <span class='line'> 31</span> }
39
+ <span class='line'> 32</span> });
40
+ <span class='line'> 33</span> */</span><span class="WHIT">
41
+ <span class='line'> 34</span> </span><span class="NAME">create</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
42
+ <span class='line'> 35</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
43
+ <span class='line'> 36</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">args.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">ATTR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">Class.create</span><span class="PUNC">(</span><span class="NAME">args</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Class.create</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
44
+ <span class='line'> 37</span>
45
+ <span class='line'> 38</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">args.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">args.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">Object.isString</span><span class="PUNC">(</span><span class="NAME">args.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
46
+ <span class='line'> 39</span> </span><span class="NAME">attr.NAME</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
47
+ <span class='line'> 40</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">attr.superclass</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">args.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">Object.isString</span><span class="PUNC">(</span><span class="NAME">args</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
48
+ <span class='line'> 41</span> </span><span class="NAME">attr.NAME</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
49
+ <span class='line'> 42</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
50
+ <span class='line'> 43</span> </span><span class="NAME">attr.NAME</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"[attr rio.Attr]"</span><span class="PUNC">;</span><span class="WHIT">
51
+ <span class='line'> 44</span> </span><span class="PUNC">}</span><span class="WHIT">
52
+ <span class='line'> 45</span>
53
+ <span class='line'> 46</span> </span><span class="NAME">attr.addMethods</span><span class="PUNC">(</span><span class="WHIT">
54
+ <span class='line'> 47</span> </span><span class="COMM">/**
55
+ <span class='line'> 48</span> @scope rio.Attr.prototype
56
+ <span class='line'> 49</span> */</span><span class="WHIT">
57
+ <span class='line'> 50</span> </span><span class="PUNC">{</span><span class="WHIT">
58
+ <span class='line'> 51</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
59
+ <span class='line'> 52</span> </span><span class="NAME">ATTR</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
60
+ <span class='line'> 53</span>
61
+ <span class='line'> 54</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
62
+ <span class='line'> 55</span> </span><span class="NAME">__bindings</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
63
+ <span class='line'> 56</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.___bindings</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">this.___bindings</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
64
+ <span class='line'> 57</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.___bindings</span><span class="PUNC">;</span><span class="WHIT">
65
+ <span class='line'> 58</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
66
+ <span class='line'> 59</span>
67
+ <span class='line'> 60</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
68
+ <span class='line'> 61</span> </span><span class="NAME">__bindingsFor</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
69
+ <span class='line'> 62</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.__bindings</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
70
+ <span class='line'> 63</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
71
+ <span class='line'> 64</span>
72
+ <span class='line'> 65</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
73
+ <span class='line'> 66</span> </span><span class="NAME">__subBindings</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
74
+ <span class='line'> 67</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.___subBindings</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">this.___subBindings</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
75
+ <span class='line'> 68</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.___subBindings</span><span class="PUNC">;</span><span class="WHIT">
76
+ <span class='line'> 69</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
77
+ <span class='line'> 70</span>
78
+ <span class='line'> 71</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
79
+ <span class='line'> 72</span> </span><span class="NAME">__subBindingsFor</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
80
+ <span class='line'> 73</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.__subBindings</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
81
+ <span class='line'> 74</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
82
+ <span class='line'> 75</span>
83
+ <span class='line'> 76</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
84
+ <span class='line'> 77</span> </span><span class="NAME">__executeSubBinding</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">subAttribute</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">binding</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">skipInitialExecution</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
85
+ <span class='line'> 78</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subObj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
86
+ <span class='line'> 79</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">subObj</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Object</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">subObj.ATTR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
87
+ <span class='line'> 80</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oldValue</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Object</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">oldValue.ATTR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
88
+ <span class='line'> 81</span> </span><span class="NAME">oldValue.unbind</span><span class="PUNC">(</span><span class="NAME">subAttribute</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">binding</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
89
+ <span class='line'> 82</span> </span><span class="PUNC">}</span><span class="WHIT">
90
+ <span class='line'> 83</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subOldValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">subAttribute</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">subAttribute</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
91
+ <span class='line'> 84</span> </span><span class="NAME">subObj.bind</span><span class="PUNC">(</span><span class="NAME">subAttribute</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">binding</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">skipInitialExecution</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">subOldValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
92
+ <span class='line'> 85</span> </span><span class="PUNC">}</span><span class="WHIT">
93
+ <span class='line'> 86</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
94
+ <span class='line'> 87</span>
95
+ <span class='line'> 88</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
96
+ <span class='line'> 89</span> </span><span class="NAME">__executeAllBindings</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
97
+ <span class='line'> 90</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
98
+ <span class='line'> 91</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bindingsFor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.__bindingsFor</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
99
+ <span class='line'> 92</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bindingsForLength</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bindingsFor.length</span><span class="PUNC">;</span><span class="WHIT">
100
+ <span class='line'> 93</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">bindingsForLength</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
101
+ <span class='line'> 94</span> </span><span class="NAME">this.fireBinding</span><span class="PUNC">(</span><span class="NAME">bindingsFor</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
102
+ <span class='line'> 95</span> </span><span class="PUNC">}</span><span class="WHIT">
103
+ <span class='line'> 96</span>
104
+ <span class='line'> 97</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subBindingsFor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.__subBindingsFor</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
105
+ <span class='line'> 98</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subBindingsForLength</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">subBindingsFor.length</span><span class="PUNC">;</span><span class="WHIT">
106
+ <span class='line'> 99</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">subBindingsForLength</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
107
+ <span class='line'>100</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subBinding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">subBindingsFor</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
108
+ <span class='line'>101</span> </span><span class="NAME">this.__executeSubBinding</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">subBinding</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">subBinding</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
109
+ <span class='line'>102</span> </span><span class="PUNC">}</span><span class="WHIT">
110
+ <span class='line'>103</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
111
+ <span class='line'>104</span>
112
+ <span class='line'>105</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
113
+ <span class='line'>106</span> </span><span class="NAME">fireBinding</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
114
+ <span class='line'>107</span> </span><span class="NAME">rio.Attr.fireWhenReady</span><span class="PUNC">(</span><span class="NAME">this.doFireBinding.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">binding</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
115
+ <span class='line'>108</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
116
+ <span class='line'>109</span>
117
+ <span class='line'>110</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
118
+ <span class='line'>111</span> </span><span class="NAME">doFireBinding</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
119
+ <span class='line'>112</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Object.isFunction</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
120
+ <span class='line'>113</span> </span><span class="COMM">// try {</span><span class="WHIT">
121
+ <span class='line'>114</span> </span><span class="NAME">binding</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
122
+ <span class='line'>115</span> </span><span class="COMM">// } catch(e) {</span><span class="WHIT">
123
+ <span class='line'>116</span> </span><span class="COMM">// TODO: This check is in here because refreshing the console can leave null binding references in the app</span><span class="WHIT">
124
+ <span class='line'>117</span> </span><span class="COMM">// This needs to be resolved immediately. We should be "un-binding" instead of ignoring this error.</span><span class="WHIT">
125
+ <span class='line'>118</span> </span><span class="COMM">// rio.log(e);</span><span class="WHIT">
126
+ <span class='line'>119</span> </span><span class="COMM">//}</span><span class="WHIT">
127
+ <span class='line'>120</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
128
+ <span class='line'>121</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Object.isArray</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
129
+ <span class='line'>122</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
130
+ <span class='line'>123</span>
131
+ <span class='line'>124</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">binding.__unbindings</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
132
+ <span class='line'>125</span> </span><span class="NAME">binding.__unbindings</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
133
+ <span class='line'>126</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
134
+ <span class='line'>127</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unbindings</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">binding.__unbindings</span><span class="PUNC">;</span><span class="WHIT">
135
+ <span class='line'>128</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">unbindings.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
136
+ <span class='line'>129</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unbinding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">unbindings</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
137
+ <span class='line'>130</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">unbinding.forAttr</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
138
+ <span class='line'>131</span> </span><span class="NAME">unbinding</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
139
+ <span class='line'>132</span> </span><span class="PUNC">}</span><span class="WHIT">
140
+ <span class='line'>133</span> </span><span class="PUNC">}</span><span class="WHIT">
141
+ <span class='line'>134</span> </span><span class="PUNC">}</span><span class="WHIT">
142
+ <span class='line'>135</span>
143
+ <span class='line'>136</span>
144
+ <span class='line'>137</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rio.environment.giveWarnings</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
145
+ <span class='line'>138</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unsupportedListBindingOperations</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"reverse"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"shift"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"sort"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"unshift"</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
146
+ <span class='line'>139</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oldUnsupportedFunctions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
147
+ <span class='line'>140</span>
148
+ <span class='line'>141</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">buildWrapper</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">operation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
149
+ <span class='line'>142</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
150
+ <span class='line'>143</span> </span><span class="NAME">rio.log</span><span class="PUNC">(</span><span class="STRN">"warning: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">operation</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" does not fire rio bindings"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"warningLogItem"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"- "</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
151
+ <span class='line'>144</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
152
+ <span class='line'>145</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">proceed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
153
+ <span class='line'>146</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">proceed.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
154
+ <span class='line'>147</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
155
+ <span class='line'>148</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
156
+ <span class='line'>149</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">unsupportedListBindingOperations.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
157
+ <span class='line'>150</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">operation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">unsupportedListBindingOperations</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
158
+ <span class='line'>151</span> </span><span class="NAME">oldUnsupportedFunctions</span><span class="PUNC">[</span><span class="NAME">operation</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">[</span><span class="NAME">operation</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
159
+ <span class='line'>152</span> </span><span class="NAME">value</span><span class="PUNC">[</span><span class="NAME">operation</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">[</span><span class="NAME">operation</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">wrap</span><span class="PUNC">(</span><span class="NAME">buildWrapper</span><span class="PUNC">(</span><span class="NAME">operation</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
160
+ <span class='line'>153</span> </span><span class="PUNC">}</span><span class="WHIT">
161
+ <span class='line'>154</span> </span><span class="PUNC">}</span><span class="WHIT">
162
+ <span class='line'>155</span>
163
+ <span class='line'>156</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oldPush</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.push</span><span class="PUNC">;</span><span class="WHIT">
164
+ <span class='line'>157</span> </span><span class="NAME">value.push</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.push.wrap</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">proceed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
165
+ <span class='line'>158</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ret</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">proceed</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
166
+ <span class='line'>159</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">binding.insert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
167
+ <span class='line'>160</span> </span><span class="NAME">rio.Attr.fireWhenReady</span><span class="PUNC">(</span><span class="NAME">binding.insert.curry</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
168
+ <span class='line'>161</span> </span><span class="PUNC">}</span><span class="WHIT">
169
+ <span class='line'>162</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">binding.empty</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
170
+ <span class='line'>163</span> </span><span class="NAME">rio.Attr.fireWhenReady</span><span class="PUNC">(</span><span class="NAME">binding.empty.curry</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
171
+ <span class='line'>164</span> </span><span class="PUNC">}</span><span class="WHIT">
172
+ <span class='line'>165</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ret</span><span class="PUNC">;</span><span class="WHIT">
173
+ <span class='line'>166</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
174
+ <span class='line'>167</span>
175
+ <span class='line'>168</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oldPop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.pop</span><span class="PUNC">;</span><span class="WHIT">
176
+ <span class='line'>169</span> </span><span class="NAME">value.pop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.pop.wrap</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">proceed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
177
+ <span class='line'>170</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
178
+ <span class='line'>171</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">startsEmpty</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
179
+ <span class='line'>172</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ret</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">proceed</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
180
+ <span class='line'>173</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">binding.remove</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
181
+ <span class='line'>174</span> </span><span class="NAME">rio.Attr.fireWhenReady</span><span class="PUNC">(</span><span class="NAME">binding.remove.curry</span><span class="PUNC">(</span><span class="NAME">ret</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
182
+ <span class='line'>175</span> </span><span class="PUNC">}</span><span class="WHIT">
183
+ <span class='line'>176</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">binding.empty</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
184
+ <span class='line'>177</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">endsEmpty</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
185
+ <span class='line'>178</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">startsEmpty</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">endsEmpty</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
186
+ <span class='line'>179</span> </span><span class="NAME">rio.Attr.fireWhenReady</span><span class="PUNC">(</span><span class="NAME">binding.empty.curry</span><span class="PUNC">(</span><span class="NAME">endsEmpty</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
187
+ <span class='line'>180</span> </span><span class="PUNC">}</span><span class="WHIT">
188
+ <span class='line'>181</span> </span><span class="PUNC">}</span><span class="WHIT">
189
+ <span class='line'>182</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ret</span><span class="PUNC">;</span><span class="WHIT">
190
+ <span class='line'>183</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
191
+ <span class='line'>184</span>
192
+ <span class='line'>185</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oldSplice</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.splice</span><span class="PUNC">;</span><span class="WHIT">
193
+ <span class='line'>186</span> </span><span class="NAME">value.splice</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.splice.wrap</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">proceed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">index</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">count</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">toInsert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
194
+ <span class='line'>187</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">startsEmpty</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
195
+ <span class='line'>188</span>
196
+ <span class='line'>189</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">removing</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">count</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">binding.remove</span><span class="PUNC">;</span><span class="WHIT">
197
+ <span class='line'>190</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inserting</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">toInsert</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">binding.insert</span><span class="PUNC">;</span><span class="WHIT">
198
+ <span class='line'>191</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">removing</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">toRemove</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">[</span><span class="NAME">index</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
199
+ <span class='line'>192</span>
200
+ <span class='line'>193</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ret</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">toInsert</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">proceed</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">count</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">toInsert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">proceed</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">count</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
201
+ <span class='line'>194</span>
202
+ <span class='line'>195</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">removing</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
203
+ <span class='line'>196</span> </span><span class="NAME">rio.Attr.fireWhenReady</span><span class="PUNC">(</span><span class="NAME">binding.remove.curry</span><span class="PUNC">(</span><span class="NAME">toRemove</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
204
+ <span class='line'>197</span> </span><span class="PUNC">}</span><span class="WHIT">
205
+ <span class='line'>198</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">inserting</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
206
+ <span class='line'>199</span> </span><span class="NAME">rio.Attr.fireWhenReady</span><span class="PUNC">(</span><span class="NAME">binding.insert.curry</span><span class="PUNC">(</span><span class="NAME">toInsert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">index</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
207
+ <span class='line'>200</span> </span><span class="PUNC">}</span><span class="WHIT">
208
+ <span class='line'>201</span>
209
+ <span class='line'>202</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">endsEmpty</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
210
+ <span class='line'>203</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">binding.empty</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">startsEmpty</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">endsEmpty</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
211
+ <span class='line'>204</span> </span><span class="NAME">rio.Attr.fireWhenReady</span><span class="PUNC">(</span><span class="NAME">binding.empty.curry</span><span class="PUNC">(</span><span class="NAME">endsEmpty</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
212
+ <span class='line'>205</span> </span><span class="PUNC">}</span><span class="WHIT">
213
+ <span class='line'>206</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ret</span><span class="PUNC">;</span><span class="WHIT">
214
+ <span class='line'>207</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
215
+ <span class='line'>208</span>
216
+ <span class='line'>209</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oldClear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.clear</span><span class="PUNC">;</span><span class="WHIT">
217
+ <span class='line'>210</span> </span><span class="NAME">value.clear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.clear.wrap</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">proceed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
218
+ <span class='line'>211</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
219
+ <span class='line'>212</span> </span><span class="NAME">proceed</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
220
+ <span class='line'>213</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">binding.set</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
221
+ <span class='line'>214</span> </span><span class="NAME">rio.Attr.fireWhenReady</span><span class="PUNC">(</span><span class="NAME">binding.set.curry</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
222
+ <span class='line'>215</span> </span><span class="PUNC">}</span><span class="WHIT">
223
+ <span class='line'>216</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">binding.empty</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
224
+ <span class='line'>217</span> </span><span class="NAME">rio.Attr.fireWhenReady</span><span class="PUNC">(</span><span class="NAME">binding.empty.curry</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
225
+ <span class='line'>218</span> </span><span class="PUNC">}</span><span class="WHIT">
226
+ <span class='line'>219</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
227
+ <span class='line'>220</span>
228
+ <span class='line'>221</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unbindingFunction</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
229
+ <span class='line'>222</span> </span><span class="NAME">value.push</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oldPush</span><span class="PUNC">;</span><span class="WHIT">
230
+ <span class='line'>223</span> </span><span class="NAME">value.pop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oldPop</span><span class="PUNC">;</span><span class="WHIT">
231
+ <span class='line'>224</span> </span><span class="NAME">value.splice</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oldSplice</span><span class="PUNC">;</span><span class="WHIT">
232
+ <span class='line'>225</span> </span><span class="NAME">value.clear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oldClear</span><span class="PUNC">;</span><span class="WHIT">
233
+ <span class='line'>226</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rio.environment.giveWarnings</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
234
+ <span class='line'>227</span> </span><span class="NAME">unsupportedListBindingOperations.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">operation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
235
+ <span class='line'>228</span> </span><span class="NAME">value</span><span class="PUNC">[</span><span class="NAME">operation</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oldUnsupportedFunctions</span><span class="PUNC">[</span><span class="NAME">operation</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
236
+ <span class='line'>229</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
237
+ <span class='line'>230</span> </span><span class="PUNC">}</span><span class="WHIT">
238
+ <span class='line'>231</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
239
+ <span class='line'>232</span> </span><span class="NAME">unbindingFunction.forAttr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
240
+ <span class='line'>233</span> </span><span class="NAME">binding.__unbindings.push</span><span class="PUNC">(</span><span class="NAME">unbindingFunction</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
241
+ <span class='line'>234</span>
242
+ <span class='line'>235</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">binding.empty</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">binding.empty</span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
243
+ <span class='line'>236</span> </span><span class="PUNC">}</span><span class="WHIT">
244
+ <span class='line'>237</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">binding.set</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
245
+ <span class='line'>238</span> </span><span class="NAME">binding.set</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
246
+ <span class='line'>239</span> </span><span class="PUNC">}</span><span class="WHIT">
247
+ <span class='line'>240</span> </span><span class="PUNC">}</span><span class="WHIT">
248
+ <span class='line'>241</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
249
+ <span class='line'>242</span>
250
+ <span class='line'>243</span> </span><span class="COMM">/**
251
+ <span class='line'>244</span> Binds a function to an attribute.
252
+ <span class='line'>245</span> &lt;br />&lt;br />
253
+ <span class='line'>246</span> &lt;i>NOTE: The function will be called immediately with the current value of the attribute.&lt;/i>
254
+ <span class='line'>247</span>
255
+ <span class='line'>248</span> @param {String} attribute The name of the attribute to bind
256
+ <span class='line'>249</span> @param {Function} binding The function to execute when the value of the attribute changes
257
+ <span class='line'>250</span> @param {Boolean} skipInitialExecution (optional) Do &lt;b>not&lt;/b> immediately call the function with the attributes current value
258
+ <span class='line'>251</span>
259
+ <span class='line'>252</span> @example
260
+ <span class='line'>253</span> attr.bind("attribute", function(newValue) {
261
+ <span class='line'>254</span> alert(newValue);
262
+ <span class='line'>255</span> });
263
+ <span class='line'>256</span> */</span><span class="WHIT">
264
+ <span class='line'>257</span> </span><span class="NAME">bind</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">binding</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">skipInitialExecution</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">overrideInitialOldValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
265
+ <span class='line'>258</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unbind</span><span class="PUNC">;</span><span class="WHIT">
266
+ <span class='line'>259</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">attribute.include</span><span class="PUNC">(</span><span class="STRN">"."</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
267
+ <span class='line'>260</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">thisAttribute</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attribute.match</span><span class="PUNC">(</span><span class="REGX">/^([^\.]*)\.(.*)/</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
268
+ <span class='line'>261</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subAttributes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attribute.match</span><span class="PUNC">(</span><span class="REGX">/^([^\.]*)\.(.*)/</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
269
+ <span class='line'>262</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.__subBindings</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">thisAttribute</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">this.__subBindings</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">thisAttribute</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
270
+ <span class='line'>263</span> </span><span class="NAME">this.__subBindings</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">thisAttribute</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">push</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">subAttributes</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">binding</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
271
+ <span class='line'>264</span> </span><span class="NAME">this.__executeSubBinding</span><span class="PUNC">(</span><span class="NAME">thisAttribute</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">subAttributes</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">binding</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">skipInitialExecution</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
272
+ <span class='line'>265</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
273
+ <span class='line'>266</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.__bindings</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">attribute</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">this.__bindings</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">attribute</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
274
+ <span class='line'>267</span> </span><span class="NAME">this.__bindings</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">attribute</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">push</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
275
+ <span class='line'>268</span> </span><span class="NAME">unbind</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.unbind.curry</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">binding</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
276
+ <span class='line'>269</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">skipInitialExecution</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
277
+ <span class='line'>270</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
278
+ <span class='line'>271</span> </span><span class="NAME">this.fireBinding</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">overrideInitialOldValue</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
279
+ <span class='line'>272</span> </span><span class="PUNC">}</span><span class="WHIT">
280
+ <span class='line'>273</span> </span><span class="PUNC">}</span><span class="WHIT">
281
+ <span class='line'>274</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">unbind</span><span class="PUNC">;</span><span class="WHIT">
282
+ <span class='line'>275</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
283
+ <span class='line'>276</span>
284
+ <span class='line'>277</span> </span><span class="COMM">/**
285
+ <span class='line'>278</span> Returns a binding to the specified attribute or attribute path
286
+ <span class='line'>279</span> &lt;br />&lt;br />
287
+ <span class='line'>280</span> &lt;i>NOTE: The most common reason for using binding is to specify the initial value of another attrAccessor with an attribute path.&lt;/i>
288
+ <span class='line'>281</span>
289
+ <span class='line'>282</span> @param {String} attribute The name of the attribute to bind
290
+ <span class='line'>283</span>
291
+ <span class='line'>284</span> @example
292
+ <span class='line'>285</span> attr.binding("attribute");
293
+ <span class='line'>286</span> */</span><span class="WHIT">
294
+ <span class='line'>287</span> </span><span class="NAME">binding</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
295
+ <span class='line'>288</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">rio.Binding</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
296
+ <span class='line'>289</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
297
+ <span class='line'>290</span>
298
+ <span class='line'>291</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
299
+ <span class='line'>292</span> </span><span class="NAME">unbind</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">binding</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
300
+ <span class='line'>293</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fieldName.include</span><span class="PUNC">(</span><span class="STRN">"."</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
301
+ <span class='line'>294</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">thisField</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fieldName.match</span><span class="PUNC">(</span><span class="REGX">/^([^\.]*)\.(.*)/</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
302
+ <span class='line'>295</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subFields</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fieldName.match</span><span class="PUNC">(</span><span class="REGX">/^([^\.]*)\.(.*)/</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
303
+ <span class='line'>296</span>
304
+ <span class='line'>297</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subBindings</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.__subBindings</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">thisField</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
305
+ <span class='line'>298</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">subBindings.indexOf</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
306
+ <span class='line'>299</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">subIndex</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
307
+ <span class='line'>300</span> </span><span class="NAME">subBindings.splice</span><span class="PUNC">(</span><span class="NAME">subIndex</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
308
+ <span class='line'>301</span> </span><span class="PUNC">}</span><span class="WHIT">
309
+ <span class='line'>302</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subObj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">thisField</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
310
+ <span class='line'>303</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">subObj</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
311
+ <span class='line'>304</span> </span><span class="NAME">subObj.unbind</span><span class="PUNC">(</span><span class="NAME">subFields</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">binding</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
312
+ <span class='line'>305</span> </span><span class="PUNC">}</span><span class="WHIT">
313
+ <span class='line'>306</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
314
+ <span class='line'>307</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bindings</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.__bindingsFor</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
315
+ <span class='line'>308</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bindings</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
316
+ <span class='line'>309</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">index</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bindings.indexOf</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
317
+ <span class='line'>310</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">index</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
318
+ <span class='line'>311</span> </span><span class="NAME">bindings.splice</span><span class="PUNC">(</span><span class="NAME">index</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
319
+ <span class='line'>312</span> </span><span class="PUNC">(</span><span class="NAME">binding.__unbindings</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">unbinding</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
320
+ <span class='line'>313</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">unbinding.forAttr</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
321
+ <span class='line'>314</span> </span><span class="NAME">unbinding</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
322
+ <span class='line'>315</span> </span><span class="PUNC">}</span><span class="WHIT">
323
+ <span class='line'>316</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
324
+ <span class='line'>317</span> </span><span class="PUNC">}</span><span class="WHIT">
325
+ <span class='line'>318</span> </span><span class="PUNC">}</span><span class="WHIT">
326
+ <span class='line'>319</span> </span><span class="PUNC">}</span><span class="WHIT">
327
+ <span class='line'>320</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
328
+ <span class='line'>321</span>
329
+ <span class='line'>322</span> </span><span class="NAME">freeze</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
330
+ <span class='line'>323</span> </span><span class="NAME">this._frozen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
331
+ <span class='line'>324</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
332
+ <span class='line'>325</span>
333
+ <span class='line'>326</span> </span><span class="NAME">unfreeze</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
334
+ <span class='line'>327</span> </span><span class="NAME">this._frozen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
335
+ <span class='line'>328</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
336
+ <span class='line'>329</span>
337
+ <span class='line'>330</span> </span><span class="NAME">frozen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
338
+ <span class='line'>331</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._frozen</span><span class="PUNC">;</span><span class="WHIT">
339
+ <span class='line'>332</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
340
+ <span class='line'>333</span>
341
+ <span class='line'>334</span> </span><span class="NAME">updateAttributes</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attributes</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
342
+ <span class='line'>335</span> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">attributes</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
343
+ <span class='line'>336</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.setAndReturnAfterSet</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attributes</span><span class="PUNC">[</span><span class="NAME">attribute</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
344
+ <span class='line'>337</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
345
+ <span class='line'>338</span> </span><span class="NAME">f</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
346
+ <span class='line'>339</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
347
+ <span class='line'>340</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
348
+ <span class='line'>341</span>
349
+ <span class='line'>342</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
350
+ <span class='line'>343</span> </span><span class="NAME">__eventHandlers</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
351
+ <span class='line'>344</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.___eventHandlers</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">this.___eventHandlers</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
352
+ <span class='line'>345</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.___eventHandlers</span><span class="PUNC">;</span><span class="WHIT">
353
+ <span class='line'>346</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
354
+ <span class='line'>347</span>
355
+ <span class='line'>348</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
356
+ <span class='line'>349</span> </span><span class="NAME">__eventHandlersFor</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">eventName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
357
+ <span class='line'>350</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.__eventHandlers</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">eventName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
358
+ <span class='line'>351</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
359
+ <span class='line'>352</span>
360
+ <span class='line'>353</span> </span><span class="COMM">/**
361
+ <span class='line'>354</span> Fires an event.
362
+ <span class='line'>355</span>
363
+ <span class='line'>356</span> @param {String} eventName The name of the event to fire
364
+ <span class='line'>357</span> */</span><span class="WHIT">
365
+ <span class='line'>358</span> </span><span class="NAME">fire</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
366
+ <span class='line'>359</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
367
+ <span class='line'>360</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">eventName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
368
+ <span class='line'>361</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handlers</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.__eventHandlersFor</span><span class="PUNC">(</span><span class="NAME">eventName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
369
+ <span class='line'>362</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">=</span><span class="NAME">handlers.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
370
+ <span class='line'>363</span> </span><span class="NAME">handlers</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
371
+ <span class='line'>364</span> </span><span class="PUNC">}</span><span class="WHIT">
372
+ <span class='line'>365</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
373
+ <span class='line'>366</span>
374
+ <span class='line'>367</span> </span><span class="COMM">/**
375
+ <span class='line'>368</span> Observes an event.
376
+ <span class='line'>369</span>
377
+ <span class='line'>370</span> @param {String} eventName The name of the event to observe
378
+ <span class='line'>371</span> @param {Function} handler A function to call when the even is fired
379
+ <span class='line'>372</span> */</span><span class="WHIT">
380
+ <span class='line'>373</span> </span><span class="NAME">observe</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">eventName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
381
+ <span class='line'>374</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.__eventHandlers</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">eventName</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">this.__eventHandlers</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">eventName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
382
+ <span class='line'>375</span> </span><span class="NAME">this.__eventHandlers</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">eventName</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">push</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
383
+ <span class='line'>376</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.stopObserving.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">eventName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
384
+ <span class='line'>377</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
385
+ <span class='line'>378</span>
386
+ <span class='line'>379</span> </span><span class="NAME">stopObserving</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">eventName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
387
+ <span class='line'>380</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handlers</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.__eventHandlers</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">eventName</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
388
+ <span class='line'>381</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">handlers</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">handlers.include</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
389
+ <span class='line'>382</span> </span><span class="NAME">handlers.splice</span><span class="PUNC">(</span><span class="NAME">handlers.indexOf</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
390
+ <span class='line'>383</span> </span><span class="PUNC">}</span><span class="WHIT">
391
+ <span class='line'>384</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
392
+ <span class='line'>385</span>
393
+ <span class='line'>386</span> </span><span class="COMM">/* @private */</span><span class="WHIT">
394
+ <span class='line'>387</span> </span><span class="NAME">setAndReturnAfterSet</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
395
+ <span class='line'>388</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
396
+ <span class='line'>389</span> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">;</span><span class="WHIT">
397
+ <span class='line'>390</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
398
+ <span class='line'>391</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oldValue</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
399
+ <span class='line'>392</span> </span><span class="NAME">this.__executeAllBindings</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
400
+ <span class='line'>393</span>
401
+ <span class='line'>394</span> </span><span class="COMM">// TODO: move this crap into model.js</span><span class="WHIT">
402
+ <span class='line'>395</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.afterUpdateField</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">options.skipSave</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
403
+ <span class='line'>396</span> </span><span class="NAME">this.afterUpdateField</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldValue</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
404
+ <span class='line'>397</span> </span><span class="PUNC">}</span><span class="WHIT">
405
+ <span class='line'>398</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.save</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">options.skipSave</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">attr._clientOnlyAttrs</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">attr._clientOnlyAttrs.include</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
406
+ <span class='line'>399</span> </span><span class="NAME">this.save.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
407
+ <span class='line'>400</span> </span><span class="PUNC">}</span><span class="WHIT">
408
+ <span class='line'>401</span> </span><span class="PUNC">}</span><span class="WHIT">
409
+ <span class='line'>402</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
410
+ <span class='line'>403</span> </span><span class="PUNC">}</span><span class="WHIT">
411
+ <span class='line'>404</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
412
+ <span class='line'>405</span>
413
+ <span class='line'>406</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultFields</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
414
+ <span class='line'>407</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultHtmls</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
415
+ <span class='line'>408</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultEvents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
416
+ <span class='line'>409</span>
417
+ <span class='line'>410</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">attr.superclass</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
418
+ <span class='line'>411</span> </span><span class="NAME">defaultFields</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Object.clone</span><span class="PUNC">(</span><span class="NAME">attr.superclass._fields</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
419
+ <span class='line'>412</span> </span><span class="NAME">defaultHtmls</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attr.superclass._htmls.clone</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
420
+ <span class='line'>413</span> </span><span class="NAME">defaultEvents</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attr.superclass._events.clone</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
421
+ <span class='line'>414</span> </span><span class="PUNC">}</span><span class="WHIT">
422
+ <span class='line'>415</span>
423
+ <span class='line'>416</span> </span><span class="NAME">Object.extend</span><span class="PUNC">(</span><span class="NAME">attr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
424
+ <span class='line'>417</span> </span><span class="NAME">ATTR</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
425
+ <span class='line'>418</span> </span><span class="NAME">_fields</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">defaultFields</span><span class="PUNC">,</span><span class="WHIT">
426
+ <span class='line'>419</span> </span><span class="NAME">_htmls</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">defaultHtmls</span><span class="PUNC">,</span><span class="WHIT">
427
+ <span class='line'>420</span> </span><span class="NAME">_events</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">defaultEvents</span><span class="PUNC">,</span><span class="WHIT">
428
+ <span class='line'>421</span>
429
+ <span class='line'>422</span> </span><span class="NAME">attrAccessor</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
430
+ <span class='line'>423</span> </span><span class="NAME">this.attrReader</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
431
+ <span class='line'>424</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">methods</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
432
+ <span class='line'>425</span> </span><span class="NAME">methods</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"set-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">newValue</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
433
+ <span class='line'>426</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.frozen</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
434
+ <span class='line'>427</span> </span><span class="NAME">this.setAndReturnAfterSet</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
435
+ <span class='line'>428</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
436
+ <span class='line'>429</span> </span><span class="NAME">this.addMethods</span><span class="PUNC">(</span><span class="NAME">methods</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
437
+ <span class='line'>430</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
438
+ <span class='line'>431</span>
439
+ <span class='line'>432</span> </span><span class="NAME">attrReader</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">defaultValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
440
+ <span class='line'>433</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">this._fields</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
441
+ <span class='line'>434</span> </span><span class="NAME">this._fields</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">defaultValue</span><span class="PUNC">;</span><span class="WHIT">
442
+ <span class='line'>435</span> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
443
+ <span class='line'>436</span> </span><span class="PUNC">}</span><span class="WHIT">
444
+ <span class='line'>437</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">methods</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
445
+ <span class='line'>438</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getFunction</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
446
+ <span class='line'>439</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
447
+ <span class='line'>440</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
448
+ <span class='line'>441</span> </span><span class="NAME">methods</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getFunction</span><span class="PUNC">;</span><span class="WHIT">
449
+ <span class='line'>442</span> </span><span class="NAME">methods</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"is-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">getFunction</span><span class="PUNC">;</span><span class="WHIT">
450
+ <span class='line'>443</span>
451
+ <span class='line'>444</span> </span><span class="NAME">this.addMethods</span><span class="PUNC">(</span><span class="NAME">methods</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
452
+ <span class='line'>445</span> </span><span class="NAME">this._fields</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">defaultValue</span><span class="PUNC">;</span><span class="WHIT">
453
+ <span class='line'>446</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
454
+ <span class='line'>447</span>
455
+ <span class='line'>448</span> </span><span class="NAME">attrHtml</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
456
+ <span class='line'>449</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">methods</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
457
+ <span class='line'>450</span> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
458
+ <span class='line'>451</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"Html"</span><span class="PUNC">;</span><span class="WHIT">
459
+ <span class='line'>452</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">methodName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"Html"</span><span class="PUNC">;</span><span class="WHIT">
460
+ <span class='line'>453</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">buildMethodName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"build-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"Html"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
461
+ <span class='line'>454</span>
462
+ <span class='line'>455</span> </span><span class="NAME">methods</span><span class="PUNC">[</span><span class="NAME">methodName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
463
+ <span class='line'>456</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">buildMethodName</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
464
+ <span class='line'>457</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
465
+ <span class='line'>458</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
466
+ <span class='line'>459</span> </span><span class="NAME">this._htmls.push</span><span class="PUNC">(</span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
467
+ <span class='line'>460</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
468
+ <span class='line'>461</span> </span><span class="NAME">this.addMethods</span><span class="PUNC">(</span><span class="NAME">methods</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
469
+ <span class='line'>462</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
470
+ <span class='line'>463</span>
471
+ <span class='line'>464</span> </span><span class="NAME">attrEvent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">eventName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
472
+ <span class='line'>465</span> </span><span class="NAME">this._events.push</span><span class="PUNC">(</span><span class="NAME">eventName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
473
+ <span class='line'>466</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
474
+ <span class='line'>467</span>
475
+ <span class='line'>468</span> </span><span class="NAME">require</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
476
+ <span class='line'>469</span> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fileName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
477
+ <span class='line'>470</span> </span><span class="NAME">rio.Application.include</span><span class="PUNC">(</span><span class="NAME">fileName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
478
+ <span class='line'>471</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
479
+ <span class='line'>472</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
480
+ <span class='line'>473</span>
481
+ <span class='line'>474</span> </span><span class="NAME">_examples</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
482
+ <span class='line'>475</span>
483
+ <span class='line'>476</span> </span><span class="NAME">setExamples</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">exampleJson</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
484
+ <span class='line'>477</span> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">exampleJson</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
485
+ <span class='line'>478</span> </span><span class="NAME">this._examples</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">exampleJson</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
486
+ <span class='line'>479</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
487
+ <span class='line'>480</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
488
+ <span class='line'>481</span>
489
+ <span class='line'>482</span> </span><span class="NAME">examples</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
490
+ <span class='line'>483</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">exampleGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
491
+ <span class='line'>484</span>
492
+ <span class='line'>485</span> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">this._examples</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
493
+ <span class='line'>486</span> </span><span class="NAME">exampleGroup</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.example</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
494
+ <span class='line'>487</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
495
+ <span class='line'>488</span>
496
+ <span class='line'>489</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">exampleGroup</span><span class="PUNC">;</span><span class="WHIT">
497
+ <span class='line'>490</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
498
+ <span class='line'>491</span>
499
+ <span class='line'>492</span> </span><span class="NAME">exampleParams</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
500
+ <span class='line'>493</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">exampleJson</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._examples</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
501
+ <span class='line'>494</span>
502
+ <span class='line'>495</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">evalExamples</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">json</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
503
+ <span class='line'>496</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">json</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
504
+ <span class='line'>497</span> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
505
+ <span class='line'>498</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">json._EXAMPLE</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
506
+ <span class='line'>499</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">json.attr.example</span><span class="PUNC">(</span><span class="NAME">json.name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
507
+ <span class='line'>500</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Object.isArray</span><span class="PUNC">(</span><span class="NAME">json</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">json.size</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
508
+ <span class='line'>501</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">json.map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
509
+ <span class='line'>502</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">evalExamples</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
510
+ <span class='line'>503</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
511
+ <span class='line'>504</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">json</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
512
+ <span class='line'>505</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newObj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
513
+ <span class='line'>506</span> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">json</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
514
+ <span class='line'>507</span> </span><span class="NAME">newObj</span><span class="PUNC">[</span><span class="NAME">key</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">evalExamples</span><span class="PUNC">(</span><span class="NAME">json</span><span class="PUNC">[</span><span class="NAME">key</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
515
+ <span class='line'>508</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
516
+ <span class='line'>509</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">newObj</span><span class="PUNC">;</span><span class="WHIT">
517
+ <span class='line'>510</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
518
+ <span class='line'>511</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">json</span><span class="PUNC">;</span><span class="WHIT">
519
+ <span class='line'>512</span> </span><span class="PUNC">}</span><span class="WHIT">
520
+ <span class='line'>513</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
521
+ <span class='line'>514</span>
522
+ <span class='line'>515</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">params</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">evalExamples</span><span class="PUNC">(</span><span class="NAME">exampleJson</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
523
+ <span class='line'>516</span> </span><span class="NAME">params.__example</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
524
+ <span class='line'>517</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">params</span><span class="PUNC">;</span><span class="WHIT">
525
+ <span class='line'>518</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
526
+ <span class='line'>519</span>
527
+ <span class='line'>520</span> </span><span class="NAME">example</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
528
+ <span class='line'>521</span> </span><span class="NAME">rio.loadingFixtures</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
529
+ <span class='line'>522</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
530
+ <span class='line'>523</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">params</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.exampleParams</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
531
+ <span class='line'>524</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">exampleAttr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="PUNC">(</span><span class="NAME">params</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
532
+ <span class='line'>525</span> </span><span class="NAME">exampleAttr.__example</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
533
+ <span class='line'>526</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">exampleAttr</span><span class="PUNC">;</span><span class="WHIT">
534
+ <span class='line'>527</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
535
+ <span class='line'>528</span> </span><span class="NAME">rio.loadingFixtures</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
536
+ <span class='line'>529</span> </span><span class="PUNC">}</span><span class="WHIT">
537
+ <span class='line'>530</span> </span><span class="PUNC">}</span><span class="WHIT">
538
+ <span class='line'>531</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
539
+ <span class='line'>532</span> </span><span class="NAME">attr.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
540
+ <span class='line'>533</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.NAME</span><span class="PUNC">;</span><span class="WHIT">
541
+ <span class='line'>534</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
542
+ <span class='line'>535</span>
543
+ <span class='line'>536</span>
544
+ <span class='line'>537</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">args.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">args.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">args.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">ATTR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
545
+ <span class='line'>538</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">initializers</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
546
+ <span class='line'>539</span>
547
+ <span class='line'>540</span> </span><span class="PUNC">(</span><span class="NAME">initializers.attrReaders</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
548
+ <span class='line'>541</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Object.isString</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
549
+ <span class='line'>542</span> </span><span class="NAME">attr.attrReader</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
550
+ <span class='line'>543</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
551
+ <span class='line'>544</span> </span><span class="NAME">attr.attrReader</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attribute</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
552
+ <span class='line'>545</span> </span><span class="PUNC">}</span><span class="WHIT">
553
+ <span class='line'>546</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
554
+ <span class='line'>547</span>
555
+ <span class='line'>548</span> </span><span class="PUNC">(</span><span class="NAME">initializers.attrAccessors</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
556
+ <span class='line'>549</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Object.isString</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
557
+ <span class='line'>550</span> </span><span class="NAME">attr.attrAccessor</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
558
+ <span class='line'>551</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
559
+ <span class='line'>552</span> </span><span class="NAME">attr.attrAccessor</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attribute</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
560
+ <span class='line'>553</span> </span><span class="PUNC">}</span><span class="WHIT">
561
+ <span class='line'>554</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
562
+ <span class='line'>555</span>
563
+ <span class='line'>556</span> </span><span class="PUNC">(</span><span class="NAME">initializers.attrHtmls</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
564
+ <span class='line'>557</span> </span><span class="NAME">attr.attrHtml</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
565
+ <span class='line'>558</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
566
+ <span class='line'>559</span>
567
+ <span class='line'>560</span> </span><span class="PUNC">(</span><span class="NAME">initializers.attrEvents</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">eventName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
568
+ <span class='line'>561</span> </span><span class="NAME">attr.attrEvent</span><span class="PUNC">(</span><span class="NAME">eventName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
569
+ <span class='line'>562</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
570
+ <span class='line'>563</span>
571
+ <span class='line'>564</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">initializers.require</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
572
+ <span class='line'>565</span> </span><span class="NAME">attr.require.apply</span><span class="PUNC">(</span><span class="NAME">attr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initializers.require</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
573
+ <span class='line'>566</span> </span><span class="PUNC">}</span><span class="WHIT">
574
+ <span class='line'>567</span>
575
+ <span class='line'>568</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">initializers.noExtend</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
576
+ <span class='line'>569</span> </span><span class="NAME">rio.Attr.extend</span><span class="PUNC">(</span><span class="NAME">attr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initializers.methods</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
577
+ <span class='line'>570</span> </span><span class="PUNC">}</span><span class="WHIT">
578
+ <span class='line'>571</span> </span><span class="NAME">Object.extend</span><span class="PUNC">(</span><span class="NAME">attr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initializers.classMethods</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
579
+ <span class='line'>572</span> </span><span class="PUNC">}</span><span class="WHIT">
580
+ <span class='line'>573</span>
581
+ <span class='line'>574</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="PUNC">;</span><span class="WHIT">
582
+ <span class='line'>575</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
583
+ <span class='line'>576</span>
584
+ <span class='line'>577</span> </span><span class="NAME">_transactionCount</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
585
+ <span class='line'>578</span> </span><span class="NAME">_toFire</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
586
+ <span class='line'>579</span> </span><span class="NAME">transaction</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
587
+ <span class='line'>580</span> </span><span class="NAME">this._transactionCount</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
588
+ <span class='line'>581</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
589
+ <span class='line'>582</span> </span><span class="NAME">t</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
590
+ <span class='line'>583</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
591
+ <span class='line'>584</span> </span><span class="NAME">this._transactionCount</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
592
+ <span class='line'>585</span> </span><span class="PUNC">}</span><span class="WHIT">
593
+ <span class='line'>586</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._transactionCount</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
594
+ <span class='line'>587</span> </span><span class="NAME">this._toFire.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">tf</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tf</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
595
+ <span class='line'>588</span> </span><span class="NAME">this._toFire.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
596
+ <span class='line'>589</span> </span><span class="PUNC">}</span><span class="WHIT">
597
+ <span class='line'>590</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
598
+ <span class='line'>591</span>
599
+ <span class='line'>592</span> </span><span class="NAME">fireWhenReady</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
600
+ <span class='line'>593</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._transactionCount</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
601
+ <span class='line'>594</span> </span><span class="NAME">this._toFire.push</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
602
+ <span class='line'>595</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
603
+ <span class='line'>596</span> </span><span class="NAME">f</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
604
+ <span class='line'>597</span> </span><span class="PUNC">}</span><span class="WHIT">
605
+ <span class='line'>598</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
606
+ <span class='line'>599</span>
607
+ <span class='line'>600</span> </span><span class="NAME">updateAttributes</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">updates</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
608
+ <span class='line'>601</span> </span><span class="NAME">updates.map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">update</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
609
+ <span class='line'>602</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">attributes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">update.attributes</span><span class="PUNC">;</span><span class="WHIT">
610
+ <span class='line'>603</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">object</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">update.object</span><span class="PUNC">;</span><span class="WHIT">
611
+ <span class='line'>604</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">attributes</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
612
+ <span class='line'>605</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">object.setAndReturnAfterSet</span><span class="PUNC">(</span><span class="NAME">attribute</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attributes</span><span class="PUNC">[</span><span class="NAME">attribute</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
613
+ <span class='line'>606</span> </span><span class="COMM">// return instance.setAndReturnAfterSet(attribute, attributes[attribute], options);</span><span class="WHIT">
614
+ <span class='line'>607</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
615
+ <span class='line'>608</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">flatten</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
616
+ <span class='line'>609</span> </span><span class="NAME">f</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
617
+ <span class='line'>610</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
618
+ <span class='line'>611</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
619
+ <span class='line'>612</span>
620
+ <span class='line'>613</span> </span><span class="NAME">extend</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extension</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
621
+ <span class='line'>614</span> </span><span class="COMM">/*
622
+ <span class='line'>615</span> This code is called a lot.
623
+ <span class='line'>616</span>
624
+ <span class='line'>617</span> Consider (and benchmark) the performance implication of any changes here.
625
+ <span class='line'>618</span> */</span><span class="WHIT">
626
+ <span class='line'>619</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">attr.prototype._initialize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
627
+ <span class='line'>620</span> </span><span class="NAME">extension._initialize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">extension.initialize</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">;</span><span class="WHIT">
628
+ <span class='line'>621</span> </span><span class="NAME">extension.initialize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
629
+ <span class='line'>622</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.constructor</span><span class="PUNC">;</span><span class="WHIT">
630
+ <span class='line'>623</span> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
631
+ <span class='line'>624</span>
632
+ <span class='line'>625</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">attr._fields</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
633
+ <span class='line'>626</span> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">rio.Binding</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
634
+ <span class='line'>627</span>
635
+ <span class='line'>628</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attr._fields</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
636
+ <span class='line'>629</span>
637
+ <span class='line'>630</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
638
+ <span class='line'>631</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Object.isArray</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val.clone</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
639
+ <span class='line'>632</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">Object.isArray</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">Object.isFunction</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
640
+ <span class='line'>633</span> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Object.clone</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
641
+ <span class='line'>634</span> </span><span class="PUNC">}</span><span class="WHIT">
642
+ <span class='line'>635</span> </span><span class="PUNC">}</span><span class="WHIT">
643
+ <span class='line'>636</span>
644
+ <span class='line'>637</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">optVal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">[</span><span class="NAME">fieldName.underscore</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
645
+ <span class='line'>638</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">optVal</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">optVal.BINDING</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
646
+ <span class='line'>639</span> </span><span class="NAME">optVal.bindTo</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
647
+ <span class='line'>640</span> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">optVal.value</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
648
+ <span class='line'>641</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">optVal</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
649
+ <span class='line'>642</span> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">optVal</span><span class="PUNC">;</span><span class="WHIT">
650
+ <span class='line'>643</span> </span><span class="PUNC">}</span><span class="WHIT">
651
+ <span class='line'>644</span> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
652
+ <span class='line'>645</span> </span><span class="PUNC">}</span><span class="WHIT">
653
+ <span class='line'>646</span>
654
+ <span class='line'>647</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">events</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attr._events</span><span class="PUNC">;</span><span class="WHIT">
655
+ <span class='line'>648</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attr._events.length</span><span class="PUNC">;</span><span class="WHIT">
656
+ <span class='line'>649</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
657
+ <span class='line'>650</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">eventName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">events</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
658
+ <span class='line'>651</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"on_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">eventName</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
659
+ <span class='line'>652</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">Object.isFunction</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
660
+ <span class='line'>653</span> </span><span class="NAME">this.observe</span><span class="PUNC">(</span><span class="NAME">eventName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
661
+ <span class='line'>654</span> </span><span class="PUNC">}</span><span class="WHIT">
662
+ <span class='line'>655</span> </span><span class="PUNC">}</span><span class="WHIT">
663
+ <span class='line'>656</span>
664
+ <span class='line'>657</span> </span><span class="NAME">this._initialize</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
665
+ <span class='line'>658</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
666
+ <span class='line'>659</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">extension.initialize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
667
+ <span class='line'>660</span> </span><span class="NAME">extension._initialize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">extension.initialize</span><span class="PUNC">;</span><span class="WHIT">
668
+ <span class='line'>661</span> </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">extension.initialize</span><span class="PUNC">;</span><span class="WHIT">
669
+ <span class='line'>662</span> </span><span class="PUNC">}</span><span class="WHIT">
670
+ <span class='line'>663</span> </span><span class="NAME">attr.addMethods</span><span class="PUNC">(</span><span class="NAME">extension</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
671
+ <span class='line'>664</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
672
+ <span class='line'>665</span>
673
+ <span class='line'>666</span> </span><span class="NAME">toString</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
674
+ <span class='line'>667</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"Attr"</span><span class="PUNC">;</span><span class="WHIT">
675
+ <span class='line'>668</span> </span><span class="PUNC">}</span><span class="WHIT">
676
+ <span class='line'>669</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
677
+ <span class='line'>670</span>
678
+ <span class='line'>671</span> </span><span class="COMM">/**
679
+ <span class='line'>672</span> @class
680
+ <span class='line'>673</span>
681
+ <span class='line'>674</span> Represents a bindable attribute. Bindings can be bound to each other to create a bi-directional binding.&lt;br />&lt;br />
682
+ <span class='line'>675</span>
683
+ <span class='line'>676</span> &lt;i>You should rarely need to instantiate this class directly&lt;/i>
684
+ <span class='line'>677</span> */</span><span class="WHIT">
685
+ <span class='line'>678</span> </span><span class="NAME">rio.Binding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class.create</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
686
+ <span class='line'>679</span> </span><span class="NAME">BINDING</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
687
+ <span class='line'>680</span>
688
+ <span class='line'>681</span> </span><span class="COMM">// This attribute might be unused</span><span class="WHIT">
689
+ <span class='line'>682</span> </span><span class="NAME">__bindings</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
690
+ <span class='line'>683</span>
691
+ <span class='line'>684</span> </span><span class="NAME">initialize</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
692
+ <span class='line'>685</span> </span><span class="NAME">this._obj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">obj</span><span class="PUNC">;</span><span class="WHIT">
693
+ <span class='line'>686</span> </span><span class="NAME">this._fieldName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fieldName</span><span class="PUNC">;</span><span class="WHIT">
694
+ <span class='line'>687</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
695
+ <span class='line'>688</span>
696
+ <span class='line'>689</span> </span><span class="NAME">bind</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">observer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">skipInitialExecution</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
697
+ <span class='line'>690</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._obj.bind</span><span class="PUNC">(</span><span class="NAME">this._fieldName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">observer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">skipInitialExecution</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
698
+ <span class='line'>691</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
699
+ <span class='line'>692</span>
700
+ <span class='line'>693</span> </span><span class="NAME">bindTo</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
701
+ <span class='line'>694</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unbinding1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.bind</span><span class="PUNC">(</span><span class="NAME">binding.update.bind</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
702
+ <span class='line'>695</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unbinding2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">binding.bind</span><span class="PUNC">(</span><span class="NAME">this.update.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
703
+ <span class='line'>696</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
704
+ <span class='line'>697</span> </span><span class="NAME">unbinding1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
705
+ <span class='line'>698</span> </span><span class="NAME">unbinding2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
706
+ <span class='line'>699</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
707
+ <span class='line'>700</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
708
+ <span class='line'>701</span>
709
+ <span class='line'>702</span> </span><span class="NAME">value</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
710
+ <span class='line'>703</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._fieldName.include</span><span class="PUNC">(</span><span class="STRN">"."</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
711
+ <span class='line'>704</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._fieldName.split</span><span class="PUNC">(</span><span class="STRN">"."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
712
+ <span class='line'>705</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">parts.inject</span><span class="PUNC">(</span><span class="NAME">this._obj</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">acc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">field</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
713
+ <span class='line'>706</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">acc</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">acc</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">field</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
714
+ <span class='line'>707</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
715
+ <span class='line'>708</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
716
+ <span class='line'>709</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._obj</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this._fieldName</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
717
+ <span class='line'>710</span> </span><span class="PUNC">}</span><span class="WHIT">
718
+ <span class='line'>711</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
719
+ <span class='line'>712</span>
720
+ <span class='line'>713</span> </span><span class="NAME">update</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">newVal</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
721
+ <span class='line'>714</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fieldToSet</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._fieldName</span><span class="PUNC">;</span><span class="WHIT">
722
+ <span class='line'>715</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">setOn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._obj</span><span class="PUNC">;</span><span class="WHIT">
723
+ <span class='line'>716</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._fieldName.include</span><span class="PUNC">(</span><span class="STRN">"."</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
724
+ <span class='line'>717</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._fieldName.split</span><span class="PUNC">(</span><span class="STRN">"."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
725
+ <span class='line'>718</span> </span><span class="NAME">fieldToSet</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parts.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
726
+ <span class='line'>719</span> </span><span class="NAME">setOn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parts.slice</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parts.size</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">inject</span><span class="PUNC">(</span><span class="NAME">this._obj</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">acc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">field</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
727
+ <span class='line'>720</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">acc</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">acc</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">field</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
728
+ <span class='line'>721</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
729
+ <span class='line'>722</span> </span><span class="PUNC">}</span><span class="WHIT">
730
+ <span class='line'>723</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">setOn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
731
+ <span class='line'>724</span> </span><span class="NAME">setOn</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"set-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fieldToSet</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="NAME">newVal</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
732
+ <span class='line'>725</span> </span><span class="PUNC">}</span><span class="WHIT">
733
+ <span class='line'>726</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
734
+ <span class='line'>727</span>
735
+ <span class='line'>728</span> </span><span class="NAME">invert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
736
+ <span class='line'>729</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">invert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
737
+ <span class='line'>730</span> </span><span class="NAME">BINDING</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
738
+ <span class='line'>731</span>
739
+ <span class='line'>732</span> </span><span class="NAME">bind</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">observer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">skipInitialExecution</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
740
+ <span class='line'>733</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bind</span><span class="PUNC">(</span><span class="NAME">observer.wrap</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
741
+ <span class='line'>734</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
742
+ <span class='line'>735</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">proceed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
743
+ <span class='line'>736</span> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">args</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
744
+ <span class='line'>737</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">proceed.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
745
+ <span class='line'>738</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">skipInitialExecution</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
746
+ <span class='line'>739</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
747
+ <span class='line'>740</span>
748
+ <span class='line'>741</span> </span><span class="NAME">bindTo</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
749
+ <span class='line'>742</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unbinding1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">invert.bind</span><span class="PUNC">(</span><span class="NAME">binding.update.bind</span><span class="PUNC">(</span><span class="NAME">binding</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
750
+ <span class='line'>743</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unbinding2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">binding.bind</span><span class="PUNC">(</span><span class="NAME">invert.update.bind</span><span class="PUNC">(</span><span class="NAME">invert</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
751
+ <span class='line'>744</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
752
+ <span class='line'>745</span> </span><span class="NAME">unbinding1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
753
+ <span class='line'>746</span> </span><span class="NAME">unbinding2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
754
+ <span class='line'>747</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
755
+ <span class='line'>748</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
756
+ <span class='line'>749</span>
757
+ <span class='line'>750</span> </span><span class="NAME">value</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
758
+ <span class='line'>751</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.value</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
759
+ <span class='line'>752</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
760
+ <span class='line'>753</span>
761
+ <span class='line'>754</span> </span><span class="NAME">update</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
762
+ <span class='line'>755</span> </span><span class="NAME">this.update</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
763
+ <span class='line'>756</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
764
+ <span class='line'>757</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
765
+ <span class='line'>758</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">invert</span><span class="PUNC">;</span><span class="WHIT">
766
+ <span class='line'>759</span> </span><span class="PUNC">}</span><span class="WHIT">
767
+ <span class='line'>760</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
768
+ <span class='line'>761</span> </span></pre></body></html>