119 lines
2.3 KiB
Python
119 lines
2.3 KiB
Python
|
__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()
|