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