From d4344411f5e9d08ddbae9ba5e56881f319de0c2c Mon Sep 17 00:00:00 2001 From: "Fletcher T. Penney" Date: Wed, 15 Mar 2017 14:58:45 -0400 Subject: [PATCH] UPDATE: Update documentation --- DevelopmentNotes/DevelopmentNotes.fodt | 39 +++++++++++++++++++++++-- DevelopmentNotes/DevelopmentNotes.html | 33 +++++++++++++++++++-- DevelopmentNotes/DevelopmentNotes.pdf | Bin 105192 -> 107594 bytes QuickStart/QuickStart.fodt | 5 ---- QuickStart/QuickStart.html | 7 ++--- QuickStart/QuickStart.pdf | Bin 89792 -> 89103 bytes QuickStart/QuickStart.txt | 11 ------- 7 files changed, 70 insertions(+), 25 deletions(-) diff --git a/DevelopmentNotes/DevelopmentNotes.fodt b/DevelopmentNotes/DevelopmentNotes.fodt index f02814d..130065e 100644 --- a/DevelopmentNotes/DevelopmentNotes.fodt +++ b/DevelopmentNotes/DevelopmentNotes.fodt @@ -501,8 +501,7 @@ this quickly fell apart in the face of more complex structures such as recursive lists. After a lot of searching, and tons more reading, I ultimately decided to use a parser generator to handle the task of group lines into blocks. parser.y has the source for this, and it is processed by the -lemon parser generator to create the actual -code. +lemon parser generator to create the actual code. I chose to do this because hand-crafting the block parser would be complex. The end result would likely be difficult to read and understand, which would @@ -716,6 +715,42 @@ Otherwise, it was hard to see how to really create very good unit tests for the development of MMD. So there is really not much unit testing built into the code or used during the development. +Dependencies/Libraries + +MMD v6 has no external dependencies when compiling, aside from the standard +libraries for C development. + +MMD can be compiled without any other tools beside the build system (cmake). + +If you want to edit the block parser, you need to modify the parser.y file +and process that using lemon in order to update the parser.c file. The +lemon parser source is actually included in MMD and needs to be compiled to be +used. + +If you want to update the lexer or scanner utility functions, then you can +modify lexer.re or scanners.re. These need to be processed using re2c, +which has to be installed separately. + +MMD v6 makes use of several other projects to improve performance and ease of +use: + + + +uthash – provides support for hashes to quickly locate specific “objects” +based on text keys. These are used for matching footnotes, links, images and +the like when created with the reference syntax. Much faster than searching +through each one sequentially. + + +miniz – provides zip archive support to enable creation of EPUB 3 files, +which are zip files with a specific file structure inside them. + + +argtable3 – provides more advanced command-line argument processing in a +more cross-platform approach than that used by MMD v5. + + + Changelog diff --git a/DevelopmentNotes/DevelopmentNotes.html b/DevelopmentNotes/DevelopmentNotes.html index b7edd23..2fcee04 100644 --- a/DevelopmentNotes/DevelopmentNotes.html +++ b/DevelopmentNotes/DevelopmentNotes.html @@ -181,8 +181,7 @@ this quickly fell apart in the face of more complex structures such as recursive lists. After a lot of searching, and tons more reading, I ultimately decided to use a parser generator to handle the task of group lines into blocks. parser.y has the source for this, and it is processed by the -lemon parser generator to create the actual -code.

+lemon parser generator to create the actual code.

I chose to do this because hand-crafting the block parser would be complex. The end result would likely be difficult to read and understand, which would @@ -396,6 +395,36 @@ Otherwise, it was hard to see how to really create very good unit tests for the development of MMD. So there is really not much unit testing built into the code or used during the development.

+

Dependencies/Libraries

+ +

MMD v6 has no external dependencies when compiling, aside from the standard +libraries for C development.

+ +

MMD can be compiled without any other tools beside the build system (cmake).

+ +

If you want to edit the block parser, you need to modify the parser.y file +and process that using lemon in order to update the parser.c file. The +lemon parser source is actually included in MMD and needs to be compiled to be +used.

+ +

If you want to update the lexer or scanner utility functions, then you can +modify lexer.re or scanners.re. These need to be processed using re2c, +which has to be installed separately.

+ +

MMD v6 makes use of several other projects to improve performance and ease of +use:

+ + +

Changelog