interactive-mining/interactive-mining-3rdparty.../madis/src/functions/aggregate/text.py

119 lines
2.3 KiB
Python
Executable File

__docformat__ = 'reStructuredText en'
class concatgroup:
"""
.. function:: concatgroup(X)
Concatenates strings in a group/dataset X.
Example:
>>> table1('''
... word1 1
... word2 1
... word3 2
... word4 2
... ''')
>>> sql("select concatgroup(a) from table1 group by b")
concatgroup(a)
--------------
word1word2
word3word4
"""
registered=True #Value to define db operator
def __init__(self):
self.whole_string=[]
def step(self, *args):
self.whole_string.append(args[0])
def final(self):
return ''.join(self.whole_string)
class concatlines:
"""
.. function:: concatlines(X)
Concatenates strings in a group/dataset X.
Example:
>>> table1('''
... word1
... word2
... word3
... word4
... ''')
>>> sql("select concatlines(a) from table1")
concatlines(a)
-----------------------
word1
word2
word3
word4
"""
registered=True #Value to define db operator
def __init__(self):
self.whole_string=[]
def step(self, *args):
self.whole_string.append(args[0])
def final(self):
return '\n'.join(self.whole_string)
class concatterms:
"""
.. function:: concatterms(text1, text2,...)
Concatenates strings in a group/dataset X, while keeping them disjoint, i.e. using the single space delimiter.
Examples:
>>> table1('''
... word1 1
... word2 1
... word3 2
... word4 2
... ''')
>>> sql("select concatterms(a) from table1 group by b")
concatterms(a)
--------------
word1 word2
word3 word4
"""
registered=True #Value to define db operator
def __init__(self):
self.whole_string=[]
def step(self, *args):
if len(args[0])!=0:
self.whole_string.append(args[0])
def final(self):
return ' '.join(self.whole_string)
if not ('.' in __name__):
"""
This is needed to be able to test the function, put it at the end of every
new function you create
"""
import sys
import setpath
from functions import *
testfunction()
if __name__ == "__main__":
reload(sys)
sys.setdefaultencoding('utf-8')
import doctest
doctest.testmod()