paul@211 | 1 | = Roadmap = |
paul@211 | 2 | |
paul@211 | 3 | Some future objectives for the software. |
paul@211 | 4 | |
paul@211 | 5 | == HTML Parsing == |
paul@211 | 6 | |
paul@211 | 7 | Parsing of HTML fragments would be done to permit translation into the Moin |
paul@211 | 8 | document tree. This would then allow round-trip conversion: |
paul@211 | 9 | |
paul@211 | 10 | ########## A graph showing the process is given below... |
paul@211 | 11 | |
paul@211 | 12 | {{{#!graphviz |
paul@211 | 13 | //format=svg |
paul@211 | 14 | //transform=notugly |
paul@211 | 15 | digraph htmlparsing { |
paul@293 | 16 | node [shape=box,fontsize="13.0",fontname="sans-serif",tooltip="The MoinLight architecture"]; |
paul@211 | 17 | edge [tooltip="The MoinLight architecture"]; |
paul@211 | 18 | rankdir=LR; |
paul@211 | 19 | |
paul@211 | 20 | moin [label="Moin content",shape=folder,style=filled,fillcolor=cyan]; |
paul@211 | 21 | |
paul@211 | 22 | subgraph { |
paul@211 | 23 | rank=same; |
paul@211 | 24 | moinparser [label="Moin parser"]; |
paul@211 | 25 | moinserialiser [label="Moin serialiser"]; |
paul@211 | 26 | } |
paul@211 | 27 | |
paul@211 | 28 | subgraph { |
paul@211 | 29 | rank=same; |
paul@211 | 30 | tree1 [label="Document tree",shape=folder,style=filled,fillcolor=cyan]; |
paul@211 | 31 | tree2 [label="Document tree",shape=folder,style=filled,fillcolor=cyan]; |
paul@211 | 32 | } |
paul@211 | 33 | |
paul@211 | 34 | subgraph { |
paul@211 | 35 | rank=same; |
paul@211 | 36 | htmlserialiser [label="HTML serialiser"]; |
paul@211 | 37 | htmlparser [label="HTML parser"]; |
paul@211 | 38 | } |
paul@211 | 39 | |
paul@211 | 40 | html [label="HTML content",shape=folder,style=filled,fillcolor=cyan]; |
paul@211 | 41 | |
paul@211 | 42 | moin -> moinparser -> tree1 -> htmlserialiser -> html -> htmlparser -> tree2 -> moinserialiser -> moin; |
paul@211 | 43 | } |
paul@211 | 44 | }}} |
paul@211 | 45 | |
paul@211 | 46 | ######## |
paul@211 | 47 | |
paul@211 | 48 | Pages could be retained for storage in Moin format, presented in a Web browser |
paul@211 | 49 | in HTML, edited using HTML editing controls, and then converted back for |
paul@211 | 50 | storage. |
paul@211 | 51 | |
paul@211 | 52 | In order to maintain various details of the original document, additional |
paul@211 | 53 | annotations would be employed in the generated HTML. Such annotations would |
paul@211 | 54 | appear within `class` attribute values, encoding details of the original |
paul@211 | 55 | content such as indentation, padding and other aspects of that content which |
paul@211 | 56 | are superfluous or inappropriate to the core HTML representation of the |
paul@211 | 57 | document, but which can be interpreted in order to restore the form of the |
paul@211 | 58 | original document. |
paul@288 | 59 | |
paul@288 | 60 | == Configuration Files == |
paul@288 | 61 | |
paul@288 | 62 | Instead of configuring the conversion [[Metadata|metadata]] programmatically |
paul@288 | 63 | or using command line options with the [[moinconvert]] tool, it would be |
paul@288 | 64 | useful to be able to define settings in configuration files. |
paul@288 | 65 | |
paul@288 | 66 | == Externally Available Extensions == |
paul@288 | 67 | |
paul@288 | 68 | Currently, the extensions (macros, themes, parsers, and so on) available to |
paul@288 | 69 | MoinLight are defined within the `moinformat` package. However, it should be |
paul@288 | 70 | possible to define extra extensions that reside in other locations. |
paul@288 | 71 | |
paul@288 | 72 | == Themed Output for Extensions == |
paul@288 | 73 | |
paul@288 | 74 | Macros and other extensions should be able to provide specific theme resources |
paul@288 | 75 | that are referenced in page output and bundled in the deployed content. |
paul@288 | 76 | |
paul@288 | 77 | == Pragmas and Directives == |
paul@288 | 78 | |
paul@288 | 79 | In order to adjust the handling and display of content, these features of Moin |
paul@288 | 80 | should be supported, with the ability to define handlers. |
paul@288 | 81 | |
paul@288 | 82 | == Section Numbering == |
paul@288 | 83 | |
paul@288 | 84 | Effectively taking table of contents numbering, headings should be numbered if |
paul@288 | 85 | requested. |
paul@288 | 86 | |
paul@288 | 87 | == Variables and Wikidicts == |
paul@288 | 88 | |
paul@288 | 89 | These features of Moin should be supported since they permit convenient |
paul@288 | 90 | customisation of content. |
paul@288 | 91 | |
paul@288 | 92 | == Macros == |
paul@288 | 93 | |
paul@288 | 94 | === Include === |
paul@288 | 95 | |
paul@288 | 96 | This macro has proven useful in Moin to combine page content. To support it |
paul@288 | 97 | usefully, it must interact sensibly with tables of contents, perhaps requiring |
paul@288 | 98 | adjustments to the table of contents macro to avoid such tables appearing on |
paul@288 | 99 | included pages, also causing top-level tables to reference sections in the |
paul@288 | 100 | included pages. |
paul@288 | 101 | |
paul@288 | 102 | === Table of Contents === |
paul@288 | 103 | |
paul@288 | 104 | Building on the ability to be able to provide its own stylesheet resources, |
paul@288 | 105 | the macro should also support expandable entries, perhaps using form controls |
paul@288 | 106 | so that a concise, single-level table of contents can be shown and expanded as |
paul@288 | 107 | necessary. |