1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/sqlliterals/__init__.py Sat Jun 02 19:41:22 2007 +0200
1.3 @@ -0,0 +1,3 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +# vim: tabstop=4 expandtab shiftwidth=4
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/sqlliterals/pyparser.py Sat Jun 02 19:41:22 2007 +0200
2.3 @@ -0,0 +1,20 @@
2.4 +#!/usr/bin/env python
2.5 +
2.6 +from pyparsing import *
2.7 +
2.8 +class Grammar:
2.9 + def __setattr__(self, name, value):
2.10 + self.__dict__[name] = Group(value).setResultsName(name)
2.11 +
2.12 +g = Grammar()
2.13 +
2.14 +g.non_literal = OneOrMore(CharsNotIn("'"))
2.15 +g.value = ZeroOrMore(Or([Literal("''"), CharsNotIn("'")]))
2.16 +g.literal = Literal("'") + g.value + Literal("'")
2.17 +g.query = ZeroOrMore(Or([g.non_literal, g.literal]))
2.18 +g.query.leaveWhitespace()
2.19 +
2.20 +def parseString(s):
2.21 + return g.query.parseString(s)
2.22 +
2.23 +# vim: tabstop=4 expandtab shiftwidth=4
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/sqlliterals/regexp.py Sat Jun 02 19:41:22 2007 +0200
3.3 @@ -0,0 +1,21 @@
3.4 +#!/usr/bin/env python
3.5 +
3.6 +import re
3.7 +query = re.compile("(?P<non_literal>[^']+)|(?P<literal>'(?:[^']|(?:''))*')")
3.8 +
3.9 +def parseString(s):
3.10 + regions = []
3.11 + first = 1
3.12 + for match in query.finditer(s):
3.13 + non_literal, literal = match.groups()
3.14 + if first and literal:
3.15 + regions.append("")
3.16 + if non_literal:
3.17 + regions.append(non_literal)
3.18 + elif literal:
3.19 + regions.append(literal)
3.20 + first = 0
3.21 +
3.22 + return regions
3.23 +
3.24 +# vim: tabstop=4 expandtab shiftwidth=4