Mercurial > hg > commentator
comparison README.txt @ 0:1c95a3fa76c1
initial commit of commentator
| author | k0s <k0scist@gmail.com> |
|---|---|
| date | Sun, 24 Jan 2010 17:39:05 -0500 |
| parents | |
| children | 872f98a484d2 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:1c95a3fa76c1 |
|---|---|
| 1 commentator | |
| 2 =========== | |
| 3 | |
| 4 WSGI commenting middleware | |
| 5 | |
| 6 To use | |
| 7 ------ | |
| 8 | |
| 9 Make a factory wrapping your app in the commentator middleware. | |
| 10 Currently, commentator only pickles comments. To the constructor of | |
| 11 Commentator, pass a database (the path to the pickle) and a pattern. | |
| 12 The pattern is in the form of | |
| 13 | |
| 14 <URL pattern>#<xpath pattern> -> URL | |
| 15 | |
| 16 The URL pattern is a | |
| 17 `python regular expression <ttp://docs.python.org/library/re.html>`_ | |
| 18 to match against the request's PATH_INFO. | |
| 19 | |
| 20 The xpath pattern is where you want to place the comments on the | |
| 21 page. See http://www.w3schools.com/XPath/ for more about xpath | |
| 22 expressions. | |
| 23 | |
| 24 The URL is a | |
| 25 `python string template <http://docs.python.org/library/string.html>`_ | |
| 26 that is substituted for groups in the URL regular expression and | |
| 27 element attributes in the found nodes. The element attributes are | |
| 28 referenced by name (``${id}``, ``${class}``, etc) and the groups are | |
| 29 referenced by number (``${1}``, ...). | |
| 30 | |
| 31 | |
| 32 Example | |
| 33 ------- | |
| 34 | |
| 35 A reference implementation is illustrated in the commentator.ini | |
| 36 file. This uses the pattern: | |
| 37 | |
| 38 ``commentator.pattern = (.*)#.//div[@id='comment_on_this'] -> ${1}`` | |
| 39 | |
| 40 What this pattern says is | |
| 41 | |
| 42 * comment on every PATH_INFO ``(.*)`` | |
| 43 * append the rendered content template to ``div[@id='comment_on_this']`` | |
| 44 * reference the PATH_INFO as the canonical URL ``${1}`` | |
| 45 | |
| 46 To comment on every HTML page at the end of the body, you would use | |
| 47 | |
| 48 ``commentator.pattern = (.*)#.//body -> ${1}`` | |
| 49 | |
| 50 A more complex example is in the ``.ini`` file, commented out, for use with | |
| 51 `bitsyblog <http://k0s.org/hg/bitsyblog>`_ : | |
| 52 | |
| 53 ``commentator.pattern = /blog/.*#.//div[@class='blog-entry'] -> /blog/${id}`` | |
| 54 | |
| 55 This pattern says: | |
| 56 | |
| 57 * comment on all paths under blog | |
| 58 * put the comments at the end of each ``div[@class='blog-entry']`` | |
| 59 * get the URI from the ``div``'s id, not from the ``PATH_INFO`` | |
| 60 | |
| 61 | |
| 62 TODO | |
| 63 ---- | |
| 64 | |
| 65 This is very alpha. I'd be happy to work more on this if anyone wants | |
| 66 it. A few outstanding issues: | |
| 67 | |
| 68 * fix weird lxml issue where you have to put .// for elements | |
| 69 * allow commenting on multiple resources (multiple patterns per instance) | |
| 70 * locking pickle files | |
| 71 * fix couch....not sure what's wrong | |
| 72 * allow use of CSS classes, not just xpath | |
| 73 | |
| 74 -- | |
| 75 | |
| 76 http://k0s.org |
