It might be worth looking at flexmark [0], too. This is what jbake uses for its markdown parser.
Chris [0] https://github.com/vsch/flexmark-java On Thu, Aug 9, 2018 at 12:06 PM, Daniel Klco <dk...@apache.org> wrote: > Unfortunately, I'm not going to be at adapt.to :-( wrong side of the pond. > > So for commonmark, I'm assuming you're referring to this one here: > > https://github.com/atlassian/commonmark-java > > We could embed the JAR into a bundle to provide markdown support and the > implementation of the Sling Models and any other services. Let me take a > look at it in my copious free time ;-) > > On Thu, Aug 9, 2018 at 12:05 PM Ioan Eugen Stan <stan.ieu...@gmail.com> > wrote: > > > Hello Daniel, > > > > I'm very happy to hear you have a use case for it and I hope we can get > it > > included soon. > > > > Are you coming to Adapt.to? We might do some work there. > > > > I'm swamped with other work and can't work on this until then. If you > need > > it sooner, I can't help you much. > > > > Regarding markdown support, I failed to convince commonmark developer to > > merge my osgi PR's. Maybe you can push a bit and make it happen. If not > we > > could try to push for flexmark. The developer might be more open to > > contributions. This is for longer term. > > > > Short term you can use the versions I published. > > > > I saw another discussion about sling and markdown and I saw nice features > > being eiscussed (copy front matter properties to jcr properties, caching, > > etc) . > > > > https://github.com/vsch/flexmark-java > > > > > > *De la:* dk...@apache.org > > *Trimis:* 9 august 2018 17:59 > > *Către:* ieu...@apache.org > > *Cc:* users@sling.apache.org > > *Subiect:* Re: [DISCUSSION] markdown support for Sling CMS > > > > Hey Eugen, > > > > Now that Sling CMS 0.9.0 is out I was thinking adding markdown support to > > Sling CMS would be a great addition (in part because I have a use case > for > > it for filtered user generated content) > > > > I've created an issue for it: > > > > https://issues.apache.org/jira/browse/SLING-7819 > > > > Do you want to create a PR for integrating this? How can I help? > > > > Thanks, > > Dan > > > > On Wed, Jun 20, 2018 at 10:16 PM Daniel Klco <dk...@apache.org> wrote: > > > >> > >> > >> On Sun, Jun 17, 2018, 9:26 PM Eugen Stan <ieu...@apache.org> wrote: > >> > >>> Hello Daniel and all, > >>> > >>> I've been working to deliver a piece of functionality that leverages > >>> Markdown support and I think it can be a great addition for managing > >>> content inside a Sling, more specifically Sling CMS. > >>> > >>> My work is by no means ready to be released into the open but I would > >>> like to share some ideas and get some feedback. I think it could make a > >>> great adition to Sling CMS. > >>> > >>> I've started from commonsmark-java [1] and I have made some PR's to add > >>> proper osgi support and Karaf features. Until they are upstreamed, I've > >>> published them to my public repository on bintray so you can test it > out > >>> [2]. > >>> > >>> I'm currenlty using this functionality to manage terms of use and > >>> privacy policy files for our web platform. We have a requirement that > >>> they need to be translated and I believe that a text based format has > >>> many advantages in this situation than an office document. Most of them > >>> are related to the that: > >>> > >>> - content can be easily version controlled > >>> > >>> - content can be transformed easily into multiple output formats: html, > >>> text, pdf > >>> > >>> - content is easy to view/edit > >>> > >>> - rich text editors exist for markdown that can be added > >>> > >>> > >>> The way I am using it in my application is to register a Sling Model > >>> that allows me to convert from Markdown content to html on the fly > >>> (caching can be added). > >> > >> > >>> I've also defined a script "page/markdown" via sling:resourceType so I > >>> can leverage that functionality. My implementation is based on fling > >>> sample and uses thymeleaf. > >>> > >>> Bellow are some code snippets that I use. My implementation needs to > >>> handle content into multiple languages and we use a fallback mechanism: > >>> If requested language is not available, then we fallback to the default > >>> version - which is English version for most cases. > >>> > >>> ---- > >>> > >>> @Model(adaptables = {Resource.class, SlingHttpServletRequest.class}) > >>> @FieldDefaults(level = AccessLevel.PROTECTED) > >>> public class Page { > >>> > >>> @SlingObject Resource resource; > >>> > >>> @SlingObject(injectionStrategy = OPTIONAL) > >>> SlingHttpServletRequest request; > >>> > >>> @OSGiService HtmlRenderer htmlRenderer; > >>> @OSGiService Parser parser; > >>> > >>> List<PageTranslation> translations; > >>> > >>> PageTranslation requestedTranslation; > >>> > >>> @PostConstruct > >>> protected void resolveContent() { > >>> Locale lang = requestedLanguage(); > >>> translations = getPageTranslations(); > >>> > >>> log.warn("Parsing translation for resources {}", translations); > >>> try { > >>> requestedTranslation = findRequestedTranslationOrUseDefault(); > >>> } catch (Exception e) { > >>> log.warn("Exception getting content ", e); > >>> } > >>> } > >>> > >>> private List<PageTranslation> getPageTranslations() { > >>> List<PageTranslation> translations = new ArrayList<>(); > >>> > >>> resource > >>> .getChild("lang") > >>> .getChildren() > >>> .forEach( > >>> resource1 -> { > >>> PageTranslation translation = > >>> resource1.adaptTo(PageTranslation.class); > >>> if (translation != null) { > >>> translations.add(translation); > >>> } > >>> }); > >>> return translations; > >>> } > >>> > >>> public String getTitle() { > >>> return requestedTranslation.getTitle(); > >>> } > >>> > >>> public String getLanguage() { > >>> return requestedTranslation.getLanguage(); > >>> } > >>> > >>> public String getContent() { > >>> String content = requestedTranslation.getContent(); > >>> Node doc = parser.parse(content); > >>> return htmlRenderer.render(doc); > >>> } > >>> > >>> ---- > >>> > >>> I'm hoping this can be added to Sling CMS, pending the markdown changes > >>> are upstreamed. > >>> > >>> I believe text based formats are cool and they solve some problems in > an > >>> interesting way. > >>> > >> > >> I've used markdown a fair bit and agree for text heavy use cases. > >> > >> > >>> What do you think? Daniel, would you help me shape this so it can be > >>> included in Sling CMS ? > >> > >> > >> Totally. It'd seem like we'd need to include a markdown editor, script > >> and model to render the markdown content. That way we could show a HTML > >> editor and a markdown editor which might be nice from anyone coming > from a > >> markdown too such as Jekyll. > >> > >> Not related: I haven't seen a Sling CMS feature > >>> in Sling Karaf features. I would like to add one in the near future. > >>> > >> > >> That'd be great! > >> > >> > >>> > >>> Other notes: I've targeted asciidoc via asciidoctor but there are > issues > >>> with running asciidoctorj in osgi. > >>> > >>> Regards, > >>> > >>> Eugen > >>> > >>> [1] https://github.com/atlassian/commonmark-java/pulls > >>> > >>> [2] https://bintray.com/netdava/maven/commonmark-java > >>> > >>> >