lib/openwfe/expressions/value.rb in ruote-0.9.19 vs lib/openwfe/expressions/value.rb in ruote-0.9.20

- old
+ new

@@ -1,43 +1,29 @@ -# #-- -# Copyright (c) 2006-2008, John Mettraux, OpenWFE.org -# All rights reserved. +# Copyright (c) 2006-2009, John Mettraux, jmettraux@gmail.com # -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: # -# . Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. # -# . Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. # -# . Neither the name of the "OpenWFE" nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. +# Made in Japan. #++ -# -# -# "made in Japan" -# -# John Mettraux at openwfe.org -# module OpenWFE # # A small mixin providing value for looking up the attributes @@ -52,71 +38,59 @@ # def apply (workitem) escape = lookup_boolean_attribute('escape', workitem, false) - if @children.length < 1 + if raw_children.length < 1 - workitem.attributes[FIELD_RESULT] = - lookup_value workitem, :escape => escape + workitem.set_result(lookup_value(workitem, :escape => escape)) - reply workitem + reply(workitem) return end - child = @children.first + child = raw_children.first - if child.kind_of?(OpenWFE::FlowExpressionId) + if child.is_a?(Array) # child is an expression - handle_child child, workitem - return - end + if get_expression_map.get_class(child[0]) == DefineExpression - workitem.attributes[FIELD_RESULT] = - fetch_text_content workitem, escape + workitem.set_result(child) # bind process - reply workitem + reply(workitem) + else + + apply_child(0, workitem) # apply child + end + + else # child is a piece of text + + workitem.set_result(fetch_text_content(workitem, escape)) + + reply(workitem) + end end def lookup_variable_attribute (workitem) - lookup [ "variable", "var", "v" ], workitem + lookup [ 'variable', 'var', 'v' ], workitem end def lookup_field_attribute (workitem) - lookup [ "field", "fld", "f" ], workitem + lookup [ 'field', 'fld', 'f' ], workitem end - protected - - def handle_child (child, workitem) - - raw_child, _fei = get_expression_pool.fetch(child) - - if raw_child.is_definition? - - #body_fei = get_expression_pool.evaluate child, workitem - #workitem.attributes[FIELD_RESULT] = body_fei - - workitem.attributes[FIELD_RESULT] = raw_child - # - # storing the child raw expression - - reply workitem - else - - get_expression_pool.apply raw_child, workitem - end - end - private def lookup (name_array, workitem) name_array.each do |n| - v = lookup_string_attribute n, workitem - return v if v + + v = lookup_string_attribute(n, workitem) + + return v if v != nil + # covers v = false as well end nil end end