]> granicus.if.org Git - multimarkdown/commitdiff
UPDATE: Update documentation
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Wed, 15 Mar 2017 18:58:45 +0000 (14:58 -0400)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Wed, 15 Mar 2017 18:58:45 +0000 (14:58 -0400)
DevelopmentNotes/DevelopmentNotes.fodt
DevelopmentNotes/DevelopmentNotes.html
DevelopmentNotes/DevelopmentNotes.pdf
QuickStart/QuickStart.fodt
QuickStart/QuickStart.html
QuickStart/QuickStart.pdf
QuickStart/QuickStart.txt

index f02814d367a261164d301e4c53813bfc951a7280..130065e33127b003bdcc5b2a8bf521731d6245b0 100644 (file)
@@ -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 <text:span text:style-name="MMD-Italic">tons</text:span> more reading, I
 ultimately decided to use a parser generator to handle the task of group lines
 into blocks. <text:span text:style-name="Source_20_Text">parser.y</text:span> has the source for this, and it is processed by the
-<text:a xlink:type="simple" xlink:href="http://www.hwaci.com/sw/lemon/">lemon</text:a> parser generator to create the actual
-code.</text:p>
+<text:a xlink:type="simple" xlink:href="http://www.hwaci.com/sw/lemon/">lemon</text:a> parser generator to create the actual code.</text:p>
 
 <text:p text:style-name="Standard">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.</text:p>
 
+<text:h text:outline-level="3"><text:bookmark text:name="dependencieslibraries"/>Dependencies/Libraries </text:h>
+
+<text:p text:style-name="Standard">MMD v6 has no external dependencies when compiling, aside from the standard
+libraries for C development.</text:p>
+
+<text:p text:style-name="Standard">MMD can be compiled without any other tools beside the build system (cmake).</text:p>
+
+<text:p text:style-name="Standard">If you want to edit the block parser, you need to modify the <text:span text:style-name="Source_20_Text">parser.y</text:span> file
+and process that using <text:a xlink:type="simple" xlink:href="http://www.hwaci.com/sw/lemon/">lemon</text:a> in order to update the <text:span text:style-name="Source_20_Text">parser.c</text:span> file. The
+lemon parser source is actually included in MMD and needs to be compiled to be
+used.</text:p>
+
+<text:p text:style-name="Standard">If you want to update the lexer or scanner utility functions, then you can
+modify <text:span text:style-name="Source_20_Text">lexer.re</text:span> or <text:span text:style-name="Source_20_Text">scanners.re</text:span>. These need to be processed using <text:a xlink:type="simple" xlink:href="http://re2c.org/">re2c</text:a>,
+which has to be installed separately.</text:p>
+
+<text:p text:style-name="Standard">MMD v6 makes use of several other projects to improve performance and ease of
+use:</text:p>
+
+<text:list text:style-name="L1">
+<text:list-item>
+<text:p text:style-name="Standard"><text:a xlink:type="simple" xlink:href="https://troydhanson.github.io/uthash/">uthash</text:a> &#8211; provides support for hashes to quickly locate specific &#8220;objects&#8221;
+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.</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="Standard"><text:a xlink:type="simple" xlink:href="https://github.com/richgel999/miniz">miniz</text:a> &#8211; provides zip archive support to enable creation of EPUB 3 files,
+which are zip files with a specific file structure inside them.</text:p></text:list-item>
+
+<text:list-item>
+<text:p text:style-name="Standard"><text:a xlink:type="simple" xlink:href="https://github.com/argtable/argtable3">argtable3</text:a> &#8211; provides more advanced command-line argument processing in a
+more cross-platform approach than that used by MMD v5.</text:p></text:list-item>
+
+</text:list>
+
 <text:h text:outline-level="3"><text:bookmark text:name="changelog"/>Changelog </text:h>
 
 <text:list text:style-name="L1">
index b7edd2300f33c784dea41af60127d29079829bb1..2fcee042d1e28fe8d13fd8208ef749781262eb38 100644 (file)
@@ -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 <em>tons</em> more reading, I
 ultimately decided to use a parser generator to handle the task of group lines
 into blocks. <code>parser.y</code> has the source for this, and it is processed by the
-<a href="http://www.hwaci.com/sw/lemon/">lemon</a> parser generator to create the actual
-code.</p>
+<a href="http://www.hwaci.com/sw/lemon/">lemon</a> parser generator to create the actual code.</p>
 
 <p>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 <abbr title="MultiMarkdown">MMD</abbr>. So there is really not much unit testing built into
 the code or used during the development.</p>
 
