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

Reply via email to