cmlenz@500: Version 0.5 cmlenz@500: http://svn.edgewall.org/repos/genshi/tags/0.5.0/ cmlenz@500: (?, from branches/stable/0.5.x) cmlenz@500: cmlenz@500: * Added #include directive for text templates (ticket #115). cmlenz@500: cmlenz@500: cmlenz@500: Version 0.4.2 cmlenz@500: http://svn.edgewall.org/repos/genshi/tags/0.4.2/ cmlenz@500: (?, from branches/stable/0.4.x) cmlenz@500: cmlenz@500: * The `doctype` parameter of the markup serializers now also accepts the "name" cmlenz@500: of the doctype as string, in addition to the `(name, pubid, sysid)` tuple. cmlenz@500: * The I18n filter was not replacing the original attributes with the cmlenz@500: translation, but instead adding a second attribute with the same name. cmlenz@500: cmlenz@500: cmlenz@500: Version 0.4.1 cmlenz@500: http://svn.edgewall.org/repos/genshi/tags/0.4.1/ cmlenz@500: (May 21 2007, from branches/stable/0.4.x) cmlenz@500: cmlenz@500: * Fix incorrect reference to translation function in the I18N filter. cmlenz@500: * The `ET()` function now correctly handles attributes with a namespace. cmlenz@500: * XML declarations are now processed internally, as well as written to the cmlenz@500: output when XML serialization is used (ticket #111). cmlenz@500: * Added the functions `encode()` and `get_serializer()` to the `genshi.output` cmlenz@500: module, which provide a lower-level API to the functionality previously only cmlenz@500: available through `Stream.render()` and `Stream.serialize()`. cmlenz@500: * The `DocType` class now has a `get(name)` function that returns a `DOCTYPE` cmlenz@500: tuple for a given string. cmlenz@500: * Added frameset variants to the `DocType` constants for HTML 4.01 and XHTML cmlenz@500: 1.0. cmlenz@500: * Improved I18n extraction for pluralizable messages: for any translation cmlenz@500: function with multiple string arguments (such as ``ngettext``), a single cmlenz@500: item with a tuple of strings is yielded, instead an item for each string cmlenz@500: argument. cmlenz@500: * The `HTMLFormFiller` stream filter no longer alters form elements for which cmlenz@500: the data element contains no corresponding item. cmlenz@500: * Code in `` processing instructions no longer gets the special cmlenz@500: treatment as Python code in template expressions, i.e. item and attribute cmlenz@500: access are no longer interchangeable (which was broken in a number of ways cmlenz@500: anyway, see ticket #113). This change does not affect expressions. cmlenz@500: * Numerous fixes for the execution of Python code in `` processing cmlenz@500: instructions (tickets #113 and #114). cmlenz@500: * The `py:def` (and `#def`) directive now supports "star args" (i.e. `*args` cmlenz@500: and `**kwargs`) in the function declaration (ticket #116). cmlenz@500: cmlenz@500: cmlenz@276: Version 0.4 cmlenz@276: http://svn.edgewall.org/repos/genshi/tags/0.4.0/ cmlenz@500: (Apr 16 2007, from branches/stable/0.4.x) cmlenz@276: cmlenz@276: * New example applications for CherryPy and web.py. cmlenz@276: * The template loader now uses a LRU cache to limit the number of cached cmlenz@276: templates to a configurable maximum. Also, a race condition in the template cmlenz@276: loader was fixed by adding locking. cmlenz@276: * A new filter (genshi.filters.HTMLFormFiller) was added, which can populate cmlenz@276: HTML forms based on a dictionary of values. cmlenz@277: * The set of permitted tag and attribute names for the HTMLSanitizer can now cmlenz@277: be configured per instance. cmlenz@294: * The template engine plugin now supports a range of options for cmlenz@294: configuration, for example to set the default serialization method, the cmlenz@294: default output encoding, or the default DOCTYPE. cmlenz@302: * The ElementTree adaptation function `ET()` has moved into the `genshi.input` cmlenz@302: module. cmlenz@302: * Allow `when` directives to omit the test expression as long as the cmlenz@302: associated choose directive does have one. In that case, the when branch is cmlenz@302: followed if the expression of the choose directive evaluates to a truth cmlenz@302: value. cmlenz@317: * Unsuccessful attribute or item lookups now return `Undefined` objects for cmlenz@317: nicer error messages. cmlenz@336: * Split up the `genshi.template` module into multiple modules inside the new cmlenz@336: `genshi.template` package. cmlenz@344: * Results of expression evaluation are no longer implicitly called if they cmlenz@344: are callable. cmlenz@347: * Instances of the `genshi.core.Attrs` class are now immutable (they are cmlenz@347: subclasses of `tuple` instead of `list`). cmlenz@395: * `MarkupTemplate`s can now be instantiated from markup streams, in addition cmlenz@395: to strings and file-like objects (ticket #69). cmlenz@395: * Improve handling of incorrectly nested tags in the HTML parser. cmlenz@500: * Template includes can now be nested inside fallback content. cmlenz@500: * Expressions can now contain dict literals (ticket #37). cmlenz@500: * It is now possible to have one or more escaped dollar signs in front of a cmlenz@500: full expression (ticket #92). cmlenz@500: * The `Markup` class is now available by default in template expressions cmlenz@500: (ticket #67). cmlenz@500: * The handling of namespace declarations in XML/XHTML output has been improved. cmlenz@500: * The `Attrs` class no longer automatically wraps all attribute names in cmlenz@500: `QName` objects. This is now the responsibility of whoever is instantiating cmlenz@500: `Attrs` objects (for example, stream filters and generators). cmlenz@500: * Python code blocks are now supported using the `` processing cmlenz@500: instruction (ticket #84). cmlenz@500: * The way errors in template expressions are handled can now be configured. The cmlenz@500: option `LenientLookup` provides the same forgiving mode used in previous cmlenz@500: Genshi versions, while `StrictLookup` raises exceptions when undefined cmlenz@500: variables or members are accessed. The lenient mode is still the default in cmlenz@500: this version, but that may change in the future. (ticket #88) cmlenz@500: * If a variable is not necessarily defined at the top level of the template cmlenz@500: data, the new built-in functions `defined(key)` and `value_of(key, default)` cmlenz@500: can be used so that the template also works in strict lookup mode. These cmlenz@500: functions were previously only available when using Genshi via the template cmlenz@500: engine plugin (for compatibility with Kid). cmlenz@500: * `style` attributes are no longer allowed by the `HTMLSanitizer` by default. cmlenz@500: If they are explicitly added to the set of safe attributes, any unicode cmlenz@500: escapes in the attribute value are now handled properly. cmlenz@500: * Namespace declarations on conditional elements (for example using a `py:if` cmlenz@500: directive`) are no longer moved to the following element when the element cmlenz@500: originally carrying the declaration is removed from the stream (ticket #107). cmlenz@500: * Added basic built-in support for internationalizing templates by providing cmlenz@500: a new `Translator` class that can both extract localizable strings from a cmlenz@500: stream, and replace those strings with their localizations at render time. cmlenz@500: The code for this was largely taken from previous work done by Matt Good cmlenz@500: and David Fraser. cmlenz@395: cmlenz@395: cmlenz@395: Version 0.3.6 cmlenz@395: http://svn.edgewall.org/repos/genshi/tags/0.3.6/ cmlenz@395: (Dec 11 2006, from branches/stable/0.3.x) cmlenz@395: cmlenz@395: * The builder API now accepts streams as children of elements and fragments. cmlenz@395: cmlenz@395: cmlenz@395: Version 0.3.5 cmlenz@395: http://svn.edgewall.org/repos/genshi/tags/0.3.5/ cmlenz@395: (Nov 22 2006, from branches/stable/0.3.x) cmlenz@395: cmlenz@395: * Fix XPath traversal in match templates. Previously, `div/p` would be treated cmlenz@395: the same as `div//p`, i.e. it would match all descendants and not just the cmlenz@395: immediate children. cmlenz@395: * Preserve whitespace in HTML `
` elements also when they contain child cmlenz@395: elements. cmlenz@395: * Match templates no longer match their own output (ticket #77). cmlenz@395: * Blank lines before directives in text templates are now preserved as cmlenz@395: expected (ticket #62). cmlenz@347: cmlenz@317: cmlenz@317: Version 0.3.4 cmlenz@317: http://svn.edgewall.org/repos/genshi/tags/0.3.4/ cmlenz@323: (Nov 2 2006, from branches/stable/0.3.x) cmlenz@317: cmlenz@317: * The encoding of HTML and XML files, as well as markup and text templates, cmlenz@317: can now be specified. Also, the encoding specified in XML declarations is cmlenz@317: now respected unless an expiclit encoding is requested. cmlenz@317: * Expressions used as arguments for `py:with`, `py:def`, and `py:for` cmlenz@317: directives can now contain non-ASCII strings. cmlenz@285: cmlenz@285: cmlenz@288: Version 0.3.3 cmlenz@288: http://svn.edgewall.org/repos/genshi/tags/0.3.3/ cmlenz@302: (Oct 16 2006, from branches/stable/0.3.x) cmlenz@288: cmlenz@288: * Fixed bug introduced in 0.3.2 that broke the parsing of templates which cmlenz@288: declare the same namespace more than once in a nested fashion. cmlenz@294: * Fixed the parsing of HTML entity references inside attribute values, both cmlenz@294: in the `XMLParser` and the `HTMLParser` classes. cmlenz@302: * Some changes to usage of absolute vs. relative template paths to ensure that cmlenz@302: the filenamed-keyed cache employed by the TemplateLoader doesn't mix up cmlenz@302: templates with the same name, but from different subdirectories. cmlenz@288: cmlenz@288: cmlenz@285: Version 0.3.2 cmlenz@285: http://svn.edgewall.org/repos/genshi/tags/0.3.2/ cmlenz@285: (Oct 12 2006, from branches/stable/0.3.x) cmlenz@285: cmlenz@285: * Exceptions from templates now contain the absolute path to the template file cmlenz@285: when a search path is used. This enables tracebacks to display the line in cmlenz@285: question. cmlenz@285: * The template engine plugin now provides three different types: "genshi" and cmlenz@285: "genshi-markup" map to markup templates, while "genshi-text" maps to text cmlenz@285: templates. cmlenz@278: * Fixed the namespace context used by XPath patterns in py:match templates. cmlenz@278: The were erroneously using the namespace context of the elements being cmlenz@278: matched, where they should rather use the context in which they were cmlenz@278: defined. cmlenz@285: * The contents of `