History: Wiki Parser Revamp
Source of version: 73 (current)
Copy to clipboard
^ This was done as part of the move to ((doc:Tiki-Flavored Markdown)) ^
! Reasons to revamp (rewrite?) ((Parser|wiki parser))
* ((Alternate content by media))
* ((Override default params for plugins))
* Preview wiki page is not identical to saved wiki page
* {wish id=2504}
* Ease WYSIWYG support
* ((Character substitutions))
* --To have a good handling of plugins within plugins (right now, there can be unwanted results)-- This is pretty much solved as Wiki Plugins were revamped
* {wish id=5697}
* plugin edit
** {WISH(id="2472")}{WISH}
** profiles can't read a plugin edited by plugin editor
* not possible to do good wiki filter
* Easier to support alternate syntax
** {WISH(id="2102")}{WISH}
** [http://www.wikipublisher.org/wiki/WikiSym/WikipublisherProject|The PmWiki project is a markup agnostic wiki engine (almost), which lets a site administrator redefine or augment the markup translation rules.]
* The actual parser is hard to maintain and extend. A new and better organized parser would make easier to create new syntax and would make harder to introduce parser regression bugs when we need to change it (like happened from 2.0 to 3.0)
* Permit to detect, log and report when plugins are used.
** better for backlinks
** Report on how many times a plugin is used
** Permit to alert site admin that a plugin should be turned on
** {WISH(id="1535")}{WISH}
* fix/avoid various bugs
** {WISH(id="2492")}{WISH}
** {WISH(id="2496")}{WISH}
* {WISH(id="2919")}{WISH}
* --{WISH(id="1801")}{WISH}-- done
* {wish id=2714}
* {wish id=526}
* ((Signature))
** {wish id=1409}
** {wish id=4087}
* {wish id=3167}
* {wish id=3168}
* {wish id=2136}
* {wish id=2410}
* {wish id=3169}
* [http://serverfault.com/editing-help|Linebreak idea: End a line with two spaces to add a <br/> linebreak:]
! Ideas
* Work with [https://github.com/zaach/jison|Jison] has proven very stable and would work great at creating a JavaScript parser for GUI if ever needed.
* The same parser from Jison could be used to create a PHP version of the same parser.
! Idea on how we could test for wiki parser regressions
From one Tiki version to another, there can be some slight changes in behavior. So a syntax used in Tiki3 will have a slightly different output in Tiki9. Sometimes, this is intentional, sometimes it is not. Ideally, we would have a systematic way to test and find this, using real World data.
* Export HTML version of all wiki pages from *.tiki.org
* Upgrade to next version of Tiki
* Export HTML version of all wiki pages of the same site
* Compare the two and analyze the differences
The same idea could be used to compare the current parser with the ((Jison Parser))
! CommonMark
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/719118/widgets/project_factoids_stats.js"></script>{HTML}
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/719253/widgets/project_factoids_stats.js"></script>{HTML}
* http://blog.codinghorror.com/standard-flavored-markdown/
* http://commonmark.org/
! Markdown
* https://michelf.ca/projects/php-markdown/
* https://packagist.org/packages/erusev/parsedown
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/651314/widgets/project_factoids_stats.js"></script>{HTML}
! Markdown Extra
* https://michelf.ca/projects/php-markdown/extra/
* https://packagist.org/packages/erusev/parsedown-extra
* https://packagist.org/packages/michelf/php-markdown
! Asciidoctor
http://opensource.com/life/15/10/asciidoc
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/622975/widgets/project_factoids_stats.js"></script>{HTML}
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/656012/widgets/project_factoids_stats.js"></script>{HTML}
http://php.net/manual/en/intro.v8js.php
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/719730/widgets/project_factoids_stats.js"></script>{HTML}
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/719731/widgets/project_factoids_stats.js"></script>{HTML}
! reStructuredText
* https://packagist.org/packages/gregwar/rst
! Related links
* [https://github.com/oraoto/pib|PHP in Browser], powered by ((WebAssembly))
* [https://github.com/netgusto/upndown|upndown]
* https://packagist.org/packages/doctrine/lexer
* [http://hagenbu.ch/blog/536|improved URL Auto-linking in Horde]
* [https://opensym.org/ws2011/_media/proceedings%253Ap72-dohrn.pdf|''Design and Implementation of the Sweble Wikitext Parser: Unlocking the Structured Data of Wikipedia'']
* http://www.xwiki.org/xwiki/bin/view/XWiki/XWikiSyntax
* http://wiki.eclipse.org/Mylyn/Incubator/WikiText
* ((Online Publishing House - Output formats))
* blog [https://medium.com/@chacon/living-the-future-of-technical-writing-2f368bd0a272|post] about using Asciidoc(tor) for tehnical writing
* https://github.com/s9e/TextFormatter/blob/master/README.md
* http://sourceforge.net/blog/introducing-sourceforges-new-markdown-text-editor/
* https://github.com/ziadoz/awesome-php/blob/master/README.md#markup
* https://en.wikipedia.org/wiki/Comparison_of_document_markup_languages
* https://medium.com/content-uneditable/a-standard-for-rich-text-data-4b3a507af552
* https://github.com/igniterealtime/Pade/issues/79