+<h3 id="dependencieslibraries">Dependencies/Libraries </h3>
+
+<p><abbr title="MultiMarkdown">MMD</abbr> v6 has no external dependencies when compiling, aside from the standard
+libraries for C development.</p>
+
+<p><abbr title="MultiMarkdown">MMD</abbr> can be compiled without any other tools beside the build system (cmake).</p>
+
+<p>If you want to edit the block parser, you need to modify the <code>parser.y</code> file
+and process that using <a href="http://www.hwaci.com/sw/lemon/">lemon</a> in order to update the <code>parser.c</code> file. The
+lemon parser source is actually included in <abbr title="MultiMarkdown">MMD</abbr> and needs to be compiled to be
+used.</p>
+
+<p>If you want to update the lexer or scanner utility functions, then you can
+modify <code>lexer.re</code> or <code>scanners.re</code>. These need to be processed using <a href="http://re2c.org/">re2c</a>,
+which has to be installed separately.</p>
+
+<p><abbr title="MultiMarkdown">MMD</abbr> v6 makes use of several other projects to improve performance and ease of
+use:</p>
+
+<ul>
+<li><p><a href="https://troydhanson.github.io/uthash/">uthash</a> &#8211; provides support for hashes to quickly locate specific &#8220;objects&#8221;
+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.</p></li>
+<li><p><a href="https://github.com/richgel999/miniz">miniz</a> &#8211; provides zip archive support to enable creation of EPUB 3 files,
+which are zip files with a specific file structure inside them.</p></li>
+<li><p><a href="https://github.com/argtable/argtable3">argtable3</a> &#8211; provides more advanced command-line argument processing in a
+more cross-platform approach than that used by <abbr title="MultiMarkdown">MMD</abbr> v5.</p></li>
+</ul>
+
 <h3 id="changelog">Changelog </h3>
 
 <ul>
index 6f092a30711b47205f755d7b8e4ae6483b9d2f4d..c9de88f5efff97a8eeb80263d78424b2ba031d54 100644 (file)
Binary files a/DevelopmentNotes/DevelopmentNotes.pdf and b/DevelopmentNotes/DevelopmentNotes.pdf differ
index ed5c9487bd027372696eafdbcf919c98747ef4fd..4e039675a785284ac7d7763546e4fa12086b7cca 100644 (file)
@@ -576,11 +576,6 @@ existing v6 parser but it might be simpler to use the approach from v5 and
 earlier, which was to have a separate parser tuned to only identify headers
 and &#8220;stuff between headers&#8221;.</text:p></text:list-item>
 
-<text:list-item>
-<text:p text:style-name="Standard">Improved EPUB support. Currently, EPUB support is provided by a separate
-<text:a xlink:type="simple" xlink:href="https://github.com/fletcher/MMD-ePub">tool</text:a>. At some point, I would like to
-better integrate this into MMD itself.</text:p></text:list-item>
-
 </text:list>
 </office:text>
 </office:body>
index 9dc596950752fb7f1003376e5d47e046f345513f..52137fbd9d54e8fe6f23242721362a281a52cd77 100644 (file)
@@ -286,14 +286,11 @@ OpenDocument formats.</p>
 <p>Some features I plan to implement at some point:</p>
 
 <ol>
-<li><p>OPML export support is not available in v6. I plan on adding improved
+<li>OPML export support is not available in v6. I plan on adding improved
 support for this at some point. I was hoping to be able to re-use the
 existing v6 parser but it might be simpler to use the approach from v5 and
 earlier, which was to have a separate parser tuned to only identify headers
-and &#8220;stuff between headers&#8221;.</p></li>
-<li><p>Improved EPUB support. Currently, EPUB support is provided by a separate
-<a href="https://github.com/fletcher/MMD-ePub">tool</a>. At some point, I would like to
-better integrate this into <abbr title="MultiMarkdown">MMD</abbr> itself.</p></li>
+and &#8220;stuff between headers&#8221;.</li>
 </ol>
 
 <div class="glossary">
index ad3bcd81b542df5f422775618886236f0dd47cb7..43d5aee87dada370b7579afd44bac53855ef8146 100644 (file)
Binary files a/QuickStart/QuickStart.pdf and b/QuickStart/QuickStart.pdf differ
index c3583aec10c1ec1a3978fd1abf1f89b04d71fff2..1959d9961df07b99f28192cb79e6a8e8c5504450 100644 (file)
@@ -281,22 +281,11 @@ existing v6 parser but it might be simpler to use the approach from v5 and
 earlier, which was to have a separate parser tuned to only identify headers
 and "stuff between headers".
 
-2. Improved EPUB support.  Currently, EPUB support is provided by a separate
-[tool](https://github.com/fletcher/MMD-ePub).  At some point, I would like to
-better integrate this into MMD itself.
-
-
 
 [>MMD]: MultiMarkdown
-
 [CriticMarkup]: http://criticmarkup.com/
-
 [?PEG]:        Parsing Expression Grammar <https://en.wikipedia.org/wiki/Parsing_expression_grammar>
-
 [?AST]: Abstract Syntax Tree <https://en.wikipedia.org/wiki/Abstract_syntax_tree>
-
 [EPUB 3]: https://en.wikipedia.org/wiki/EPUB
-
 [Sigil]: https://sigil-ebook.com/
-
 [Calibre]: https://calibre-ebook.com/