Пример #1
0
  def debug_print(self, printer, index):
    debug = self._params.debug

    if not self._params.enable:
      printer.simple_write("skipped_action: {0}".format(index))

    if not debug:
      return

    if debug == True:
      debug = ["in", "out"]

    if isinstance(debug, util.basestring):
      debug_dict = {debug: debug}
    elif isinstance(debug, list):
      debug_dict = dict([(k, k) for k in debug])
    elif isinstance(debug, dict):
      debug_dict = debug
    else:
      debug_dict = {util.unicode(debug): util.unicode(debug)}

    variables = {}
    variables.update({
      "in": self.input,
      "out": self.output,
      "res": self.output,
      "this": self.__dict__
    })
    try:
      result = template.expand_param(debug_dict, variables)
      printer.write(result)
    except Exception as e:
      printer.write({"error": util.unicode(e)})
Пример #2
0
 def _filter(self, global_env):
   variables = dict(global_env)
   variables.update({
     "in": self.input,
     "out": self.output,
     "res": self.output,
     "this": self.__dict__
   })
   for filter_dict in self._params.filter_list:
     self.output.update(template.expand_param(filter_dict, variables))
Пример #3
0
 def _expand_params(self, parent, key, value, global_env):
   # 文字列の場合はテンプレートとして扱い、
   # 辞書、リストの場合はさらにその中の要素を展開する。
   # ここで指定していない数値等の型はそのまま
   if isinstance(value, util.basestring):
     # key に + が付いている場合は変数をそのまま代入する
     if isinstance(key, util.basestring) and key.startswith('+'):
       original_key = key.lstrip('+')
       result = template.expand_param({original_key: value}, global_env)
       parent[original_key] = result[original_key]
       del parent[key]
     else:
       parent[key] = template.expand(value, global_env)
   elif isinstance(value, dict):
     # see: scenarioloader.py
     # 辞書オブジェクトに勝手に __line__ が入ることによって挙動が変わることがあるので
     # 削除しておく
     if '__line__' in value:
       del value['__line__']
     for k, v in value.items():
       self._expand_params(value, k, v, global_env)
   elif isinstance(value, list):
     for k, v in enumerate(value):
       self._expand_params(value, k, v, global_env)