diff options
author | Grzegorz Adam Hankiewicz <gradha@imap.cc> | 2013-11-30 21:03:41 +0100 |
---|---|---|
committer | Grzegorz Adam Hankiewicz <gradha@imap.cc> | 2013-11-30 21:03:41 +0100 |
commit | f91a34c9e6ab91b57627803631cf099cd11e32ab (patch) | |
tree | 4d8a825e527247e4f5420694ca680c1f68ec322c | |
parent | 0d193a446b8c1078bde6a150503a7b006ffba72e (diff) | |
download | Nim-f91a34c9e6ab91b57627803631cf099cd11e32ab.tar.gz |
Adds an example to htmlparser showing how to save changes.
-rw-r--r-- | lib/pure/htmlparser.nim | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/lib/pure/htmlparser.nim b/lib/pure/htmlparser.nim index d60d2e583..c39f5ff97 100644 --- a/lib/pure/htmlparser.nim +++ b/lib/pure/htmlparser.nim @@ -17,11 +17,37 @@ ## ## echo loadHtml("mydirty.html") ## -## ## Every tag in the resulting tree is in lower case. ## ## **Note:** The resulting ``PXmlNode`` already uses the ``clientData`` field, ## so it cannot be used by clients of this library. +## +## Example: Transforming hyperlinks +## ================================ +## +## This code demonstrates how you can iterate over all the tags in an HTML file +## and write back the modified version. In this case we look for hyperlinks +## ending with the extension ``.rst`` and convert them to ``.html``. +## +## .. code-block:: nimrod +## +## import htmlparser +## import xmltree # To use '$' for PXmlNode +## import strtabs # To access PXmlAttributes +## import os # To use splitFile +## import strutils # To use cmpIgnoreCase +## +## proc transformHyperlinks() = +## let html = loadHTML("input.html") +## +## for a in html.findAll("a"): +## let href = a.attrs["href"] +## if not href.isNil: +## let (dir, filename, ext) = splitFile(href) +## if cmpIgnoreCase(ext, ".rst") == 0: +## a.attrs["href"] = dir / filename & ".html" +## +## writeFile("output.html", $html) import strutils, streams, parsexml, xmltree, unicode, strtabs |