----------------
- Add 'fillmeldhtmlform' method to nodes.
- Fix obscure parsing bug that arose when attempting to change the
URI used as a "meld id" (do not lowercase).
- Added three methods to element nodes:
write_htmlstring
write_xmlstring
write_xhtmlstring
These methods have the same respective argument lists as their
"write_foo" cousins, except they don't accept a "file" argument.
Instead of writing to a file, they return a string containing the
renderering of the element.
- You can now use the meld3.py module to interactively try out
different renderings. To do this, invoke meld3.py with a filename
and a dotted-python-path name to a mutator function that accepts a
single argument (the root element), e.g.:
python meld3.py sample.html meld3.sample_mutator
The rendering will be sent to stdout
- Remove unused parse method.
- Add __setslice__, __delslice__, remove methods that correctly update
parent pointers.
- Don't call into superclass to do append, insert, __setitem__, etc.
- Internal speedups:
- Avoid function call overhead in various places by inlining code.
- _write_html/_write_xml now accept a callable "write" argument
instead of a file argument (avoid file.write call overhead).
- HTML serializer only calls _escape_cdata/_escape_attrib if necessary
instead of calling it without regard to its need.
- Use string.encode(encoding) instead of calling an _encode function.
- Perform special-case rendering for English-centric encodings
during write_html.
- Ignore things that might be "QNames" during rendering.
- "getiterator", "content", "clone", and "findmeld" now
implemented in a C module. Experimental. Disable via changing
"import cmeld3 as helper" in meld3.py to something like "import
wontbehere".
- Fix text and attribute serialization to only quote ampersands that
aren't already part of entities.
- Do the minimal possible thing to escape text and attribute values during
rendering. For text, this is escaping ampersands that aren't parts of
entities and the less-than (<) character. For attribute values, this is
amps and less-than as well as the quote (") character. This was done
partly because I think the spec allows it but it's also what Kid does,
shrug.
- Change 'diffmeld()' to return a dictionary of dictionaries. The
dictionary returned by diffmeld has the keys 'reduced' and
'unreduced'. the values of both 'reduced' and 'unreduced' is
another dictionary. The leafmost dictionary has the keys 'added',
'removed', and 'moved. In the 'unreduced' dictionary, *all* meld
tags that have been added, removed, or moved are present (this was
the behavior of diffmeld previously). In the 'reduced' dictionary,
the added, removed, and moved values are reduced to the smallest
number of tags which share a common lineage.
- Add a meldprofile.py script.