aboutsummaryrefslogtreecommitdiffstats
path: root/libpathod
diff options
context:
space:
mode:
Diffstat (limited to 'libpathod')
-rw-r--r--libpathod/language/base.py33
-rw-r--r--libpathod/language/http.py36
2 files changed, 34 insertions, 35 deletions
diff --git a/libpathod/language/base.py b/libpathod/language/base.py
index 5b9e99f6..e2cd9c9e 100644
--- a/libpathod/language/base.py
+++ b/libpathod/language/base.py
@@ -259,39 +259,6 @@ class KeyValue(_Component):
)
-class PathodSpec(Token):
- def __init__(self, value):
- self.value = value
- try:
- import http
- self.parsed = http.Response(
- http.Response.expr().parseString(
- value.val,
- parseAll=True
- )
- )
- except pp.ParseException, v:
- raise exceptions.ParseException(v.msg, v.line, v.col)
-
- @classmethod
- def expr(klass):
- e = pp.Literal("s").suppress()
- e = e + ValueLiteral.expr()
- return e.setParseAction(lambda x: klass(*x))
-
- def values(self, settings):
- return [
- self.value.get_generator(settings),
- ]
-
- def spec(self):
- return "s%s"%(self.value.spec())
-
- def freeze(self, settings):
- f = self.parsed.freeze(settings).spec()
- return PathodSpec(ValueLiteral(f.encode("string_escape")))
-
-
class CaselessLiteral(_Component):
"""
A caseless token that can take only one value.
diff --git a/libpathod/language/http.py b/libpathod/language/http.py
index f926a8cf..2be43fdf 100644
--- a/libpathod/language/http.py
+++ b/libpathod/language/http.py
@@ -88,6 +88,38 @@ class ShortcutUserAgent(_HeaderMixin, base.OptionsOrValue):
)
+class PathodResponse(base.Token):
+ def __init__(self, value):
+ self.value = value
+ try:
+ self.parsed = Response(
+ Response.expr().parseString(
+ value.val,
+ parseAll=True
+ )
+ )
+ except pp.ParseException, v:
+ raise exceptions.ParseException(v.msg, v.line, v.col)
+
+ @classmethod
+ def expr(klass):
+ e = pp.Literal("s").suppress()
+ e = e + base.ValueLiteral.expr()
+ return e.setParseAction(lambda x: klass(*x))
+
+ def values(self, settings):
+ return [
+ self.value.get_generator(settings),
+ ]
+
+ def spec(self):
+ return "s%s"%(self.value.spec())
+
+ def freeze(self, settings):
+ f = self.parsed.freeze(settings).spec()
+ return PathodResponse(base.ValueLiteral(f.encode("string_escape")))
+
+
def get_header(val, headers):
"""
Header keys may be Values, so we have to "generate" them as we try the
@@ -248,7 +280,7 @@ class Request(_HTTPMessage):
ShortcutContentType,
ShortcutUserAgent,
Raw,
- base.PathodSpec,
+ PathodResponse,
actions.PauseAt,
actions.DisconnectAt,
@@ -270,7 +302,7 @@ class Request(_HTTPMessage):
@property
def pathodspec(self):
- return self.tok(base.PathodSpec)
+ return self.tok(PathodResponse)
def preamble(self, settings):
v = self.method.values(settings)