volt 0.8.15 → 0.8.16

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 (162) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +11 -0
  3. data/CHANGELOG.md +11 -0
  4. data/Gemfile +1 -1
  5. data/Guardfile +2 -3
  6. data/Rakefile +1 -4
  7. data/VERSION +1 -1
  8. data/app/volt/controllers/notices_controller.rb +1 -1
  9. data/app/volt/tasks/live_query/data_store.rb +7 -7
  10. data/app/volt/tasks/live_query/live_query.rb +7 -9
  11. data/app/volt/tasks/live_query/live_query_pool.rb +13 -12
  12. data/app/volt/tasks/live_query/query_tracker.rb +4 -5
  13. data/app/volt/tasks/query_tasks.rb +9 -11
  14. data/app/volt/tasks/store_tasks.rb +4 -4
  15. data/app/volt/tasks/user_tasks.rb +1 -1
  16. data/bin/volt +2 -2
  17. data/lib/volt.rb +3 -7
  18. data/lib/volt/assets/test.rb +1 -2
  19. data/lib/volt/benchmark/benchmark.rb +3 -3
  20. data/lib/volt/boot.rb +1 -1
  21. data/lib/volt/cli.rb +18 -18
  22. data/lib/volt/cli/asset_compile.rb +8 -10
  23. data/lib/volt/cli/generate.rb +9 -11
  24. data/lib/volt/cli/new_gem.rb +51 -51
  25. data/lib/volt/config.rb +2 -3
  26. data/lib/volt/console.rb +1 -1
  27. data/lib/volt/controllers/model_controller.rb +6 -6
  28. data/lib/volt/data_stores/data_store.rb +1 -1
  29. data/lib/volt/data_stores/mongo_driver.rb +1 -1
  30. data/lib/volt/extra_core/array.rb +2 -2
  31. data/lib/volt/extra_core/blank.rb +1 -2
  32. data/lib/volt/extra_core/extra_core.rb +1 -1
  33. data/lib/volt/extra_core/inflector/methods.rb +0 -1
  34. data/lib/volt/extra_core/logger.rb +13 -7
  35. data/lib/volt/extra_core/numeric.rb +1 -1
  36. data/lib/volt/extra_core/string.rb +7 -7
  37. data/lib/volt/extra_core/stringify_keys.rb +5 -5
  38. data/lib/volt/models.rb +2 -2
  39. data/lib/volt/models/array_model.rb +18 -19
  40. data/lib/volt/models/cursor.rb +0 -1
  41. data/lib/volt/models/model.rb +17 -35
  42. data/lib/volt/models/model_hash_behaviour.rb +0 -2
  43. data/lib/volt/models/model_state.rb +1 -1
  44. data/lib/volt/models/model_wrapper.rb +1 -1
  45. data/lib/volt/models/persistors/array_store.rb +26 -13
  46. data/lib/volt/models/persistors/base.rb +1 -1
  47. data/lib/volt/models/persistors/flash.rb +2 -2
  48. data/lib/volt/models/persistors/local_store.rb +2 -3
  49. data/lib/volt/models/persistors/model_store.rb +7 -6
  50. data/lib/volt/models/persistors/params.rb +2 -2
  51. data/lib/volt/models/persistors/query/query_listener.rb +2 -0
  52. data/lib/volt/models/persistors/query/query_listener_pool.rb +1 -1
  53. data/lib/volt/models/persistors/store.rb +1 -2
  54. data/lib/volt/models/persistors/store_state.rb +2 -3
  55. data/lib/volt/models/url.rb +17 -16
  56. data/lib/volt/models/validations.rb +11 -14
  57. data/lib/volt/models/validators/length_validator.rb +3 -3
  58. data/lib/volt/models/validators/presence_validator.rb +2 -2
  59. data/lib/volt/page/bindings/attribute_binding.rb +2 -3
  60. data/lib/volt/page/bindings/base_binding.rb +1 -1
  61. data/lib/volt/page/bindings/each_binding.rb +8 -9
  62. data/lib/volt/page/bindings/event_binding.rb +2 -3
  63. data/lib/volt/page/bindings/template_binding.rb +8 -7
  64. data/lib/volt/page/bindings/template_binding/grouped_controllers.rb +2 -1
  65. data/lib/volt/page/channel.rb +10 -10
  66. data/lib/volt/page/channel_stub.rb +1 -1
  67. data/lib/volt/page/document.rb +0 -1
  68. data/lib/volt/page/document_events.rb +4 -4
  69. data/lib/volt/page/page.rb +26 -19
  70. data/lib/volt/page/string_template_renderer.rb +2 -2
  71. data/lib/volt/page/sub_context.rb +10 -4
  72. data/lib/volt/page/targets/attribute_section.rb +1 -1
  73. data/lib/volt/page/targets/attribute_target.rb +1 -2
  74. data/lib/volt/page/targets/base_section.rb +4 -4
  75. data/lib/volt/page/targets/binding_document/base_node.rb +0 -1
  76. data/lib/volt/page/targets/binding_document/component_node.rb +4 -5
  77. data/lib/volt/page/targets/dom_section.rb +21 -22
  78. data/lib/volt/page/targets/dom_target.rb +1 -1
  79. data/lib/volt/page/targets/dom_template.rb +11 -12
  80. data/lib/volt/page/targets/helpers/comment_searchers.rb +7 -8
  81. data/lib/volt/page/tasks.rb +0 -1
  82. data/lib/volt/page/template_renderer.rb +1 -1
  83. data/lib/volt/page/url_tracker.rb +3 -3
  84. data/lib/volt/reactive/computation.rb +5 -11
  85. data/lib/volt/reactive/dependency.rb +1 -3
  86. data/lib/volt/reactive/eventable.rb +17 -4
  87. data/lib/volt/reactive/hash_dependency.rb +1 -0
  88. data/lib/volt/reactive/reactive_accessors.rb +0 -1
  89. data/lib/volt/reactive/reactive_array.rb +20 -25
  90. data/lib/volt/reactive/reactive_hash.rb +3 -3
  91. data/lib/volt/router/routes.rb +11 -13
  92. data/lib/volt/server.rb +17 -17
  93. data/lib/volt/server/component_handler.rb +2 -2
  94. data/lib/volt/server/component_templates.rb +8 -8
  95. data/lib/volt/server/html_parser/attribute_scope.rb +9 -10
  96. data/lib/volt/server/html_parser/if_view_scope.rb +2 -2
  97. data/lib/volt/server/html_parser/sandlebars_parser.rb +14 -14
  98. data/lib/volt/server/html_parser/textarea_scope.rb +1 -2
  99. data/lib/volt/server/html_parser/view_handler.rb +1 -1
  100. data/lib/volt/server/html_parser/view_parser.rb +1 -1
  101. data/lib/volt/server/html_parser/view_scope.rb +10 -10
  102. data/lib/volt/server/rack/asset_files.rb +15 -16
  103. data/lib/volt/server/rack/component_code.rb +2 -2
  104. data/lib/volt/server/rack/component_html_renderer.rb +0 -1
  105. data/lib/volt/server/rack/component_paths.rb +13 -10
  106. data/lib/volt/server/rack/index_files.rb +4 -4
  107. data/lib/volt/server/rack/opal_files.rb +4 -5
  108. data/lib/volt/server/rack/source_map_server.rb +3 -3
  109. data/lib/volt/server/socket_connection_handler.rb +3 -4
  110. data/lib/volt/server/socket_connection_handler_stub.rb +1 -1
  111. data/lib/volt/spec/setup.rb +3 -3
  112. data/lib/volt/store/mongo.rb +2 -2
  113. data/lib/volt/tasks/task_handler.rb +3 -3
  114. data/lib/volt/utils/generic_counting_pool.rb +2 -2
  115. data/lib/volt/utils/generic_pool.rb +7 -8
  116. data/lib/volt/utils/local_storage.rb +4 -4
  117. data/lib/volt/volt/environment.rb +1 -1
  118. data/spec/apps/file_loading/app/shared/config/dependencies.rb +1 -1
  119. data/spec/apps/kitchen_sink/Gemfile +0 -2
  120. data/spec/apps/kitchen_sink/app/main/config/routes.rb +5 -5
  121. data/spec/apps/kitchen_sink/app/main/controllers/main_controller.rb +7 -6
  122. data/spec/apps/kitchen_sink/app/main/controllers/todos_controller.rb +3 -4
  123. data/spec/controllers/reactive_accessors_spec.rb +4 -4
  124. data/spec/extra_core/inflector_spec.rb +1 -1
  125. data/spec/extra_core/string_transformation_test_cases.rb +23 -24
  126. data/spec/extra_core/string_transformations_spec.rb +11 -12
  127. data/spec/integration/bindings_spec.rb +15 -15
  128. data/spec/integration/list_spec.rb +12 -13
  129. data/spec/integration/templates_spec.rb +3 -3
  130. data/spec/models/model_spec.rb +74 -80
  131. data/spec/models/persistors/params_spec.rb +2 -2
  132. data/spec/models/persistors/store_spec.rb +4 -4
  133. data/spec/models/validations_spec.rb +14 -23
  134. data/spec/page/bindings/content_binding_spec.rb +7 -8
  135. data/spec/page/bindings/template_binding_spec.rb +22 -24
  136. data/spec/page/sub_context_spec.rb +2 -2
  137. data/spec/reactive/computation_spec.rb +3 -3
  138. data/spec/reactive/reactive_array_spec.rb +12 -12
  139. data/spec/router/routes_spec.rb +45 -48
  140. data/spec/server/html_parser/sandlebars_parser_spec.rb +42 -42
  141. data/spec/server/html_parser/view_parser_spec.rb +132 -153
  142. data/spec/server/rack/asset_files_spec.rb +9 -8
  143. data/spec/server/rack/component_paths_spec.rb +5 -5
  144. data/spec/server/rack/rack_requests_spec.rb +3 -3
  145. data/spec/spec_helper.rb +1 -1
  146. data/spec/tasks/live_query_spec.rb +4 -5
  147. data/spec/tasks/query_tasks.rb +2 -4
  148. data/spec/tasks/query_tracker_spec.rb +29 -29
  149. data/spec/templates/targets/binding_document/component_node_spec.rb +1 -1
  150. data/spec/utils/generic_counting_pool_spec.rb +4 -4
  151. data/spec/utils/generic_pool_spec.rb +12 -12
  152. data/templates/component/config/routes.rb +2 -2
  153. data/templates/component/controllers/main_controller.rb +7 -6
  154. data/templates/newgem/app/newgem/config/dependencies.rb +1 -1
  155. data/templates/newgem/app/newgem/config/routes.rb +1 -1
  156. data/templates/project/app/main/config/routes.rb +2 -2
  157. data/templates/project/app/main/controllers/main_controller.rb +7 -6
  158. data/templates/project/spec/sample_spec.rb +2 -2
  159. data/volt.gemspec +32 -33
  160. metadata +3 -4
  161. data/lib/volt/extra_core/log.rb +0 -56
  162. data/lib/volt/extra_core/try.rb +0 -31
