[wwwsearch-commits] r23229 - wwwsearch/ClientForm/trunk
jjlee at codespeak.net
jjlee at codespeak.net
Sat Feb 11 16:25:53 CET 2006
Author: jjlee
Date: Sat Feb 11 16:25:49 2006
New Revision: 23229
Modified:
wwwsearch/ClientForm/trunk/ClientForm.py
Log:
Add debugging log calls for parser debugging
Modified: wwwsearch/ClientForm/trunk/ClientForm.py
==============================================================================
--- wwwsearch/ClientForm/trunk/ClientForm.py (original)
+++ wwwsearch/ClientForm/trunk/ClientForm.py Sat Feb 11 16:25:49 2006
@@ -76,6 +76,36 @@
if expr: return True
else: return False
+try:
+ import logging
+except ImportError:
+ def debug(msg, *args, **kwds):
+ pass
+else:
+ _logger = logging.getLogger("ClientForm")
+ OPTIMISATION_HACK = True
+
+ def debug(msg, *args, **kwds):
+ if OPTIMISATION_HACK:
+ return
+
+ try:
+ raise Exception()
+ except:
+ caller_name = (
+ sys.exc_info()[2].tb_frame.f_back.f_back.f_code.co_name)
+ extended_msg = '%%s %s' % msg
+ extended_args = (caller_name,)+args
+ debug = _logger.debug(extended_msg, *extended_args, **kwds)
+
+ def _show_debug_messages():
+ global OPTIMISATION_HACK
+ OPTIMISATION_HACK = False
+ _logger.setLevel(logging.DEBUG)
+ handler = logging.StreamHandler(sys.stdout)
+ handler.setLevel(logging.DEBUG)
+ _logger.addHandler(handler)
+
import sys, urllib, urllib2, types, mimetools, copy, urlparse, \
htmlentitydefs, re, random
from urlparse import urljoin
@@ -420,17 +450,20 @@
self._textarea = None
def do_base(self, attrs):
+ debug("%s", attrs)
for key, value in attrs:
if key == "href":
self.base = value
def end_body(self):
+ debug("")
if self._current_label is not None:
self.end_label()
if self._current_form is not None:
self.end_form()
def start_form(self, attrs):
+ debug("%s", attrs)
if self._current_form is not None:
raise ParseError("nested FORMs")
name = None
@@ -452,6 +485,7 @@
self._current_form = (name, action, method, enctype), d, controls
def end_form(self):
+ debug("")
if self._current_label is not None:
self.end_label()
if self._current_form is None:
@@ -460,6 +494,7 @@
self._current_form = None
def start_select(self, attrs):
+ debug("%s", attrs)
if self._current_form is None:
raise ParseError("start of SELECT before start of FORM")
if self._select is not None:
@@ -476,6 +511,7 @@
self._append_select_control({"__select": d})
def end_select(self):
+ debug("")
if self._current_form is None:
raise ParseError("end of SELECT before start of FORM")
if self._select is None:
@@ -487,6 +523,7 @@
self._select = None
def start_optgroup(self, attrs):
+ debug("%s", attrs)
if self._select is None:
raise ParseError("OPTGROUP outside of SELECT")
d = {}
@@ -496,11 +533,13 @@
self._optgroup = d
def end_optgroup(self):
+ debug("")
if self._optgroup is None:
raise ParseError("end of OPTGROUP before start")
self._optgroup = None
def _start_option(self, attrs):
+ debug("%s", attrs)
if self._select is None:
raise ParseError("OPTION outside of SELECT")
if self._option is not None:
@@ -517,6 +556,7 @@
self._option["disabled"] = None
def _end_option(self):
+ debug("")
if self._option is None:
raise ParseError("end of OPTION before start")
@@ -533,11 +573,13 @@
self._option = None
def _append_select_control(self, attrs):
+ debug("%s", attrs)
controls = self._current_form[2]
name = self._select.get("name")
controls.append(("select", name, attrs))
def start_textarea(self, attrs):
+ debug("%s", attrs)
if self._current_form is None:
raise ParseError("start of TEXTAREA before start of FORM")
if self._textarea is not None:
@@ -552,6 +594,7 @@
self._textarea = d
def end_textarea(self):
+ debug("")
if self._current_form is None:
raise ParseError("end of TEXTAREA before start of FORM")
if self._textarea is None:
@@ -562,6 +605,7 @@
self._textarea = None
def start_label(self, attrs):
+ debug("%s", attrs)
if self._current_label:
self.end_label()
d = {}
@@ -575,6 +619,7 @@
self._current_label = d
def end_label(self):
+ debug("")
label = self._current_label
if label is None:
# something is ugly in the HTML, but we're ignoring it
@@ -585,6 +630,7 @@
del label["__taken"]
def _add_label(self, d):
+ #debug("%s", d)
if self._current_label is not None:
if self._current_label["__taken"]:
self.end_label() # be fuzzy
@@ -593,6 +639,7 @@
d["__label"] = self._current_label
def handle_data(self, data):
+ debug("%s", data)
if self._option is not None:
# self._option is a dictionary of the OPTION element's HTML
# attributes, but it has two special keys, one of which is the
@@ -616,6 +663,7 @@
map[key] = map[key] + data
def do_button(self, attrs):
+ debug("%s", attrs)
if self._current_form is None:
raise ParseError("start of BUTTON before start of FORM")
d = {}
@@ -635,6 +683,7 @@
controls.append((type, name, d))
def do_input(self, attrs):
+ debug("%s", attrs)
if self._current_form is None:
raise ParseError("start of INPUT before start of FORM")
d = {}
@@ -649,6 +698,7 @@
controls.append((type, name, d))
def do_isindex(self, attrs):
+ debug("%s", attrs)
if self._current_form is None:
raise ParseError("start of ISINDEX before start of FORM")
d = {}
@@ -661,16 +711,20 @@
controls.append(("isindex", None, d))
def handle_entityref(self, name):
+ #debug("%s", name)
self.handle_data(unescape(
'&%s;' % name, self._entitydefs, self._encoding))
def handle_charref(self, name):
+ #debug("%s", name)
self.handle_data(unescape_charref(name, self._encoding))
def unescape_attr(self, name):
+ #debug("%s", name)
return unescape(name, self._entitydefs, self._encoding)
def unescape_attrs(self, attrs):
+ #debug("%s", attrs)
escaped_attrs = {}
for key, val in attrs.items():
try:
More information about the wwwsearch-commits
mailing list