summaryrefslogtreecommitdiffstats
path: root/source-builder/sb/asciidoc/examples/website/asciidocapi.txt
diff options
context:
space:
mode:
Diffstat (limited to 'source-builder/sb/asciidoc/examples/website/asciidocapi.txt')
-rw-r--r--source-builder/sb/asciidoc/examples/website/asciidocapi.txt189
1 files changed, 0 insertions, 189 deletions
diff --git a/source-builder/sb/asciidoc/examples/website/asciidocapi.txt b/source-builder/sb/asciidoc/examples/website/asciidocapi.txt
deleted file mode 100644
index bbf69e7..0000000
--- a/source-builder/sb/asciidoc/examples/website/asciidocapi.txt
+++ /dev/null
@@ -1,189 +0,0 @@
-AsciiDoc API
-============
-
-'asciidocapi' -- a Python API module for 'AsciiDoc'.
-
-
-Introduction
-------------
-The 'asciidocapi' module implements a Python API for AsciiDoc. It
-allows you to set `asciidoc(1)` program options, compile an AsciiDoc
-source file and then interrogate the results. The `asciidocapi.py`
-module file contains the `AsciiDocAPI` wrapper class for
-`asciidoc.py`.
-
-.Benefits
-- Stable API Shields the user from the undocumented and possibly
- volatile `asciidoc.py` internals.
-- Easier to use and more flexible than the alternative of running
- `asciidoc(1)` as a separate process.
-- Executes inside your application (better performance than running
- separate `asciidoc(1)` command processes).
-
-
-Using asciidocapi
------------------
-To use the API just drop the `asciidocapi.py` file into your
-application directory, import it and use the `AsciiDocAPI` class. The
-only requirement is that a compatible version of 'AsciiDoc' is already
-installed -- simple, no setuptools to run, no Eggs to install, no
-non-standard library dependencies.
-
-You can find `asciidocapi.py` in the AsciiDoc
-http://www.methods.co.nz/asciidoc/INSTALL.html#X1[distribution
-archives] (version 8.4.1 or better).
-
-Once you have `asciidocapi.py` Verify everything is working by running
-the module doctests:
-
- python asciidocapi.py
-
-If there are no messages then all is well.
-
-The following minimal example compiles `mydoc.txt` to `mydoc.html`:
-
-[source,python]
--------------------------------------------------------------------------------
-from asciidocapi import AsciiDocAPI
-asciidoc = AsciiDocAPI()
-asciidoc.execute('mydoc.txt')
--------------------------------------------------------------------------------
-
-The next interactive example uses file-like objects for input and output:
-
--------------------------------------------------------------------------------
-$ python
-Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
-[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
-Type "help", "copyright", "credits" or "license" for more information.
->>> from asciidocapi import AsciiDocAPI
->>> import StringIO
->>> infile = StringIO.StringIO('Hello *{author}*')
->>> outfile = StringIO.StringIO()
->>> asciidoc = AsciiDocAPI()
->>> asciidoc.options('--no-header-footer')
->>> asciidoc.attributes['author'] = 'Joe Bloggs'
->>> asciidoc.execute(infile, outfile, backend='html4')
->>> print outfile.getvalue()
-<p>Hello <strong>Joe Bloggs</strong></p>
-
->>>
--------------------------------------------------------------------------------
-
-
-Implementation Rationale
-------------------------
-.Leverage existing knowledge
-The API maps directly onto the `asciidoc(1)` command -- this is
-deliberate -- if you know the `asciidoc(1)` command learning the API
-will be trivial. A nice side effect of this goal is that API and
-command-line modes share the same code -- virtually no `asciidoc(1)`
-code is specific to API usage.
-
-.Simplicity
-Implemented with a single Python module file (`asciidocapi.py`)
-containing the 'AsciiDocAPI' API class. 'AsciiDocAPI' contains just
-one method plus a few attributes for processing options and result
-messages. No external setup tools and no non-standard library
-dependencies are used or required.
-
-.Loose coupling
-The dependency between `asciidocapi.py` and `asciidoc.py` is minimal
--- the current `asciidocapi.py` module uses only two attributes and
-one function from the `asciidoc.py` module.
-
-.Why isn't the API baked right into the asciidoc.py command script?
-1. You can't just drop `asciidoc.py` into your application because it
- requires all the related config files and filters -- complex and
- unnecessary since all this was already done when you installed
- AsciiDoc.
-2. This scheme separates the API from the AsciiDoc application -- the
- API implementation can be extended or replaced independently of
- AsciiDoc.
-
-
-API reference
--------------
-
-[[X2]]
-Class `AsciiDocAPI(object)`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-This is the 'AsciiDoc' API class.
-
-Instance attributes
-^^^^^^^^^^^^^^^^^^^
-`asciidoc`::
-The imported `asciidoc.py` module.
-
-`attributes`::
-A dictionary of AsciiDoc attribute values passed to AsciiDoc.
-
-- Setting an attribute value to `None` (`name: None`) will undefine
- (delete) the attribute (this in addition to the `name!` attribute
- name format that the `asciidoc(1)` command uses).
-- To simply define an attribute set the attribute value to a blank
- string (`name: ''`)
-
-`cmd`::
-The file path of the `asciidoc.py` script. Set by the `__init__`
-method.
-
-`messages`::
-A chronologically ordered list of message strings generated during
-AsciiDoc execution (last message at the end of the list).
-
-`options`::
-An instance of the <<X1,Options class>>. Contains a list of command
-options passed to AsciiDoc.
-
-Instance methods
-^^^^^^^^^^^^^^^^
-`__init__(self, asciidoc_py=None)`::
-Locate and import `asciidoc.py` module and verify API compatibility.
-Initialize instance attributes. A search for the `asciidoc` module is
-made in the following order:
-
-. Use the `ASCIIDOC_PY` environment variable if it is set.
-. Use the `asciidoc_py` argument if it is set.
-. Search the environment 'PATH' for `asciidoc.py`, `asciidoc.pyc` and
- `asciidoc` (in that order).
-. Finally repeat the previous search in the current working directory.
-
-`execute(self, infile, outfile=None, backend=None)`::
-Compile `infile` to `outfile` using `backend` format. `infile` and
-`outfile` can be file path strings or file-like objects. `backend` is
-name of 'AsciiDoc' backend (takes same values as `asciidoc(1)` command
-`--backend` option). If `outfile` or `backend` are `None` then their
-respective `asciidoc(1)` defaults are used.
-
-
-[[X1]]
-Class `Options(object)`
-~~~~~~~~~~~~~~~~~~~~~~~
-Stores `asciidoc(1)` command options. You can use any `asciidoc(1)`
-options with the exception of the `--doctest` and `--filter` options.
-
-Instance attributes
-^^^^^^^^^^^^^^^^^^^
-`values`::
-The list of `(name,value)` command option tuples.
-
-Instance methods
-^^^^^^^^^^^^^^^^
-`__call__(self, name, value=None)`::
-A shortcut for the `append` method. Example:
-
- opts = Options()
- opts('--verbose')
-
-`append(self, name, value=None)`::
-Append `(name,value)` to the options list. Example:
-
- opts = Options()
- opts.append('--conf-file', 'blog.conf')
-
-
-Class `AsciiDocError(Exception)`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Thrown by the <<X2,AsciiDocAPI class>> when an 'AsciiDoc' execution
-error occurs.