paul@211 | 1 | = MoinLight = |
paul@211 | 2 | |
paul@288 | 3 | {{{#!table |
paul@288 | 4 | [[/Downloads|Downloads]] || [[#GettingStarted|Getting Started]] || |
paul@288 | 5 | [[#Architecture|Architecture]] || [[/Roadmap|Roadmap]] |
paul@288 | 6 | }}} |
paul@288 | 7 | |
paul@211 | 8 | MoinLight is a distribution of programs and libraries for working with content |
paul@211 | 9 | encoded in the [[https://moinmo.in/|MoinMoin]] wiki markup format. This markup |
paul@211 | 10 | format is generally concise and supports many kinds of HTML document features |
paul@211 | 11 | using intelligible plain text representations. |
paul@211 | 12 | |
paul@211 | 13 | ########## The graph below shows the architecture of the system... |
paul@211 | 14 | |
paul@211 | 15 | {{{#!graphviz |
paul@211 | 16 | #format svg |
paul@211 | 17 | #transform notugly |
paul@211 | 18 | digraph architecture { |
paul@293 | 19 | node [shape=box,fontsize="13.0",fontname="sans-serif"]; |
paul@211 | 20 | rankdir=LR; |
paul@211 | 21 | |
paul@211 | 22 | subgraph { |
paul@211 | 23 | rank=same; |
paul@211 | 24 | input [label="Input context",URL="Input"]; |
paul@211 | 25 | markup [label="Moin content",shape=folder,style=filled,fillcolor=cyan]; |
paul@211 | 26 | } |
paul@211 | 27 | |
paul@211 | 28 | parser [label="Parser",URL="Parsers"]; |
paul@211 | 29 | |
paul@211 | 30 | subgraph { |
paul@211 | 31 | rank=same; |
paul@211 | 32 | tree [label="Document tree",shape=folder,style=filled,fillcolor=cyan]; |
paul@288 | 33 | evaluation [label="Macro evaluation",URL="Macros",shape=ellipse]; |
paul@211 | 34 | } |
paul@211 | 35 | |
paul@211 | 36 | serialiser [label="Serialiser",URL="Serialisers"]; |
paul@211 | 37 | |
paul@211 | 38 | theme [label="Theme",URL="Themes"]; |
paul@211 | 39 | |
paul@211 | 40 | subgraph { |
paul@211 | 41 | rank=same; |
paul@211 | 42 | output [label="Output context",URL="Output"]; |
paul@211 | 43 | pages [label="Web content",shape=folder,style=filled,fillcolor=cyan]; |
paul@211 | 44 | } |
paul@211 | 45 | |
paul@211 | 46 | markup -> input -> parser -> tree -> evaluation -> tree -> serialiser -> |
paul@211 | 47 | theme -> output -> pages; |
paul@211 | 48 | } |
paul@211 | 49 | }}} |
paul@211 | 50 | |
paul@211 | 51 | ########## |
paul@211 | 52 | |
paul@211 | 53 | Although it is obviously possible to use the MoinMoin software (hereafter |
paul@285 | 54 | referred to as Moin) to work with such content, there are a few advantages in |
paul@211 | 55 | developing independent tools instead: |
paul@211 | 56 | |
paul@211 | 57 | * To eliminate any dependency on the Moin code, its bundled libraries, or on |
paul@211 | 58 | its external dependencies (of which there are many for Moin 2.0) |
paul@211 | 59 | |
paul@211 | 60 | * To focus on areas of functionality that are considered priorities, such as |
paul@211 | 61 | the publishing of content as static Web sites, which may not be adequately |
paul@211 | 62 | or optimally supported by Moin |
paul@211 | 63 | |
paul@211 | 64 | * To provide other implementations of parsers and serialisers for the markup |
paul@211 | 65 | format, thus establishing it as more genuinely interoperable markup |
paul@211 | 66 | standard |
paul@211 | 67 | |
paul@211 | 68 | * To be able to work with the content more easily and to develop tools for |
paul@211 | 69 | doing so |
paul@211 | 70 | |
paul@247 | 71 | The wiki format is described in the [[/MoinSyntax|syntax documentation]]. |
paul@247 | 72 | |
paul@288 | 73 | <<Anchor(GettingStarted)>> |
paul@211 | 74 | == Getting Started == |
paul@211 | 75 | |
paul@211 | 76 | To convert a collection of wiki pages in a directory (with `pages` containing |
paul@211 | 77 | the original pages and `htdocs` being the desired output directory), run the |
paul@211 | 78 | `moinconvert` program as follows: |
paul@211 | 79 | |
paul@211 | 80 | {{{ |
paul@211 | 81 | moinconvert --input-dir pages --output-dir htdocs --all |
paul@211 | 82 | }}} |
paul@211 | 83 | |
paul@211 | 84 | To convert a single file from such a collection (such as `FrontPage`), run the |
paul@211 | 85 | program as follows: |
paul@211 | 86 | |
paul@211 | 87 | {{{ |
paul@211 | 88 | moinconvert --input-dir pages FrontPage |
paul@211 | 89 | }}} |
paul@211 | 90 | |
paul@211 | 91 | This will produce the serialised page on standard output rather than writing |
paul@211 | 92 | it to a file. |
paul@211 | 93 | |
paul@211 | 94 | Other options are typically useful when running the program, such as `--theme` |
paul@211 | 95 | for styling and wrapping the output, `--macros` for expanding macros in |
paul@211 | 96 | documents, and `--format` for choosing alternative output formats. |
paul@211 | 97 | |
paul@247 | 98 | See [[/moinconvert]] for more information on the `moinconvert` program. |
paul@247 | 99 | |
paul@288 | 100 | <<Anchor(Architecture)>> |
paul@211 | 101 | == Abstractions and Architecture == |
paul@211 | 102 | |
paul@211 | 103 | MoinLight provides a number of abstractions for working with Moin wiki content: |
paul@211 | 104 | |
paul@247 | 105 | * [[/Input]] contexts permit the interpretation of existing content in |
paul@247 | 106 | certain ways so that a collection of text files can be treated like a wiki |
paul@247 | 107 | |
paul@247 | 108 | * [[/Output]] contexts permit the publishing of content in certain |
paul@247 | 109 | ways so that wiki content can be shared on the Web |
paul@247 | 110 | |
paul@247 | 111 | * [[/Macros]] define locations in documents where content is to be inserted |
paul@247 | 112 | or expanded |
paul@247 | 113 | |
paul@247 | 114 | * [[/Metadata]] is used to configure the processing of content by defining |
paul@247 | 115 | the different abstractions involved |
paul@247 | 116 | |
paul@211 | 117 | * [[/Parsers]] interpret various forms of markup-related content, producing a |
paul@211 | 118 | document tree representation that can be inspected and processed |
paul@211 | 119 | |
paul@211 | 120 | * [[/Serialisers]] convert the document tree representation into other |
paul@211 | 121 | content formats such as HTML or even back into Moin format |
paul@211 | 122 | |
paul@211 | 123 | * [[/Themes]] augment serialised content with additional details and |
paul@211 | 124 | resources |
paul@211 | 125 | |
paul@211 | 126 | A major objective with MoinLight is to be able to produce static files that |
paul@211 | 127 | can be served using a typical Web server without any need for scripts, |
paul@211 | 128 | applications or other kinds of dynamic content. Other objectives are described |
paul@211 | 129 | in the [[/Roadmap]] document. |