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
> > > >
> > >
> >
>

Reply via email to