Using IParsingActions¶
Minimal implementation¶
The following minimal implementations can be used as a starting point for creating your own implementation. Just add an implementation to the methods you are interested in. The listed methods are all the ones that will be called by our parser for the corresponding tpye.
Note
- You can remove any of the shown methods, not overriden once are noop (i.e. do nothing)
- You can add new methods, but be sure to not use any of the names
from
IParsingActions
. - If you get a “parsing failed!” error, you probably did something wrong with your implementation.
Multipoint¶
import GSTPy
class MultipointCallback(GSTPy.IParsingActions):
def set_name(self, name):
pass
def set_color(self, color):
pass
def set_transparency(self, transparency):
pass
def set_custom_property(self, name, value):
pass
def create_multipoint3(self):
pass
def add_point(self, point):
pass
def geometry_parsing_finished(self):
pass
def create_vertex_property(self, name, type):
pass
def create_cell_property(self, name, type):
pass
def add_property_value(self, value):
pass
def property_parsing_finished(self):
pass
Multilinestring¶
import GSTPy
class MultilinestringCallback(GSTPy.IParsingActions):
def set_name(self, name):
pass
def set_color(self, color):
pass
def set_transparency(self, transparency):
pass
def set_custom_property(self, name, value):
pass
def create_multiline3(self):
pass
def add_point(self, point):
pass
def new_simplex(self):
pass
def geometry_parsing_finished(self):
pass
def create_vertex_property(self, name, type):
pass
def create_cell_property(self, name, type):
pass
def add_property_value(self, value):
pass
def property_parsing_finished(self):
pass
Tin¶
import GSTPy
class TinCallback(GSTPy.IParsingActions):
def set_name(self, name):
pass
def set_color(self, color):
pass
def set_transparency(self, transparency):
pass
def set_custom_property(self, name, value):
pass
def create_triangle_net3(self):
pass
def add_point(self, point):
pass
def add_triangle(self, triangle):
pass
def geometry_parsing_finished(self):
pass
def create_vertex_property(self, name, type):
pass
def create_cell_property(self, name, type):
pass
def add_property_value(self, value):
pass
def property_parsing_finished(self):
pass
Tetrahderon Net¶
import GSTPy
class TetrahderonNetCallback(GSTPy.IParsingActions):
def set_name(self, name):
pass
def set_color(self, color):
pass
def set_transparency(self, transparency):
pass
def set_custom_property(self, name, value):
pass
def create_tetrahedon_net3(self):
pass
def add_point(self, point):
pass
def add_tetrahedron(self, tetrahedron):
pass
def geometry_parsing_finished(self):
pass
def create_vertex_property(self, name, type):
pass
def create_cell_property(self, name, type):
pass
def add_property_value(self, value):
pass
def property_parsing_finished(self):
pass
Example implementation¶
As a simple example lets implement a CSV file parser callback.
We want to list all points of a geometry with its vertex properties. We are only interested in the points, so lines, triangles and so on will be ignored.
import GSTPy
class CsvCallback(GSTPy.IParsingActions):
def __init__(self):
super(CsvCallback, self).__init__()
self.points = []
self.property_names = []
self.prop_values = []
def add_point(self, point):
self.points.append(point)
def create_vertex_property(self, name, type):
self.property_names.append(name)
# type doesn't interest us here
# the values are returned as strings anyways
def add_property_value(self, value):
self.prop_values.append(value)
def get_csv_string(self):
# make sure our property value count is as expected
num_properties = len(self.property_names)
num_points = len(self.points)
assert len(self.prop_values) == num_properties * num_points
# CSV header line
tokens = ["x", "y", "z"]
tokens.extend(self.property_names)
csv = ",".join(tokens) + "\n"
for i in xrange(num_points):
# add the current point
point = self.points[i]
tokens = [str(point.x), str(point.y), str(point.z)]
# add the property values for the current point
prop_offset = i * num_properties
tokens.extend(
self.prop_values[prop_offset:prop_offset + num_properties])
csv += ",".join(tokens) + "\n"
return csv