Exemplo n.º 1
0
router.get('/*/*', async ctx => {
	const lang = ctx.params[0];
	const doc = ctx.params[1];

	showdown.extension('urlExtension', () => ({
		type: 'output',
		regex: /%URL%/g,
		replace: config.url
	}));

	showdown.extension('apiUrlExtension', () => ({
		type: 'output',
		regex: /%API_URL%/g,
		replace: config.api_url
	}));

	const conv = new showdown.Converter({
		tables: true,
		extensions: ['urlExtension', 'apiUrlExtension', 'highlightjs']
	});
	const md = fs.readFileSync(`${__dirname}/../../../src/docs/${doc}.${lang}.md`, 'utf8');

	await ctx.render('../../../../src/docs/article', Object.assign({
		id: doc,
		html: conv.makeHtml(md),
		title: md.match(/^# (.+?)\r?\n/)[1],
		src: `https://github.com/syuilo/misskey/tree/master/src/docs/${doc}.${lang}.md`
	}, await genVars(lang)));
});
Exemplo n.º 2
0
import {I18N} from 'aurelia-i18n';
import {autoinject} from 'aurelia-framework';
import * as showdown from 'showdown';

showdown.extension('targetblank', function () {
  return [
      {
        type:   'output',
        regex: '<a(.*?)>',
        replace: function (match, content) {
            return '<a target="_blank"' + content + '>';
        }
      }
  ];
});

@autoinject()
export class ToolTip {
  html: string;

  constructor(private i18n: I18N) {}

  activate(model) {
    let translated = this.i18n.tr(model.key);
    let converter = new showdown.Converter({ extensions: ['targetblank'] });
    this.html = converter.makeHtml(translated);
  }
}