lib/zafu/node_context.rb in zafu-0.8.2 vs lib/zafu/node_context.rb in zafu-0.8.3
- old
+ new
@@ -49,11 +49,11 @@
# The convention is to use the class of the current object to build this name.
# You can also use an 'after_class' parameter to move up in the current object's class hierarchy to get
# ivar name (see #master_class).
def as_main(after_class = nil)
klass = after_class ? master_class(after_class) : single_class
- res = self.class.new("@#{klass.to_s.underscore}", single_class, nil) #, :new_record => @opts[:new_record])
+ res = self.class.new("@#{klass.to_s.underscore}", single_class, nil)
res.dom_prefix = self.dom_prefix
res
end
# Find the class just afer 'after_class' in the class hierarchy.
@@ -92,15 +92,18 @@
code
else
str || "<%= #{code} %>"
end
else
- @saved_dom_id || (
- [dom_prefix] +
- dom_scopes +
- (options[:list] ? [make_scope_id] : [])
- ).compact.uniq.join('_')
+ @saved_dom_id || if options[:list]
+ scopes = dom_scopes
+ scopes = [dom_prefix] if scopes.empty?
+ scopes + [make_scope_id]
+ else
+ scopes = dom_scopes
+ scopes + ((@up || scopes.empty?) ? [dom_prefix] : [])
+ end.compact.uniq.join('_')
end
end
# This holds the current context's unique name if it has it's own or one from the hierarchy. If
# none is found, it builds one.
@@ -171,10 +174,20 @@
end
protected
# List of scopes defined in ancestry (used to generate dom_id).
def dom_scopes
- (@up ? @up.dom_scopes : []) + (@dom_scope ? [make_scope_id] : [])
+ return [@saved_dom_id] if @saved_dom_id
+ if @up
+ scopes = @up.dom_scopes
+ if @dom_scope
+ (scopes.empty? ? [dom_prefix] : scopes) + [make_scope_id]
+ else
+ scopes
+ end
+ else
+ @dom_scope ? [dom_prefix, make_scope_id] : []
+ end
end
private
def make_scope_id
"\#{#{@name}.zip}"
\ No newline at end of file