code: def add_textop_iter(func):
      
      op = type(func.__name__,(WrapOpIter,), {'fn':staticmethod(func)})
      setattr(textops.ops,func.__name__,op)
      return op
docs: Decorator to declare custom *ITER* function as a new textops op
  
      An *ITER* function is a function that will receive the input text as a *LIST* of lines.
      One have to iterate over this list and generate a result (it can be a list, a generator,
      a dict, a string, an int ...)
  
      Examples:
  
          >>> @add_textop_iter
          ... def odd(lines, *args,**kwargs):
          ...     for i,line in enumerate(lines):
          ...         if not i % 2:
          ...             yield line
          >>> s = '''line 1
          ... line 2
          ... line 3'''
          >>> s >> odd()
          ['line 1', 'line 3']
          >>> s | odd().tolist()
          ['line 1', 'line 3']
  
          >>> @add_textop_iter
          ... def sumsize(lines, *args,**kwargs):
          ...     sum = 0
          ...     for line in lines:
          ...         sum += int(re.search(r'\d+',line).group(0))
          ...     return sum
          >>> '''1492 file1
          ... 1789 file2
          ... 2015 file3''' | sumsize()
          5296