diff --git a/lib/rexml/functions.rb b/lib/rexml/functions.rb index f9f2166a..e277740d 100644 --- a/lib/rexml/functions.rb +++ b/lib/rexml/functions.rb @@ -74,13 +74,17 @@ def Functions::local_name(node_set=nil) end def Functions::namespace_uri( node_set=nil ) - get_namespace( node_set ) {|node| node.namespace} + get_namespace( node_set ) do |node| + return node.namespace + end + "" end def Functions::name( node_set=nil ) get_namespace( node_set ) do |node| - node.expanded_name + return node.expanded_name end + "" end # Helper method. diff --git a/lib/rexml/xpath_parser.rb b/lib/rexml/xpath_parser.rb index 583f8c74..b97c672e 100644 --- a/lib/rexml/xpath_parser.rb +++ b/lib/rexml/xpath_parser.rb @@ -313,7 +313,7 @@ def expr( path_stack, nodeset, context=nil ) end when :variable var_name = path_stack.shift - return [@variables[var_name]] + return @variables[var_name] when :eq, :neq, :lt, :lteq, :gt, :gteq left = expr( path_stack.shift, nodeset.dup, context ) @@ -533,16 +533,13 @@ def evaluate_predicate(expression, nodesets) subcontext[:position] = position result = expr(expression.dclone, [node], subcontext) trace(:predicate_evaluate, expression, node, subcontext, result) if @debug - result = result[0] if result.kind_of? Array and result.length == 1 if result.kind_of? Numeric if result == position new_nodeset << node end elsif result.instance_of? Array - if result.size > 0 and result.inject(false) {|k,s| s or k} - if result.size > 0 - new_nodeset << node - end + if result.size > 0 + new_nodeset << node end else if result