.. Nannou documentation master file, created by sphinx-quickstart on Sun Feb 27 12:45:58 2011. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Шаблонизатор Nannou =================== .. toctree:: :maxdepth: 2 Nannou --- движок шаблонизации, основанный на концепции `сопоставления с образцом `_. Он позволяет производить шаблонизацию комплексных объектов произвольной степени вложенности, не заботясь об их внутренней иерархии. Зачем он нужен на примерах -------------------------- Допустим нам нужно генерировать HTML для небольшого блога, с простеньким каскадным меню, и блоками с блог-постами разного вида: картинками, текстами, цитатами. Шаблон (пусть он находится в файле ``blog.html``) в этом случае будет выглядеть примерно так: .. sourcecode:: html
  • "><%title%>||<%title%>
  • <%children%>
    <%meta%> <%text%>
    <%meta%>
    <%cite%>
    <%meta%>

    <%published%> by <%author%>

    Компилируя шаблон >>> from nannou import nannou >>> me = nannou(open('blog.html').read()) получаем функцию ``me``. Теперь мы можем подавать ей на вход объекты, получая на выходе сгенерированный html: >>> me({'cite':'All we need is love', 'meta':{'author':'John Lennon', 'published': '25 June 1967'}}) .. sourcecode:: html
    All we need is love

    25 June 1967 by John Lennon

    >>> me([{ ... 'picture': 'cat.jpeg', ... 'meta':{ ... 'author': 'Me', ... 'published': '2 Jan 2011' ... } ... }, { ... 'text': 'The quick bluetooth mouse jump over lazy box', ... 'meta':{ ... 'author': 'Not me', ... 'published': '1 Jan 2011' ... } ... }]) .. sourcecode:: html

    2 Jan 2011 by Me

    1 Jan 2011 by Not me

    The quick bluetooth mouse jump over lazy box
    Древовидные структуры генерируются также легко: >>> print me({ ... 'link': '', ... 'title': 'Энциклопедии', ... 'children': [ ... { ... 'link': 'http://www.britannica.com', ... 'title': 'Британика', ... 'children': [] ... }, ... { ... 'link': 'http://en.wikipedia.org', ... 'title': 'Английская википедия', ... 'children': [] ... } ... ] ... }) .. sourcecode:: html
  • Энциклопедии
  • Этот пример, хорошо или плохо, но иллюстрирует основное приемущество nannou: описывая шаблон простым списком паттернов, мы получаем возможность шаблонизировать объекты произвольной сложности. Единственным требованием является наличие паттерна для описания того или иного фрагмента. Использование ------------- . Тонкие моменты -------------- . Интерфейс --------- .. automodule:: nannou :members: Указатели ========= * :ref:`genindex` * :ref:`modindex` * :ref:`search`