/*************************************************************************
 *
 * Troven CONFIDENTIAL
 * __________________
 *
 *  (c) 2017-2020 Troven Pty Ltd
 *  All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Troven Pty Ltd and its licensors,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Troven Pty Ltd
 * and its suppliers and may be covered by International and Regional Patents,
 * patents in process, and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Troven Pty Ltd.
 */

import { IChassisPlugin, IChassisContext } from "api-service-core";
import * as _ from "lodash";
import * as showdown  from 'showdown';
import * as Handlebars from "handlebars";
import Markdown from "../middleware/Markdown";
import PlantUML from "../middleware/PlantUML";

export default class MarkdownPlugin implements IChassisPlugin {

    name = "markdown";
    title = "Render using Markdown";

    install(_context: IChassisContext, _options: any) {

        let markdown = new showdown.Converter();
        Handlebars.registerHelper('md', function( text: string) {
            let html = markdown.makeHtml(text);
            return html;
        });

        _context.middleware.set(new Markdown);
        _context.middleware.set(new PlantUML);
    }
};
