From 739693060d2373cccf0f091fa7100842b3cb2ab2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 1 Jun 2011 15:18:49 -0600 Subject: [PATCH] Autogen the template function docs --- src/calibre/manual/custom.py | 12 +- src/calibre/manual/template_ref.rst | 266 -------------------- src/calibre/manual/template_ref_generate.py | 5 +- 3 files changed, 13 insertions(+), 270 deletions(-) delete mode 100644 src/calibre/manual/template_ref.rst diff --git a/src/calibre/manual/custom.py b/src/calibre/manual/custom.py index f5db6dd0c2..4788889972 100644 --- a/src/calibre/manual/custom.py +++ b/src/calibre/manual/custom.py @@ -240,11 +240,21 @@ def cli_docs(app): raw += '\n'+'\n'.join(lines) update_cli_doc(os.path.join('cli', cmd+'.rst'), raw, info) +def generate_docs(app): + cli_docs(app) + template_docs(app) + +def template_docs(app): + from template_ref_generate import generate_template_language_help + info = app.builder.info + raw = generate_template_language_help() + update_cli_doc('template_ref.rst', raw, info) + def setup(app): app.add_config_value('epub_cover', None, False) app.add_builder(EPUBHelpBuilder) app.connect('doctree-read', substitute) - app.connect('builder-inited', cli_docs) + app.connect('builder-inited', generate_docs) app.connect('build-finished', finished) def finished(app, exception): diff --git a/src/calibre/manual/template_ref.rst b/src/calibre/manual/template_ref.rst deleted file mode 100644 index de6c1fdb2c..0000000000 --- a/src/calibre/manual/template_ref.rst +++ /dev/null @@ -1,266 +0,0 @@ -.. include:: global.rst - -.. _templaterefcalibre: - -Reference for all builtin template language functions -======================================================== - -Here, we document all the builtin functions available in the |app| template language. Every function is implemented as a class in python and you can click the source links to see the source code, in case the documentation is insufficient. The functions are arranged in logical groups by type. - -.. contents:: - :depth: 2 - :local: - -.. module:: calibre.utils.formatter_functions - -Get values from metadata --------------------------- - -field(name) -^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinField - -raw_field(name) -^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinRaw_field - -booksize() -^^^^^^^^^^^^ - -.. autoclass:: BuiltinBooksize - -format_date(val, format_string) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinFormatDate - -ondevice() -^^^^^^^^^^^ - -.. autoclass:: BuiltinOndevice - -Arithmetic -------------- - -add(x, y) -^^^^^^^^^^^^^ -.. autoclass:: BuiltinAdd - -subtract(x, y) -^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinSubtract - -multiply(x, y) -^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinMultiply - -divide(x, y) -^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinDivide - -Boolean ------------- - -and(value1, value2, ...) -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinAnd - -or(value1, value2, ...) -^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinOr - -not(value) -^^^^^^^^^^^^^ - -.. autoclass:: BuiltinNot - -If-then-else ------------------ - -contains(val, pattern, text if match, text if not match) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinContains - -test(val, text if not empty, text if empty) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinTest - -ifempty(val, text if empty) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinIfempty - -Iterating over values ------------------------- - -first_non_empty(value, value, ...) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinFirstNonEmpty - -lookup(val, pattern, field, pattern, field, ..., else_field) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinLookup - -switch(val, pattern, value, pattern, value, ..., else_value) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinSwitch - -List Lookup ---------------- - -in_list(val, separator, pattern, found_val, not_found_val) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinInList - -str_in_list(val, separator, string, found_val, not_found_val) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinStrInList - -list_item(val, index, separator) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinListitem - -select(val, key) -^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinSelect - - -List Manipulation -------------------- - -count(val, separator) -^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinCount - -merge_lists(list1, list2, separator) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinMergeLists - -sublist(val, start_index, end_index, separator) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinSublist - -subitems(val, start_index, end_index) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinSubitems - -Recursion -------------- - -eval(template) -^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinEval - -template(x) -^^^^^^^^^^^^ - -.. autoclass:: BuiltinTemplate - -Relational ------------ - -cmp(x, y, lt, eq, gt) -^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinCmp - -strcmp(x, y, lt, eq, gt) -^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinStrcmp - -String case changes ---------------------- - -lowercase(val) -^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinLowercase - -uppercase(val) -^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinUppercase - -titlecase(val) -^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinTitlecase - -capitalize(val) -^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinCapitalize - -String Manipulation ---------------------- - -re(val, pattern, replacement) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinRe - -shorten(val, left chars, middle text, right chars) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinShorten - -substr(str, start, end) -^^^^^^^^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinSubstr - - -Other --------- - -assign(id, val) -^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinAssign - -print(a, b, ...) -^^^^^^^^^^^^^^^^^ - -.. autoclass:: BuiltinPrint - - -API of the Metadata objects ----------------------------- - -The python implementation of the template functions is passed in a Metadata object. Knowing it's API is useful if you want to define your own template functions. - -.. module:: calibre.ebooks.metadata.book.base - -.. autoclass:: Metadata - :members: - :member-order: bysource - -.. data:: STANDARD_METADATA_FIELDS - - The set of standard metadata fields. - -.. literalinclude:: ../ebooks/metadata/book/__init__.py - :lines: 7- - diff --git a/src/calibre/manual/template_ref_generate.py b/src/calibre/manual/template_ref_generate.py index 8618eb9f07..742ab1fd54 100644 --- a/src/calibre/manual/template_ref_generate.py +++ b/src/calibre/manual/template_ref_generate.py @@ -86,8 +86,7 @@ def generate_template_language_help(): hats='^'*len(entry)) output += POSTAMBLE - print output - return output # and hope that something good happens to it + return output if __name__ == '__main__': - generate_template_language_help() \ No newline at end of file + generate_template_language_help()