volt 0.5.10 → 0.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1d606022e96b3c66c338e68f58355728f8b801f4
4
- data.tar.gz: 6377f71a5054e00a7da776cc05b216cabdb3bab1
3
+ metadata.gz: e1b91323e2f7568714d8806c4a6a19ca652bcd42
4
+ data.tar.gz: 7b101bb67b83e2bd1e17e51deaba445c6e1b71d1
5
5
  SHA512:
6
- metadata.gz: cb4f2b5751bdbd886987fb7ddefe6a9b455ba61f7fd951a5538435d11e154880dcb63949ccb0cc8e98c1174aeb77c76fbb821f3cbbd50f72d57ab9f451f5ff9b
7
- data.tar.gz: a36b1aa6e6b47f0e5b1ee8086ecda80ce6bd9de5970ad143830aff2afeb2ac3710480c7114cd5bd5057a44aafe6354f3f68c2e1c92df59cb8f443fe34da81ee0
6
+ metadata.gz: 79cd2a471f41f67827221272bba712810fe0e2f3451407c62bff270e35cc1ce21618bc1411614537e5a90c9636cdcfcc99c093d5ef76204b5f87efc4996fcfe1
7
+ data.tar.gz: df8606499fcdfc4aebfcf7e7ee1d49efd15f4a45b2e7def66a822f31ff035addd62a63f60f07ba40111d17705a07c37ba0a54554aa55edfa34031537f287b7f1
data/Readme.md CHANGED
@@ -616,6 +616,10 @@ The above would search the following:
616
616
  | blog | comments | index.html | :body |
617
617
  | gems/blog | comments | index.html | :body |
618
618
 
619
+ # Context in Controls
620
+
621
+ Controls that render without a provided controller can access the context they were inserted in with the ```.parent``` method. Most of the time you want to pass in any data that will be used. But for things like calling methods on the parent controller, using ```.parent.some_method``` can be useful.
622
+
619
623
 
620
624
  # Routes
621
625
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.10
1
+ 0.5.11
@@ -17,17 +17,29 @@ class URL
17
17
  destructive!
18
18
  end
19
19
  def parse(url)
20
- puts "PARSE: #{url}"
21
- matcher = url.match(/^(https?)[:]\/\/([^\/]+)(.*)$/)
22
- @scheme = matcher[1]
23
- @host, @port = matcher[2].split(':')
24
- @port ||= 80
20
+ if url[0] == '#'
21
+ # url only updates fragment
22
+ @fragment = url[1..-1]
23
+ else
24
+ # Add the host for localized names
25
+ if url[0..3] != 'http'
26
+ host = `document.location.host`
27
+ url = "http://#{host}" + url
28
+ end
29
+
30
+ matcher = url.match(/^(https?)[:]\/\/([^\/]+)(.*)$/)
31
+ @scheme = matcher[1]
32
+ @host, @port = matcher[2].split(':')
33
+ @port ||= 80
25
34
 
26
- @path = matcher[3]
27
- @path, @fragment = @path.split('#', 2)
28
- @path, @query = @path.split('?', 2)
35
+ @path = matcher[3]
36
+ @path, @fragment = @path.split('#', 2)
37
+ @path, @query = @path.split('?', 2)
29
38
 
30
- assign_query_hash_to_params
39
+ assign_query_hash_to_params
40
+ end
41
+
42
+ scroll
31
43
  end
32
44
 
33
45
  # Full url rebuilds the url from it's constituent parts
@@ -55,6 +67,8 @@ class URL
55
67
  new_url += query_parts.join('&')
56
68
  end
57
69
 
70
+ new_url += '#' + @fragment if @fragment
71
+
58
72
  return new_url
59
73
  end
60
74
 
@@ -62,10 +76,29 @@ class URL
62
76
  # browser should be updated
63
77
  # Called when an attribute changes to update the url
64
78
  def update!
65
- new_url = full_url()
79
+ if Volt.client?
80
+ new_url = full_url()
66
81
 
67
- if `(document.location.href != new_url)`
68
- `history.pushState(null, null, new_url)`
82
+ if `(document.location.href != new_url)`
83
+ `history.pushState(null, null, new_url)`
84
+ end
85
+ end
86
+ end
87
+
88
+ def scroll
89
+ if Volt.client?
90
+ if @fragment
91
+ # Scroll to anchor
92
+ %x{
93
+ var anchor = $('a[name="' + this.fragment + '"]');
94
+ if (anchor) {
95
+ $(document.body).scrollTop(anchor.offset().top);
96
+ }
97
+ }
98
+ else
99
+ # Scroll to the top by default
100
+ `$(document.body).scrollTop(0);`
101
+ end
69
102
  end
70
103
  end
71
104
 
@@ -85,8 +118,6 @@ class URL
85
118
  # Loop through the .params we already have assigned.
86
119
  assign_from_old(@params, query_hash)
87
120
  assign_new(@params, query_hash)
88
-
89
- puts @params.inspect + '---'
90
121
  end
91
122
 
92
123
  # Loop through the old params, and overwrite any existing values,
@@ -3,7 +3,7 @@ require 'volt/page/template_renderer'
3
3
 
4
4
  class TemplateBinding < BaseBinding
5
5
  def initialize(target, context, binding_name, binding_in_path, getter)
6
- # puts "New template binding: #{context.inspect} - #{binding_name.inspect} - #{getter.inspect}"
6
+ # puts "New template binding: #{context.inspect} - #{binding_name.inspect}"
7
7
  super(target, context, binding_name)
8
8
 
9
9
  # Binding in path is the path for the template this binding is in
@@ -108,6 +108,7 @@ class TemplateBinding < BaseBinding
108
108
 
109
109
  def update
110
110
  full_path, controller_name = path_for_template(@path.cur, @section.cur)
111
+ puts "Update: #{full_path} - #{controller_name.inspect}"
111
112
 
112
113
  @current_template.remove if @current_template
113
114
 
@@ -140,7 +141,20 @@ class TemplateBinding < BaseBinding
140
141
  current_context = @context
141
142
  end
142
143
 
143
- @current_template = TemplateRenderer.new(@target, current_context, @binding_name, full_path)
144
+ @current_template = TemplateRenderer.new(@target, current_context, @binding_name, full_path)
145
+
146
+ if controller
147
+ if current_context.respond_to?(:section=)
148
+ current_context.section = @current_template.section
149
+ end
150
+
151
+ if current_context.respond_to?(:dom_ready)
152
+ current_context.dom_ready
153
+ end
154
+
155
+ @controller = controller
156
+ end
157
+
144
158
  end
145
159
 
146
160
  def remove
@@ -161,6 +175,15 @@ class TemplateBinding < BaseBinding
161
175
  end
162
176
 
163
177
  super
178
+
179
+ if @controller
180
+ # Let the controller know we removed
181
+ if @controller.respond_to?(:dom_removed)
182
+ @controller.dom_removed
183
+ end
184
+
185
+ @controller = nil
186
+ end
164
187
  end
165
188
 
166
189
  private
@@ -75,14 +75,13 @@ class Page
75
75
  @tasks ||= Tasks.new(self)
76
76
  end
77
77
 
78
- def link_clicked(url)
78
+ def link_clicked(url='')
79
79
  # Skip when href == ''
80
80
  return if url.blank?
81
81
 
82
82
  # Normalize url
83
83
  # Benchmark.bm(1) do
84
- host = `document.location.host`
85
- @url.parse("http://#{host}" + url)
84
+ @url.parse(url)
86
85
  # end
87
86
 
88
87
  # Clear the flash
@@ -161,7 +160,6 @@ class Page
161
160
  page_obj_str = nil
162
161
 
163
162
  `page_obj_str = sessionStorage.getItem('___page');`
164
- `console.log(page_obj_str);`
165
163
  `if (page_obj_str) {`
166
164
  `sessionStorage.removeItem('___page');`
167
165
 
@@ -25,15 +25,6 @@ class TemplateRenderer < BaseBinding
25
25
  @sub_bindings << binding.call(target, context, id)
26
26
  end
27
27
  end
28
-
29
- if @context.respond_to?(:section=)
30
- @context.section = self.section
31
- end
32
-
33
- if @context.respond_to?(:dom_ready)
34
- @context.dom_ready
35
- end
36
-
37
28
  end
38
29
 
39
30
  def remove
@@ -51,12 +42,6 @@ class TemplateRenderer < BaseBinding
51
42
  @sub_bindings = []
52
43
 
53
44
  super
54
-
55
- # Let the controller know we removed
56
- if @context.respond_to?(:dom_removed)
57
- @context.dom_removed
58
- end
59
-
60
45
  end
61
46
 
62
47
  def remove_anchors
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: volt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.10
4
+ version: 0.5.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Stout
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-05 00:00:00.000000000 Z
11
+ date: 2014-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor