lib/ruote/svc/treechecker.rb in ruote-2.2.0 vs lib/ruote/svc/treechecker.rb in ruote-2.3.0

- old
+ new

@@ -1,7 +1,7 @@ #-- -# Copyright (c) 2005-2011, John Mettraux, jmettraux@gmail.com +# Copyright (c) 2005-2012, John Mettraux, jmettraux@gmail.com # # 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 @@ -35,11 +35,11 @@ # class TreeChecker def initialize(context) - (context['use_ruby_treechecker'] == false) and return + return if context['use_ruby_treechecker'] == false checker = Rufus::TreeChecker.new do exclude_fvccall :abort, :exit, :exit! exclude_fvccall :system, :fork, :syscall, :trap, :require, :load @@ -48,11 +48,10 @@ #exclude_call_to :class exclude_fvcall :private, :public, :protected #exclude_raise # no raise or throw - exclude_def # no method definition exclude_eval # no eval, module_eval or instance_eval exclude_backquotes # no `rm -fR the/kitchen/sink` exclude_alias # no alias or aliast_method exclude_global_vars # $vars are off limits exclude_module_tinkering # no module opening @@ -68,23 +67,21 @@ # Ruote::ProcessDefinition exclude_call_to :instance_variable_get, :instance_variable_set end + stricter_checker = checker.clone + stricter_checker.add_rules do + exclude_def # no method definition + exclude_raise # no raise or throw + end + # the checker used when reading process definitions - @def_checker = checker.clone # and not dup - @def_checker.add_rules do - exclude_raise # no raise or throw - end + @def_checker = stricter_checker.clone # and not dup @def_checker.freeze - # the checker used when dealing with BlockParticipant code - - @blo_checker = checker.clone # and not dup - @blo_checker.freeze - ## the checker used when dealing with conditionals # #@con_checker = checker.clone # and not dup #@con_checker.add_rules do # exclude_raise # no raise or throw @@ -98,16 +95,26 @@ # lib/ruote/exp/condition.rb doesn't use this treechecker # kept (commented out) for 'documentation' # the checker used when dealing with code in $(ruby:xxx} - @dol_checker = checker.clone # and not dup - @dol_checker.add_rules do - exclude_raise # no raise or throw - end + @dol_checker = stricter_checker.clone # and not dup @dol_checker.freeze + # the checker used when dealing with BlockParticipant code + + @blo_checker = checker.clone # and not dup + @blo_checker.add_rules do + exclude_def # no method definition + end + @blo_checker.freeze + + # the checker used for CodeParticipant + + @cod_checker = checker.clone # and not dup + @cod_checker.freeze + freeze # preventing further modifications end def definition_check(ruby_code) @@ -121,9 +128,14 @@ end def dollar_check(ruby_code) @dol_checker.check(ruby_code) if @dol_checker + end + + def code_check(ruby_code) + + @cod_checker.check(ruby_code) if @cod_checker end end end