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