summaryrefslogtreecommitdiffstats
path: root/modules/validate.py
diff options
context:
space:
mode:
Diffstat (limited to 'modules/validate.py')
-rwxr-xr-xmodules/validate.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/modules/validate.py b/modules/validate.py
new file mode 100755
index 0000000..3e179e7
--- /dev/null
+++ b/modules/validate.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+"""
+validate.py - Phenny Validation Module
+Copyright 2008, Sean B. Palmer, inamidst.com
+Licensed under the Eiffel Forum License 2.
+
+http://inamidst.com/phenny/
+"""
+
+import web
+
+def val(phenny, input):
+ """Check a webpage using the W3C Markup Validator."""
+ uri = input.group(2)
+ if not uri.startswith('http://'):
+ uri = 'http://' + uri
+
+ path = '/check?uri=%s;output=xml' % web.urllib.quote(uri)
+ info = web.head('http://validator.w3.org' + path)
+
+ result = uri + ' is '
+
+ if isinstance(info, list):
+ return phenny.say('Got HTTP response %s' % info[1])
+
+ if info.has_key('X-W3C-Validator-Status'):
+ result += str(info['X-W3C-Validator-Status'])
+ if info['X-W3C-Validator-Status'] != 'Valid':
+ if info.has_key('X-W3C-Validator-Errors'):
+ n = int(info['X-W3C-Validator-Errors'].split(' ')[0])
+ if n != 1:
+ result += ' (%s errors)' % n
+ else: result += ' (%s error)' % n
+ else: result += 'Unvalidatable: no X-W3C-Validator-Status'
+
+ phenny.say(' ' + result)
+val.rule = (['val'], r'(?i)(\S+)')
+val.example = '.val http://www.w3.org/'
+
+if __name__ == '__main__':
+ print __doc__.strip()