diff options
author | ps-george <george.punter15@imperial.ac.uk> | 2018-03-05 16:46:45 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-05 16:46:45 +0000 |
commit | a68008fc531068b8d713808a0a365e6647ba061c (patch) | |
tree | fa490c01de163ce51902a31c626ea2aaffb5dd9d /README.md | |
parent | bf54da9758a0a6a032ce79a51d2000d4448bf36e (diff) | |
download | FMark-a68008fc531068b8d713808a0a365e6647ba061c.tar.gz FMark-a68008fc531068b8d713808a0a365e6647ba061c.zip |
Update README.md
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 131 |
1 files changed, 35 insertions, 96 deletions
@@ -5,112 +5,51 @@ FSharp markdown. [![Build Status](https://travis-ci.org/ymherklotz/FMark.svg?branch=master)](https://travis-ci.org/ymherklotz/FMark) -## Features +## Modules -- Generating html -- Lexer for markdown -- Parser for markdown +``` +Overall Flowchart: + + ┌─────────────────────┐ ┌───────────────┐ +Source ───> │ Lex and Preprocessor│ ───> Token list ───> │ TOCite Parse │ ──> Token list with identifiers ┐ + └─────────────────────┘ │ └───────────────┘ │ + │ │ │ + │ └──────────────────────────────> Header+Footer list ────>────┤ + │ │ + │ ┌──────────────┐ │ + └────────> │ Markalc Parse│────────── Table ────────────>──────────────│ + └──────────────┘ │ + │ + ┌─────────┐ ┌─────────────┐ │ + Final Document <──── │ HTMLGen │ <──── ParsedObj list <──── │ Main Parser │ <────────────────┘ + └─────────┘ └─────────────┘ +``` -### MarkDown +(Lexer and Preprocessor)[FMark/Lexer/README.md] +(TOCite: Table of Contents and Citations)[FMark/TOCite/README.md] +(Markalc: Spreadsheet functionality)[FMark/Markalc/README.md] +(Main Parser)[FMark/Parser/README.md] -- Headers -- Paragraphs -- Lists -- Links -- BlockQuoting -- Picture embedding -- Tables -- Code box -- Text attributes -- Frontmatter / Metadata +## Specification -### Extra +A reference specification for the simple markdown that we are going to follow can be found +at [CommonMark](http://spec.commonmark.org/0.27/). + +A reference implementation of the simple markdown can be found [here](http://spec.commonmark.org/dingus/). + +## Markdown extensions (not included in standard Markdown) - Math equation rendering (Mathjax) - Citation - Table of contents - Spreadsheet functionality +- Macros -### Desirable Result -- Extensible Code - - Add names to features, so users can render them differently - such as editing the type of citation used and how to output them. -- User defined delimiters / patterns -> Preprocessor - -### Maybe's +### Potential extensions -- References +- References () - Realtime rendering -- Diagrams (Graphviz) -> Proof that it is extensible -- autoformatting - -## Splitting - -Global Types - -- Person1 - Lexer `(lex : string -> Token list)`, PreProcessor `(preProcess : string -> string)` -- Person2 - Formatting / print HTML: Header, Paragraph, Lists, Table -> -Simple parser `(printHtml : ParsedObj list -> string)`, `(printToFile : string -> ())` -- Person3 - Tables: Spreadsheet, DSL `(updateTable : Table -> Table)` -- Person4 - Citations (extensible), Table of contents -> Simple Parser `(parse : Token list -> ParseObj list)` - -## Overview - -### Pre Processor - -Goes through the source of the markdown file and processes #define like directives. - -```fsharp -type Macro = { Name : string; Body : string } - -val preProcess = string -> string - -val readMacros = string -> Macro list - -val replaceMacro = string -> Macro list -> string -``` - -### Lexer - -Lexes the source into tokens. +- Diagrams (Graphviz) +- Autoformatting +- Syntax/Error highlighting -```fsharp -type Token = Word of string | TripleTick | Pipe ... - -val lex = string -> Token list -``` - -### Parser - -Parses the Token list - -```fsharp -type InlineObj = Word | FormattedWord -type Line = InlineObj list -type PInside = Line -type ParsedObj = Paragraph of PInside list | CodeBlock | MDList... - -type Table = Line list list - -val parse = Token list -> ParseObj list - -// outputs table with updated cells, which is determined by the DSL. -val updateTable = Table -> Table -``` - -### AST - -Outputs html - -```fsharp -val printHtml = ParsedObj list -> string - -val printToFile = string -> () -``` - -## Specification - -A reference specification for the simple markdown that we are going to follow can be found -at [CommonMark](http://spec.commonmark.org/0.27/). - -A reference implementation of the simple markdown can be found [here](http://spec.commonmark.org/dingus/). |