Metadata-Version: 1.1
Name: inxs
Version: 0.1b2.dev2
Summary: A framework for XML transformations without boilerplate.
Home-page: https://github.com/funkyfuture/inxs
Author: Frank Sachsenheim
Author-email: funkyfuture@riseup.net
License: ISC license
Description-Content-Type: UNKNOWN
Description: inxs – A Python framework for XML transformations without boilerplate.
        ======================================================================
        
        inxs is inexcessive.
        
        inxs is not XSLT.
        
        inxs is ISC-licensed.
        
        inxs is fully documented here: https://inxs.readthedocs.io/en/latest/
        
        .. image:: https://img.shields.io/pypi/v/inxs.svg
           :target: https://pypi.python.org/pypi/inxs
        .. image:: https://img.shields.io/pypi/l/inxs.svg
           :target: https://github.com/funkyfuture/inxs/blob/master/LICENSE
        .. image:: https://img.shields.io/pypi/pyversions/inxs.svg
        .. image:: https://img.shields.io/travis/funkyfuture/inxs/master.svg
           :target: https://travis-ci.org/funkyfuture/inxs
        .. image:: https://coveralls.io/repos/github/funkyfuture/inxs/badge.svg
           :target: https://coveralls.io/github/funkyfuture/inxs
        
        
        At a glimpse
        ------------
        
        Solving the `Wikipedia XSLT example #1`_:
        
        .. code-block:: python
        
            def extract_person(element):
                return element.attrib['username'], element.find('name').text
        
            def append_person(previous_result, result):
                lxml_utils.subelement(result, 'name', {'username': previous_result[0]},
                                      text=previous_result[1])
        
            transformation = Transformation(
                Rule('person', (extract_person, append_person)),
                result_object='context.result', context={'result': etree.Element('root')})
        
            # that's five (or not counting line-breaks: nine) lines less sloc
            # than the XSLT implementation
        
        Solving the `Wikipedia XSLT example #2`_:
        
        .. code-block:: python
        
            def generate_skeleton(context, e):
                context.persons_list = e.ul()
                context.html = e.html(
                    e.head(e.title('Testing XML Example')),
                    e.body(e.h1('Persons'), context.persons_list))
        
            def extract_person(element, persons):
                persons.append((element.find('name').text, element.find('family-name').text))
        
            def list_persons(previous_result, persons_list, e):
                persons_list.extend(e.li(f'{x[1]}, {x[0]}') for x in previous_result)
        
            transformation = Transformation(
                lib.init_elementmaker(namespace='http://www.w3.org/1999/xhtml'),
                generate_skeleton,
                Rule('person', extract_person),
                lib.sorter('persons', itemgetter(1)),
                list_persons,
                result_object='context.html', context={'persons': []})
        
            # that's eight (or not counting line-breaks: thirteen) lines less sloc
            # than the XSLT implementation
        
        `Here`_ you can find the source repository and issue tracker of inxs.
        
        .. _here: https://github.com/funkyfuture/inxs
        .. _Wikipedia XSLT example #1: https://en.wikipedia.org/wiki/XSLT#Example_1_.28transforming_XML_to_XML.29
        .. _Wikipedia XSLT example #2: https://en.wikipedia.org/wiki/XSLT#Example_2_.28transforming_XML_to_XHTML.29
        
        
        History
        =======
        
        0.1b1 (2017-06-25)
        ------------------
        
        * *new*: Allows the definition that any rule must match per transformation as
          ``common_rule_conditions``.
        * Minor improvements and fixes.
        
        
        0.1b0 (2017-06-19)
        ------------------
        
        * First beta release.
        
        
        0.1a0 (2017-05-02)
        ------------------
        
        * First release on PyPI.
        
Keywords: inxs xml processing transformation framework xslt not-xslt
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Text Processing :: Markup :: XML
