def main(argv=None): ''' Main program. Used for testing. ''' import argparse import sys from scim2_filter_parser.lexer import SCIMLexer from scim2_filter_parser.parser import SCIMParser argv = argv or sys.argv[1:] parser = argparse.ArgumentParser('SCIM 2.0 Filter Parser Transpiler') parser.add_argument('filter', help="""Eg. 'userName eq "bjensen"'""") args = parser.parse_args(argv) token_stream = SCIMLexer().tokenize(args.filter) ast = SCIMParser().parse(token_stream) attr_map = { ('name', 'familyname', None): 'name.familyname', ('emails', None, None): 'emails', ('emails', 'type', None): 'emails.type', ('emails', 'value', None): 'emails.value', ('userName', None, None): 'username', ('title', None, None): 'title', ('userType', None, None): 'usertype', ('schemas', None, None): 'schemas', ('userName', None, 'urn:ietf:params:scim:schemas:core:2.0:User'): 'username', ('meta', 'lastModified', None): 'meta.lastmodified', ('ims', 'type', None): 'ims.type', ('ims', 'value', None): 'ims.value', } sql, params = Transpiler(attr_map).transpile(ast) print('SQL:', sql) print('PARAMS:', params)
def setUp(self): self.lexer = SCIMLexer() self.parser = SCIMParser() self.transpiler = transpile_sql.Transpiler(self.attr_map)
def setUp(self): self.lexer = SCIMLexer() self.parser = SCIMParser()
def setUp(self): self.lexer = SCIMLexer() self.parser = SCIMParser() self.transpiler = transpiler.SCIMToSQLTranspiler(self.attr_map)
def get_query(scim_query: str, attr_map: Mapping): token_stream = SCIMLexer().tokenize(scim_query) tree = SCIMParser().parse(token_stream) return Transpiler(attr_map).transpile(tree)