110 lines
2.7 KiB
Python
110 lines
2.7 KiB
Python
#
|
|
# Interface for all mapping objects to map values into the right
|
|
# position in the cube, according to cube definition
|
|
#
|
|
|
|
class mapping(object):
|
|
def query_init(self):
|
|
pass
|
|
def position_get(self):
|
|
return 0
|
|
|
|
class column_static(mapping):
|
|
def __init__(self, value=False, position=0):
|
|
self.value = value
|
|
def cube_set(self, cube, value, delta=0):
|
|
return cube[ delta]
|
|
def value_set(self, value=False):
|
|
value.pop(0)
|
|
return self.value
|
|
|
|
|
|
class column_static_dummy(mapping):
|
|
def __init__(self, value=False, position=0):
|
|
self.value = value
|
|
def cube_set(self, cube, value, delta=0):
|
|
return cube[ delta]
|
|
def value_set(self, value=False):
|
|
value.pop(0)
|
|
return self.value
|
|
|
|
class column_fixed(mapping):
|
|
def __init__(self, pos=0, position=0):
|
|
self.pos = pos
|
|
def cube_set(self, cube, value, delta=0):
|
|
return cube[ self.pos +delta]
|
|
def value_set(self, value):
|
|
return value.pop(0)
|
|
|
|
class column_mapping_value(mapping):
|
|
def __init__(self, value, position=0):
|
|
self.axis_value = {}
|
|
for v in range(len(value)):
|
|
self.axis_value[value[v][0]] = v
|
|
|
|
def cube_set(self, cube, value, delta=0):
|
|
pos = value.pop(0)
|
|
return cube[ self.axis_value[pos]+delta ]
|
|
def value_set(self, value):
|
|
return False
|
|
|
|
class column_mapping(mapping):
|
|
def __init__(self, value, position=0):
|
|
self.axis_value = {}
|
|
for v in range(len(value)):
|
|
self.axis_value[value[v][0]] = v
|
|
|
|
def cube_set(self, cube, value, delta=0):
|
|
pos = value.pop(0)
|
|
return cube[ self.axis_value[pos]+delta ]
|
|
|
|
def value_set(self, value):
|
|
return False
|
|
|
|
def position_get(self):
|
|
return 1
|
|
|
|
|
|
class column_mapping_axis(mapping):
|
|
def __init__(self, mapping, axis, position=0):
|
|
keys = {}
|
|
i = 0
|
|
for a in axis:
|
|
keys[tuple(list(a)[0][1:])] = i
|
|
i+=1
|
|
|
|
self.axis_value = {}
|
|
for m in mapping:
|
|
k = tuple(list(m)[:-1])
|
|
a = keys[k]
|
|
self.axis_value[tuple(m)[-1]] = a
|
|
|
|
def cube_set(self, cube, value, delta=0):
|
|
pos = value.pop(0)
|
|
return cube[ self.axis_value[pos]+delta ]
|
|
|
|
def value_set(self, value):
|
|
return False
|
|
|
|
def position_get(self):
|
|
return 1
|
|
|
|
|
|
|
|
class column_mapping_join(mapping):
|
|
def __init__(self, mappings, position=0):
|
|
self.mappings = mappings
|
|
|
|
def cube_set(self, cube, value, delta=0):
|
|
for m in self.mappings:
|
|
cube = m.cube_set(cube, value, delta)
|
|
return cube
|
|
|
|
def value_set(self, value):
|
|
for m in self.mappings:
|
|
value = m.value_set(value)
|
|
return value
|
|
|
|
|
|
# vim: ts=4 sts=4 sw=4 si et
|