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