@@ -11,7 +11,7 @@ module Volt
11
11
  end
12
12
 
13
13
  def get
14
- return (controller = self.controller) && controller[0]
14
+ (controller = self.controller) && controller[0]
15
15
  end
16
16
 
17
17
  def set(controller)
@@ -31,6 +31,7 @@ module Volt
31
31
  end
32
32
 
33
33
  private
34
+
34
35
  def controller
35
36
  @@controllers[@name]
36
37
  end
@@ -23,11 +23,11 @@ module Volt
23
23
  end
24
24
 
25
25
  def connected?
26
- self.connected
26
+ connected
27
27
  end
28
28
 
29
29
  def connect!
30
- %x{
30
+ `
31
31
  this.socket = new SockJS('/channel');
32
32
 
33
33
  this.socket.onopen = function() {
@@ -41,7 +41,7 @@ module Volt
41
41
  this.socket.onclose = function(error) {
42
42
  self.$closed(error);
43
43
  };
44
- }
44
+ `
45
45
  end
46
46
 
47
47
  def opened
@@ -71,11 +71,11 @@ module Volt
71
71
 
72
72
  interval = self.reconnect_interval
73
73
 
74
- %x{
74
+ `
75
75
  setTimeout(function() {
76
76
  self['$connect!']();
77
77
  }, interval);
78
- }
78
+ `
79
79
  end
80
80
 
81
81
  def message_received(message)
@@ -85,22 +85,22 @@ module Volt
85
85
  end
86
86
 
87
87
  def send_message(message)
88
- if self.status != :open
88
+ if status != :open
89
89
  @queue << message
90
90
  else
91
91
  # TODO: Temp: wrap message in an array, so we're sure its valid JSON
92
92
  message = JSON.dump([message])
93
- %x{
93
+ `
94
94
  this.socket.send(message);
95
- }
95
+ `
96
96
  end
97
97
  end
98
98
 
99
99
  def close!
100
100
  self.status = :closed
101
- %x{
101
+ `
102
102
  this.socket.close();
103
- }
103
+ `
104
104
  end
105
105
  end
106
106
  end
@@ -31,7 +31,7 @@ module Volt
31
31
  end
32
32
 
33
33
  def close!
34
- raise "close! should not be called on the backend channel"
34
+ fail 'close! should not be called on the backend channel'
35
35
  end
36
36
  end
37
37
  end
@@ -3,6 +3,5 @@ module Volt
3
3
  # templates
4
4
  # events
5
5
  class Document
6
-
7
6
  end
8
7
  end
@@ -14,11 +14,11 @@ module Volt
14
14
 
15
15
  that = self
16
16
 
17
- %x{
17
+ `
18
18
  $('body').on(event, function(e) {
19
19
  that.$handle(event, e, e.target || e.originalEvent.target);
20
20
  });
21
- }
21
+ `
22
22
 
23
23
  end
24
24
 
@@ -70,9 +70,9 @@ module Volt
70
70
  @events.delete(event)
71
71
 
72
72
  # Remove the event from the body
73
- %x{
73
+ `
74
74
  $('body').unbind(event);
75
- }
75
+ `
76
76
  end
77
77
  end
78
78
  end
@@ -47,7 +47,7 @@ module Volt
47
47
 
48
48
  if RUBY_PLATFORM == 'opal'
49
49
  # Setup escape binding for console
50
- %x{
50
+ `
51
51
  $(document).keyup(function(e) {
52
52
  if (e.keyCode == 27) {
53
53
  Opal.gvars.page.$launch_console();
@@ -57,18 +57,18 @@ module Volt
57
57
  $(document).on('click', 'a', function(event) {
58
58
  return Opal.gvars.page.$link_clicked($(this).attr('href'), event);
59
59
  });
60
- }
60
+ `
61
61
  end
62
62
 
63
63
  # Initialize tasks so we can get the reload message
64
- self.tasks if Volt.env.development?
64
+ tasks if Volt.env.development?
65
65
 
66
66
  if Volt.client?
67
67
  channel.on('reconnected') do
68
68
  @page._reconnected = true
69
69
 
70
70
  `setTimeout(function() {`
71
- @page._reconnected = false
71
+ @page._reconnected = false
72
72
  `}, 2000);`
73
73
  end
74
74
  end
@@ -90,7 +90,7 @@ module Volt
90
90
  @tasks ||= Tasks.new(self)
91
91
  end
92
92
 
93
- def link_clicked(url='', event=nil)
93
+ def link_clicked(url = '', event = nil)
94
94
  # Skip when href == ''
95
95
  return false if url.blank?
96
96
 
@@ -111,7 +111,7 @@ module Volt
111
111
  # end
112
112
 
113
113
  # Not stopping, process link normally
114
- return true
114
+ true
115
115
  end
116
116
 
117
117
  # We provide a binding_name, so we can bind events on the document
@@ -120,7 +120,7 @@ module Volt
120
120
  end
121
121
 
122
122
  def launch_console
123
- puts "Launch Console"
123
+ puts 'Launch Console'
124
124
  end
125
125
 
126
126
  def channel
@@ -133,9 +133,7 @@ module Volt
133
133
  end
134
134
  end
135
135
 
136
- def events
137
- @events
138
- end
136
+ attr_reader :events
139
137
 
140
138
  def add_model(model_name)
141
139
  model_name = model_name.camelize.to_sym
@@ -143,8 +141,17 @@ module Volt
143
141
  end
144
142
 
145
143
  def add_template(name, template, bindings)
146
- @templates ||= {}
147
- @templates[name] = {'html' => template, 'bindings' => bindings}
144
+ @templates ||= {}
145
+
146
+ # First template gets priority. The backend will load templates in order so
147
+ # that local templates come in before gems (so they can be overridden).
148
+ #
149
+ # TODO: Currently this means we will send templates to the client that will
150
+ # not get used because they are being overridden. Need to detect that and
151
+ # not send them.
152
+ unless @templates[name]
153
+ @templates[name] = { 'html' => template, 'bindings' => bindings }
154
+ end
148
155
  # puts "Add Template: #{name}"
149
156
  end
150
157
 
@@ -155,7 +162,7 @@ module Volt
155
162
 
156
163
  def start
157
164
  # Setup to render template
158
- Element.find('body').html = "<!-- $CONTENT --><!-- $/CONTENT -->"
165
+ Element.find('body').html = '<!-- $CONTENT --><!-- $/CONTENT -->'
159
166
 
160
167
  load_stored_page
161
168
 
@@ -168,10 +175,10 @@ module Volt
168
175
  TemplateRenderer.new(self, DomTarget.new, main_controller, 'CONTENT', 'main/main/main/body')
169
176
 
170
177
  # Setup title reactive template
171
- @title_template = StringTemplateRender.new(self, main_controller, "main/main/main/title")
178
+ @title_template = StringTemplateRender.new(self, main_controller, 'main/main/main/title')
172
179
 
173
180
  # Watch for changes to the title template
174
- Proc.new do
181
+ proc do
175
182
  title = @title_template.html.gsub(/\n/, ' ')
176
183
  `document.title = title;`
177
184
  end.watch!
@@ -186,11 +193,11 @@ module Volt
186
193
 
187
194
  `page_obj_str = sessionStorage.getItem('___page');`
188
195
  `if (page_obj_str) {`
189
- `sessionStorage.removeItem('___page');`
196
+ `sessionStorage.removeItem('___page');`
190
197
 
191
- JSON.parse(page_obj_str).each_pair do |key, value|
192
- self.page.send(:"_#{key}=", value)
193
- end
198
+ JSON.parse(page_obj_str).each_pair do |key, value|
199
+ page.send(:"_#{key}=", value)
200
+ end
194
201
  `}`
195
202
  end
196
203
  end
@@ -10,7 +10,7 @@ module Volt
10
10
 
11
11
  @template_path = template_path
12
12
  @target = AttributeTarget.new(nil, nil, self)
13
- @template = TemplateRenderer.new(page, @target, context, "main", template_path)
13
+ @template = TemplateRenderer.new(page, @target, context, 'main', template_path)
14
14
  end
15
15
 
16
16
  # Render the template and get the current value
@@ -22,7 +22,7 @@ module Volt
22
22
  html = @target.to_html
23
23
  end
24
24
 
25
- return html
25
+ html
26
26
  end
27
27
 
28
28
  def changed!
@@ -2,21 +2,25 @@ module Volt
2
2
  # A sub context takes in a hash of local variables that should be available
3
3
  # in front of the current context. It basically proxies the local variables
4
4
  # first, then failing those proxies the context.
5
+ #
6
+ # SubContext is also used for the attrs in controllers. You can pass return_nils
7
+ # to have missing values return nil (as in attrs).
5
8
  class SubContext
6
9
  attr_reader :locals
7
10
 
8
- def initialize(locals, context=nil)
11
+ def initialize(locals, context = nil, return_nils = false)
9
12
  @locals = locals.stringify_keys
10
13
  @context = context
14
+ @return_nils = return_nils
11
15
  end
12
16
 
13
17
  def respond_to?(method_name)
14
- !!(@locals[method_name.to_s] || (@context && @context.respond_to?(method_name)) || super)
18
+ !!(@locals[method_name.to_s] || (@context && @context.respond_to?(method_name)))
15
19
  end
16
20
 
17
21
  def method_missing(method_name, *args, &block)
18
22
  method_name = method_name.to_s
19
- if @locals.has_key?(method_name)
23
+ if @locals.key?(method_name)
20
24
  obj = @locals[method_name]
21
25
 
22
26
  # TODORW: Might get a normal proc, flag internal procs
@@ -24,11 +28,13 @@ module Volt
24
28
  obj = obj.call(*args)
25
29
  end
26
30
  return obj
31
+ elsif @return_nils && method_name[-1] != '='
32
+ return nil
27
33
  elsif @context
28
34
  return @context.send(method_name, *args, &block)
29
35
  end
30
36
 
31
- raise NoMethodError.new("undefined method `#{method_name}' for \"#{self.inspect}\":#{self.class.to_s}")
37
+ fail NoMethodError.new("undefined method `#{method_name}' for \"#{inspect}\":#{self.class}")
32
38
  end
33
39
  end
34
40
  end
@@ -27,7 +27,7 @@ module Volt
27
27
  @target.find_by_binding_id(@binding_name).html = html
28
28
  end
29
29
 
30
- return bindings
30
+ bindings
31
31
  end
32
32
 
33
33
  def remove
@@ -7,9 +7,8 @@ module Volt
7
7
  # AttributeTarget's provide an interface that can render bindings into
8
8
  # a string that can then be used to update a attribute binding.
9
9
  class AttributeTarget < ComponentNode
10
-
11
10
  def dom_section(*args)
12
- return AttributeSection.new(self, *args)
11
+ AttributeSection.new(self, *args)
13
12
  end
14
13
  end
15
14
  end
@@ -1,20 +1,20 @@
1
1
  require 'volt/page/targets/dom_template'
2
2
 
3
3
  module Volt
4
- # Class to describe the interface for sections
4
+ # Class to describe the interface for sections
5
5
  class BaseSection
6
6
  @@template_cache = {}
7
7
 
8
8
  def remove
9
- raise "not implemented"
9
+ fail 'not implemented'
10
10
  end
11
11
 
12
12
  def remove_anchors
13
- raise "not implemented"
13
+ fail 'not implemented'
14
14
  end
15
15
 
16
16
  def insert_anchor_before_end
17
- raise "not implemented"
17
+ fail 'not implemented'
18
18
  end
19
19
 
20
20
  def set_content_to_template(page, template_name)
@@ -1,5 +1,4 @@
1
1
  module Volt
2
2
  class BaseNode
3
-
4
3
  end
5
4
  end
@@ -11,7 +11,7 @@ module Volt
11
11
 
12
12
  attr_accessor :parent, :binding_id, :nodes
13
13
 
14
- def initialize(binding_id=nil, parent=nil, root=nil)
14
+ def initialize(binding_id = nil, parent = nil, root = nil)
15
15
  @nodes = []
16
16
  @binding_id = binding_id
17
17
  @parent = parent
@@ -24,7 +24,6 @@ module Volt
24
24
  else
25
25
  trigger!('changed')
26
26
  end
27
-
28
27
  end
29
28
 
30
29
  def text=(text)
@@ -72,7 +71,7 @@ module Volt
72
71
  str << node.to_html
73
72
  end
74
73
 
75
- return str.join('')
74
+ str.join('')
76
75
  end
77
76
 
78
77
  def find_by_binding_id(binding_id)
@@ -87,7 +86,7 @@ module Volt
87
86
  end
88
87
  end
89
88
 
90
- return nil
89
+ nil
91
90
  end
92
91
 
93
92
  def remove
@@ -100,7 +99,7 @@ module Volt
100
99
  end
101
100
 
102
101
  def remove_anchors
103
- raise "not implemented"
102
+ fail 'not implemented'
104
103
 
105
104
  @parent.nodes.delete(self)
106
105
 
@@ -10,12 +10,11 @@ module Volt
10
10
  @end_node = find_by_comment("$/#{binding_name}")
11
11
  end
12
12
 
13
-
14
13
  def text=(value)
15
- %x{
14
+ `
16
15
  this.$range().deleteContents();
17
16
  this.$range().insertNode(document.createTextNode(#{value}));
18
- }
17
+ `
19
18
  end
20
19
 
21
20
  def html=(value)
@@ -25,18 +24,18 @@ module Volt
25
24
  end
26
25
 
27
26
  def remove
28
- range = self.range()
27
+ range = self.range
29
28
 
30
- %x{
29
+ `
31
30
  range.deleteContents();
32
- }
31
+ `
33
32
  end
34
33
 
35
34
  def remove_anchors
36
- %x{
35
+ `
37
36
  this.start_node.parentNode.removeChild(this.start_node);
38
37
  this.end_node.parentNode.removeChild(this.end_node);
39
- }
38
+ `
40
39
  @start_node = nil
41
40
  @end_node = nil
42
41
  end
@@ -53,9 +52,9 @@ module Volt
53
52
  # Takes in an array of dom nodes and replaces the current content
54
53
  # with the new nodes
55
54
  def nodes=(nodes)
56
- range = self.range()
55
+ range = self.range
57
56
 
58
- %x{
57
+ `
59
58
  range.deleteContents();
60
59
 
61
60
  for (var i=nodes.length-1; i >= 0; i--) {
@@ -64,50 +63,50 @@ module Volt
64
63
  node.parentNode.removeChild(node);
65
64
  range.insertNode(node);
66
65
  }
67
- }
66
+ `
68
67
  end
69
68
 
70
69
  # Returns the nearest DOM node that contains all of the section.
71
70
  def container_node
72
- range = self.range()
73
- return `range.commonAncestorContainer`
71
+ range = self.range
72
+ `range.commonAncestorContainer`
74
73
  end
75
74
 
76
75
  def set_template(dom_template)
77
76
  dom_nodes, bindings = dom_template.make_new
78
77
 
79
78
  children = nil
80
- %x{
79
+ `
81
80
  children = dom_nodes.childNodes;
82
- }
81
+ `
83
82
 
84
83
  # Update the nodes
85
84
  self.nodes = children
86
85
 
87
- %x{
86
+ `
88
87
  dom_nodes = null;
89
- }
88
+ `
90
89
 
91
- return bindings
90
+ bindings
92
91
  end
93
92
 
94
93
  def range
95
94
  return @range if @range
96
95
 
97
96
  range = nil
98
- %x{
97
+ `
99
98
  range = document.createRange();
100
99
  range.setStartAfter(this.start_node);
101
100
  range.setEndBefore(this.end_node);
102
- }
101
+ `
103
102
 
104
103
  @range = range
105
104
 
106
- return range
105
+ range
107
106
  end
108
107
 
109
108
  def inspect
110
- "<#{self.class.to_s}>"
109
+ "<#{self.class}>"
111
110
  end
112
111
  end
113
112
  end