Hi Juan, - would it be possible to set markdown as the only markup? so you don't have to wrap with %%(%)markdown (I'm thinking on a do-nothing-parser-and-renderer, so it all gets done in the browser)
>> I've been thinking about that also. >> One option could be to define a new UserPreference or jspwiki-property to add specific class or behaviour (such as "markdown" or "prettify") to the top of the wiki-page so that it become default to all pages. >> (This is similar to the [{SET page-styles="..."}] variable, but you still need to add this to each page.) >> But then you do not have any way to turn it of on a per page basis. ... >> Anyway, the wrapper %%%markdown ... /% is very limited, and gives you the option to still use JSPWiki markup (like plugins, %%styles, ...) mixed with the markdown. - plugins, variables, acls et all would be still rendered? (the do-nothing-parser-and-renderer would better be a do-almost-nothing-parser-and-renderer..) >> Yep, as long as you keep them outside the %%markdown ... /% wrapper. >> ACL typically would appear at the start of a page, just before the markdown. br, dirk On Sun, Nov 19, 2017 at 11:12 PM, Juan Pablo Santos Rodríguez < juanpablo.san...@gmail.com> wrote: > Hi Dirk, > > I got the same reaction when began to work on the markdown extension, I was > expecting it would > take a lot less code. I'll take a look to the markdown behaviour this week > to see how it looks like. > Couple of questions in the meantime O:-) > - would it be possible to set markdown as the only markup? so you don't > have to wrap with > %%(%)markdown (I'm thinking on a do-nothing-parser-and-renderer, so it all > gets done in the browser) > - plugins, variables, acls et all would be still rendered? (the > do-nothing-parser-and-renderer would > better be a do-almost-nothing-parser-and-renderer..) > > Regarding the jspwiki-markdown, I've pushed a small fix, so it uses ASF's > snapshot repo, in order > to download latest JSPWiki snaphot, it needs at least 2.10.3-git-42 to be > able to compile. Doing an > mvn clean install on latest master should also make the compilation > problems disappear. > > Finally, about " add the jspwiki-markdown as a dependency to jspwiki-war ", > that would mean > something like > https://github.com/juanpablo-santos/jspwiki-markdown/blob/ > master/jspwiki-markdown-war/pom.xml#L36-L49 > But for that you have to have access to latest snapshot, either by > compiling latest master, > or by pulling latest commit and trying again O:-) Either way, thanks for > looking into it! > > > br, > juan pablo > > > > On Sun, Nov 19, 2017 at 11:15 AM, Dirk Frederickx < > dirk.frederi...@gmail.com > > wrote: > > > Hi Juan, > > > > Wow ! It seems there are much more aspects to it then simple > > parsing/rendering :-) > > > > Concerning the TOC plugin, the current generated HTML always looked > funny > > to me. (i.e. a flat list of <li> items, versus a regular nested UL/LI > > tree) > > We'd probably should improve the current TOC plugin to render a regular > > UL/LI tree. > > The rest is indeed pure css formatting. > > > > ==== > > > > > > I tried to quickly build a %%markdown behaviour based on an open-source > > javascript MARKDOWN rendering engine (marked.js), which fully runs in > the > > browser. > > ( see https://jspwiki-wiki.apache.org/Wiki.jsp?page=Markdown%20Behavior > ) > > > > Usage: > > %%markdown > > {{{ > > ##here comes your markdown!## > > }}} > > /% > > > > Note: see https://issues.apache.org/jira/browse/JSPWIKI-1040 to > simplify > > this to > > %%%markdown > > ##here comes your markdown!## > > /% > > > > > > This approach allows for mixing JSPWiki markup and MARKDOWN on the same > > page, while keeping the MARKDOWN syntax fully conform to the > specification. > > > > So there is no need to extend the MARKDOWN syntax with additional > JSPWiki > > specific markup, like [{plugins}] or %%css-style. > > > > It does support GFM, but apparently only partially. ( more testing > > required -- this obviously depends on the chosen JS library ) > > I added support for prettified code blocks, and section #hash-links. > > The plain editor (with preview) works OK. > > > > Current limitations: > > - Links require full URL format : support for simple wiki-pages names > > would be cool > > - Table Of Contents support : re-rendering of a TOC should be done on the > > browser (could be useful for JSPWiki anyway, eg looking at the lack of > > TOC support for InsertPages etc...) > > - Plain-Editor: Auto-suggestion and TAB-completion could be extended > with > > MARKDOWN specific configuration. > > - ... > > > > > > ---- > > > > > > BTW: > > I tried to install the jspwiki-markdown from github , but got errors with > > the mvn clean install. > > Mainly due to missing symbols... > > => " add the jspwiki-markdown as a dependency to jspwiki-war " : I need > > your help here... > > > > > > Best regards, > > > > dirk > > > > > > > > > > > > On Sun, Nov 12, 2017 at 9:41 PM, Juan Pablo Santos Rodríguez < > > juanpablo.san...@gmail.com> wrote: > > > > > Hi Dirk, > > > > > > lot of stuff to cover (meaning: long mail following), will try to > address > > > all the points: > > > > > > Initial design > > > ------------------ > > > > > > yes, the solution, as it is made consists on a MarkdownParser / > > > MarkdownRendered, > > > which acts as an alternative to current Parser/Renderer. There's no > > support > > > for mixed > > > markup, but I suppose that could be added too, via another > > Parser/Renderer, > > > which > > > could act as a Facade, selecting an underlying markup processing > > depending > > > on user > > > preferences (or whatever). But that raises more questions, though: once > > the > > > page is > > > stored on a given markup, what happens when a user with a different > > markup > > > stored in > > > his/her preferences? The type of markup should be also stored as a > > WikiPage > > > attribute... > > > > > > This was done as POC for evaluating using JSPWiki as a Markdown > > > content-publising > > > tool. For that flexmark is used, which does 99% of the markup parsing, > so > > > moving this > > > to the client side would imply a totally different take on this. I'm > > still > > > extracting markdown > > > support from other custom code, so I expect that by Tuesday/Wednesday > > I'll > > > have it > > > uploaded to a github repo. > > > > > > As it is now, once you commit to a markup style, you're set with that. > At > > > least as a > > > starting point, it's possible to add mixed markup support later on. > > > > > > The Parser/Renderer is based on Flexmark + a custom JSPWiki extension. > > > Currently > > > it supports: > > > * Normal Markdown > > > * Wiki links (internal, external, interwiki, edit, etc.) > > > * Variables > > > * Almost all plugins (more on this below) > > > * Inline images > > > * Footnotes > > > * ACLs > > > * Metadata > > > * WYSIWYG edition > > > > > > The generated HTML markup specific to JSPWiki is almost, if not equal, > to > > > the current > > > JSPWiki markup Parser/Renderer. > > > > > > The editors > > > ---------------- > > > > > > I've been skimming through the editors. So far, it seems to me that the > > js > > > files operate > > > on generated html (no jspwiki markup handling), so that shouldn't be a > > > problem, and the > > > JSPs doesn't seem to perform any transformation. > > > > > > As this was done as a POC, I've been focusing mostly on the > > > parsing/rendering that on > > > anything else, so it's pretty possible that I've missed something on > the > > > editors side, but > > > without digging on them too much, they seemed to play along well. > > > > > > Oh, and of course, adaptations to the plain editor *need* to be done. > I'm > > > thinking that the > > > different parsers should make available their configuration up to the > > > editors, so the plain > > > editor is able to generate the appropiate markup for each parser. > > > > > > Migration > > > ------------- > > > > > > there's nothing yet, as the POC I was working on assumed no previous > > > content, so I haven't > > > thought a lot about this... As always, something can/could/should be > > done: > > > there is a > > > flexmark extension (haven't investigated that it, though) which > performs > > an > > > html to markdown > > > conversion. Given that there are unit tests which transform current > > > markdown to html, the > > > process seems feasible, at least for simple pages. This process would > not > > > be straightforward > > > JSPWikiMarkup -> HTML -> Markdown, though, some intermediate > "polishing" > > > would be > > > likely to happen (I'm thinking on %%css styles, or identifying links > > which > > > are wiki links, > > > instead of full links). > > > > > > This process could also be made available as a maven plugin... > > > > > > As for the other way round (Markdown -> JSPWikiMarkup): haven't even > > > thought of it yet. > > > In any case, is migrating from one markup to another something likely > to > > > happen? Once > > > you're using one markup and have a bunch of pages, what would trigger > the > > > need of migrating > > > to another markup? Maybe if you're on JSPWikiMarkup you are thinking on > > > moving to > > > Markdown b/c that way you can also use the pages as Github pages, or > > > something like > > > that (although some markup would be lost). As said before, haven't > > thought > > > on this, so any > > > opinion is more than welcome... > > > > > > Yet to be done > > > --------------------- > > > > > > * Plain editor toolbar support > > > > > > * Initial set of WikiPages for markdown > > > > > > * %%css constructs. A new extension for this should be made, there is > no > > > support for this. > > > > > > * markup migration tool? > > > > > > * plugins implementing HeadingListener (that is, TableOfContents) are > not > > > supported: TableOfContents > > > plugin implements an ad-hoc interface, HeadingListener, which is fired > by > > > JSPWikiMarkupParser every > > > time it finds a header (more precisely, for every heading, > > > JSPWikiMarkupParser generates a "#" link > > > with the section reference and then registers a HeadingListener). > > > > > > When this plugin is executed then, it knows about the different > sections, > > > so it can generate the TOC. > > > The way flexmarks parses and renders markdown, doesn't allow to > generate > > > the TOC this way. Initially, > > > the Markdown Parser/Renderer generated those #-links, but as soon I > > > realized TableOfContents wasn't > > > usable under markdown, I removed the generation of #-links and instead > of > > > executing the plugin, > > > switched it to flexmark's own TOC extension, surrounded with some divs. > > So > > > as for now, whereas > > > TableOfContents generates something like: > > > > > > <div class="toc"> > > > <div class="collapsebox"> > > > <h4 id="section-TOC">title</h4> > > > <ul>/<ol> <!-- either ul or ol --> > > > <li class="toclevel-1"> > > > <li class="toclevel-2"> > > > <li class="toclevel-3"> > > > </div> > > > </div> > > > > > > the markdown parser/render currently generates something like: > > > <div class="toc"> > > > <div class="collapsebox"> > > > <h4 id="section-TOC">title</h4> > > > <!-- Generated by Flexmark's TOC extension --> > > > <ul>/<ol> <!-- either ul or ol --> > > > <li> <!--level 1 --> > > > <ul>/<ol> <!-- either ul or ol --> > > > <li> <!--level 2 --> > > > <ul>/<ol> <!-- either ul or ol --> > > > <li></li> <!-- level 3 --> > > > </ul>/</ol> > > > </li> > > > </ul>/</ol> > > > </li> > > > </ul>/</ol> > > > <!-- End generated by Flexmark's TOC extension --> > > > </div> > > > </div> > > > > > > So there are two ways of adding support for this: > > > a) add enough css so that both html render more or less the same. > > > Parameters parsing should be implemented anyways. > > > b) add a new Flexmark extension for TOC, probably forking+adapting the > > > existing TOC extension. > > > > > > Hope this clarifies a bit. > > > > > > br, > > > juan pablo > > > > > > On Sat, Nov 11, 2017 at 9:36 AM, Dirk Frederickx < > > > dirk.frederi...@gmail.com> > > > wrote: > > > > > > > Hi Juan, > > > > > > > > Adding markup support would indeed be an excellent extension for > > jspwiki. > > > > > > > > > > > > When changing the parser/render as you proposed, this would mean that > > > > for one jspwiki instance the backend storage would be changed from > > > > jspwiki-markup to markdown. > > > > > > > > I think this has some important limitations: > > > > - you can not use both markup styles on the same wiki instance > > > > so users familiar with jspwiki-markup would be forced to switch > > > > - we need a solution for migrating a wiki repository between both > > markups > > > > to allow smooth transitions > > > > - we'll need a rewrite the wysiwyg editors, as they are converting > > > > between html and jspwiki-markup > > > > - as you indicated we need some adaptions to the plain editor > > > > but I believe this would mainly be configuration (I can help with > > > that) > > > > (configuration to adapt the auto-completions, ...) > > > > > > > > ---- > > > > > > > > Alternatively, we could look for a solution whereby a user can either > > use > > > > markdown > > > > or jspwiki-markup, whenever he/she choses to. > > > > In this case, the backend would continue to use jspwiki-markup; > > > > during editing the user can chose another type of input. > > > > > > > > The user would then select a "markdown editor" store in its > > > > UserPreferences. > > > > (similar as chosing a wysiwyg editor) > > > > Markdown would be used during editing, and converted to > jspwiki-markup > > > > during saving. > > > > With live-preview the user will see immediately the rendered page. > > > > > > > > This approach is similar how the wysiwyg editors work, translating > > > between > > > > HTML > > > > and jspwiki-markup when saving the page. > > > > > > > > > > > > A topic to be addressed is the fact that markdown has a few more > > features > > > > than jspwiki-markup. > > > > For example, with markdown you can go to 6 levels with headers, > > jspwiki > > > > has only 3 levels. > > > > I guess most of these cases would be solvable through the use of > > specific > > > > %%css-class constructs. > > > > To be validated. > > > > > > > > ---- > > > > > > > > Finally, we could also opt for a solution to mix different markup > > styles > > > in > > > > one page. > > > > You can write a page in jspwiki-markup, but if you want to > copy/paste > > > some > > > > markdown, it can be put inside a PLUGIN or a %%dynamic-style. > > > > > > > > The syntax of a PLUGIN (server side markup conversion) may be a bit > too > > > > complex > > > > for most users. > > > > > > > > [{MarkdownPlugin > > > > > > > > ####This Is a Header#### > > > > }] > > > > > > > > Taking the markdown conversion to the browser-level (with javascript) > > > would > > > > be feasible as well. > > > > (eg showdown http://www.showdownjs.com/ ) > > > > %%markdown > > > > > > > > ####This Is a Header#### > > > > /% > > > > > > > > > > > > ---- > > > > > > > > I believe the 2nd option would be preferred. > > > > However, a faster path to support markdown would be with a plugin > or a > > > > dynamic style. > > > > > > > > > > > > br, > > > > dirk > > > > > > > > > > > > > > > > > > > > On Thu, Nov 9, 2017 at 10:00 PM, Juan Pablo Santos Rodríguez < > > > > juanpablo.san...@gmail.com> wrote: > > > > > > > > > Hi! > > > > > > > > > > (last e-mail today, promise) > > > > > > > > > > At work we've built a POC regarding a tool to generate some static > > > sites. > > > > > We're automating JBake site's generation from some assets, > templates > > > and > > > > > markdown content (b/c JBake understands markdown). For content > > authors > > > we > > > > > were looking for a good web-based contents-editor, with versioning > > > > > capabilities, visually appealing, integrated with our ldap... > > Something > > > > > like JSPWiki O:-) but supporting markdown. > > > > > > > > > > Given that current master allows switching parsers/renderers, I've > > been > > > > > going at work with some customizations we needed to use JSPWiki for > > > this > > > > > POC, whenever I've could look at the POC. Most of them are specific > > to > > > > our > > > > > infrastructure (workflows, page storage), but the Markdown support > is > > > > > pretty agnostic to us so I asked if I could move it to JSPWiki, > and I > > > got > > > > > my ok :-) > > > > > > > > > > In order to simplify things regarding code transfer I'll be putting > > it > > > > on a > > > > > personal github repo (my company is already ok with that), AL > > > licensed. I > > > > > have to extract it from our current code-base, so it maybe some > days > > > > until > > > > > I put it on a github repo for review prior to bringing in to > master, > > > but > > > > > this is a heads up. > > > > > > > > > > Regarding the maturity of the development > > > > > * it is POC level, meaning is working and stable, but not feature > > > > complete. > > > > > It's enough to demonstrate that JSPWiki can parse/render Markdown, > > but > > > > > there are some rough edges > > > > > ** JSPWikiMarkupParser does a lot of things (f.ex. generates a hash > > > with > > > > a > > > > > link for all headings) that I might overlooked so there might be > > > > > differences > > > > > ** No toolbar support on editors (especially on plain editor). > > Current > > > > > toolbars aren't thought with multiple parsers on mind, and as the > POC > > > > > end-users are more than capable of writing markdown with their bare > > > hands > > > > > :-) I've preferred to focus on working the parser and the renderer > > than > > > > on > > > > > this. In order to be feature complete, this should be done, and I > > > haven't > > > > > thought on a way of doing it yet, so any idea would be more than > > > welcome > > > > > O:-) (probably extending the parsers with a new method to expose > the > > > > markup > > > > > associated which each toolbar button, and present it through a new > > JSP > > > or > > > > > who knows how) > > > > > * The parsing / rendering is handled with Flexmark (markdown > parser, > > AL > > > > > licensed) and some extensions. It requires Java 7 (we are on Java > 6). > > > > Time > > > > > to think on 2.11 O:-)? > > > > > > > > > > > > > > > br, > > > > > juan pablo > > > > > > > > > > > > > > >