containers.js 750 B

123456789101112131415161718192021222324
  1. const mdContainer = require('markdown-it-container');
  2. module.exports = md => {
  3. md.use(mdContainer, 'demo', {
  4. validate(params) {
  5. return params.trim().match(/^demo\s*(.*)$/);
  6. },
  7. render(tokens, idx) {
  8. const m = tokens[idx].info.trim().match(/^demo\s*(.*)$/);
  9. if (tokens[idx].nesting === 1) {
  10. const description = m && m.length > 1 ? m[1] : '';
  11. const content = tokens[idx + 1].type === 'fence' ? tokens[idx + 1].content : '';
  12. return `<demo-block>
  13. ${description ? `<div>${md.render(description)}</div>` : ''}
  14. <!--element-demo: ${content}:element-demo-->
  15. `;
  16. }
  17. return '</demo-block>';
  18. }
  19. });
  20. md.use(mdContainer, 'tip');
  21. md.use(mdContainer, 'warning');
  22. };