diff --git a/DevelopmentNotes/DevelopmentNotes.txt b/DevelopmentNotes/DevelopmentNotes.txt index da5c2b2..9d9ee45 100644 --- a/DevelopmentNotes/DevelopmentNotes.txt +++ b/DevelopmentNotes/DevelopmentNotes.txt @@ -187,8 +187,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](http://www.hwaci.com/sw/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 @@ -419,16 +418,50 @@ 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. + [>MMD]: MultiMarkdown [>MD]: Markdown -[CriticMarkup]: http://criticmarkup.com/ - [?PEG]: Parsing Expression Grammar - [?AST]: Abstract Syntax Tree +[CriticMarkup]: http://criticmarkup.com/ +[lemon]: http://www.hwaci.com/sw/lemon/ +[re2c]: http://re2c.org/ +[uthash]: https://troydhanson.github.io/uthash/ +[miniz]: https://github.com/richgel999/miniz +[argtable3]: https://github.com/argtable/argtable3 + # Changelog # diff --git a/LICENSE.txt b/LICENSE.txt index c10f45e..82ccae9 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -13,7 +13,7 @@ text of the license. uthash library: Copyright (c) 2005-2016, Troy D. Hanson - Licensed under BSD Revised license + Licensed under Revised BSD license miniz library: Copyright 2013-2014 RAD Game Tools and Valve Software @@ -21,6 +21,13 @@ miniz library: Licensed under the MIT license +argtable3 library: + Copyright (C) 1998-2001,2003-2011,2013 Stewart Heitmann + + All rights reserved. + + Licensed under the Revised BSD License + ## The MIT License ## @@ -42,3 +49,32 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +## Revised BSD License ## + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of the nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md index b7fa26c..d837415 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ information. uthash library: Copyright (c) 2005-2016, Troy D. Hanson - Licensed under BSD Revised license + Licensed under Revised BSD license miniz library: Copyright 2013-2014 RAD Game Tools and Valve Software @@ -145,6 +145,13 @@ information. Licensed under the MIT license + argtable3 library: + Copyright (C) 1998-2001,2003-2011,2013 Stewart Heitmann + + All rights reserved. + + Licensed under the Revised BSD License + ## The MIT License ## @@ -167,3 +174,32 @@ information. TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ## Revised BSD License ## + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of the nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR + PROFITS OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +