UNPKG

ngx-showdown

Version:

A Angular (>=2) integration for Showdown

62 lines 4.99 kB
import { Injectable, Optional } from '@angular/core'; import * as Showdown from 'showdown'; import { ShowdownConfig } from './showdown-config.provider'; /** * @internal */ let { hasOwnProperty } = {}; /** * ### Example * * Setup as standalone * ```typescript * import { NgModule } from '@angular/core'; * import { ShowdownConverter } from 'ngx-showdown'; * * @NgModule({ * providers: [ ShowdownConverter ]; * }) * export class AppModule {} * ``` * * Use the converter instance. * ```typescript * import { Injectable } from '@angular/core'; * import { ShowdownConverter } from 'ngx-showdown'; * * @Injectable() * export class SomeService { * constructor(showdownConverter: ShowdownConverter) { * let markdown: string = "**Some**"; * let html: string = showdownConverter.makeHtml(markdown); * console.log(`some:\nmarkdown: ${markdown)\nhtml: ${html}\n`); * } * } * ``` */ export class ShowdownConverter extends Showdown.Converter { constructor(config) { super(config && { extensions: config.extensions }); this.setFlavor((config && config.flavor) || 'vanilla'); this.setOptions(config); } /** * Set options to the converter. * * @param options - A options object to set. */ setOptions(options) { for (let key in options) { if (hasOwnProperty.call(options, key)) { this.setOption(key, options[key]); } } } } ShowdownConverter.decorators = [ { type: Injectable } ]; ShowdownConverter.ctorParameters = () => [ { type: ShowdownConfig, decorators: [{ type: Optional }] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvd2Rvd24tY29udmVydGVyLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Nob3dkb3duLWNvbnZlcnRlci5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEtBQUssUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQ7O0dBRUc7QUFDSCxJQUFJLEVBQUMsY0FBYyxFQUFDLEdBQUcsRUFBRSxDQUFDO0FBRTFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBRUgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQVEsQ0FBQyxTQUFTO0lBRXZELFlBQXdCLE1BQXVCO1FBQzdDLEtBQUssQ0FBQyxNQUFNLElBQUksRUFBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxPQUFpQztRQUNqRCxLQUFLLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRTtZQUN2QixJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNuQztTQUNGO0lBQ0gsQ0FBQzs7O1lBcEJGLFVBQVU7OztZQXBDRixjQUFjLHVCQXVDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFNob3dkb3duIGZyb20gJ3Nob3dkb3duJztcbmltcG9ydCB7IFNob3dkb3duQ29uZmlnIH0gZnJvbSAnLi9zaG93ZG93bi1jb25maWcucHJvdmlkZXInO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5sZXQge2hhc093blByb3BlcnR5fSA9IHt9O1xuXG4vKipcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogU2V0dXAgYXMgc3RhbmRhbG9uZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbiAqIGltcG9ydCB7IFNob3dkb3duQ29udmVydGVyIH0gZnJvbSAnbmd4LXNob3dkb3duJztcbiAqXG4gKiBATmdNb2R1bGUoe1xuICogICBwcm92aWRlcnM6IFsgU2hvd2Rvd25Db252ZXJ0ZXIgXTtcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqXG4gKiBVc2UgdGhlIGNvbnZlcnRlciBpbnN0YW5jZS5cbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbiAqIGltcG9ydCB7IFNob3dkb3duQ29udmVydGVyIH0gZnJvbSAnbmd4LXNob3dkb3duJztcbiAqXG4gKiBASW5qZWN0YWJsZSgpXG4gKiBleHBvcnQgY2xhc3MgU29tZVNlcnZpY2Uge1xuICogICBjb25zdHJ1Y3RvcihzaG93ZG93bkNvbnZlcnRlcjogU2hvd2Rvd25Db252ZXJ0ZXIpIHtcbiAqICAgICBsZXQgbWFya2Rvd246IHN0cmluZyA9IFwiKipTb21lKipcIjtcbiAqICAgICBsZXQgaHRtbDogc3RyaW5nID0gc2hvd2Rvd25Db252ZXJ0ZXIubWFrZUh0bWwobWFya2Rvd24pO1xuICogICAgIGNvbnNvbGUubG9nKGBzb21lOlxcbm1hcmtkb3duOiAke21hcmtkb3duKVxcbmh0bWw6ICR7aHRtbH1cXG5gKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTaG93ZG93bkNvbnZlcnRlciBleHRlbmRzIFNob3dkb3duLkNvbnZlcnRlciB7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgY29uZmlnPzogU2hvd2Rvd25Db25maWcpIHtcbiAgICBzdXBlcihjb25maWcgJiYge2V4dGVuc2lvbnM6IGNvbmZpZy5leHRlbnNpb25zfSk7XG4gICAgdGhpcy5zZXRGbGF2b3IoKGNvbmZpZyAmJiBjb25maWcuZmxhdm9yKSB8fCAndmFuaWxsYScpO1xuICAgIHRoaXMuc2V0T3B0aW9ucyhjb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBvcHRpb25zIHRvIHRoZSBjb252ZXJ0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQSBvcHRpb25zIG9iamVjdCB0byBzZXQuXG4gICAqL1xuICBwdWJsaWMgc2V0T3B0aW9ucyhvcHRpb25zOiBTaG93ZG93bi5TaG93ZG93bk9wdGlvbnMpOiB2b2lkIHtcbiAgICBmb3IgKGxldCBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywga2V5KSkge1xuICAgICAgICB0aGlzLnNldE9wdGlvbihrZXksIG9wdGlvbnNba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==