From c8f5f7a352e732b466e48df8ff5d420239d5215d Mon Sep 17 00:00:00 2001 From: Hiroki Osame Date: Sun, 22 Mar 2020 15:29:28 -0400 Subject: [PATCH] Support boolean attributes --- lib/common/utils.js | 2 ++ lib/renderer.js | 4 +++- test/misc.js | 7 +++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/common/utils.js b/lib/common/utils.js index 712cd29..b813030 100644 --- a/lib/common/utils.js +++ b/lib/common/utils.js @@ -2,6 +2,7 @@ // 'use strict'; +function isNil(v) { return v === null || typeof v === 'undefined'; } function _class(obj) { return Object.prototype.toString.call(obj); } @@ -299,6 +300,7 @@ exports.lib = {}; exports.lib.mdurl = require('mdurl'); exports.lib.ucmicro = require('uc.micro'); +exports.isNil = isNil; exports.assign = assign; exports.isString = isString; exports.has = has; diff --git a/lib/renderer.js b/lib/renderer.js index 6a9e524..bed4900 100644 --- a/lib/renderer.js +++ b/lib/renderer.js @@ -11,6 +11,7 @@ var assign = require('./common/utils').assign; var unescapeAll = require('./common/utils').unescapeAll; var escapeHtml = require('./common/utils').escapeHtml; +var isNil = require('./common/utils').isNil; //////////////////////////////////////////////////////////////////////////////// @@ -174,7 +175,8 @@ Renderer.prototype.renderAttrs = function renderAttrs(token) { result = ''; for (i = 0, l = token.attrs.length; i < l; i++) { - result += ' ' + escapeHtml(token.attrs[i][0]) + '="' + escapeHtml(token.attrs[i][1]) + '"'; + var value = token.attrs[i][1]; + result += ' ' + escapeHtml(token.attrs[i][0]) + (isNil(value) ? '' : '="' + escapeHtml(value) + '"'); } return result; diff --git a/test/misc.js b/test/misc.js index c933afa..f7c676c 100644 --- a/test/misc.js +++ b/test/misc.js @@ -382,6 +382,13 @@ describe('Token attributes', function () { md.renderer.render(tokens, md.options), '
\n' ); + + t.attrSet('hidden'); + + assert.strictEqual( + md.renderer.render(tokens, md.options), + '
\n' + ); }); it('.attrGet', function () {