diff options
Diffstat (limited to 'src/node_modules/es-abstract/2019/CreateHTML.js')
-rw-r--r-- | src/node_modules/es-abstract/2019/CreateHTML.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/node_modules/es-abstract/2019/CreateHTML.js b/src/node_modules/es-abstract/2019/CreateHTML.js new file mode 100644 index 0000000..536c92d --- /dev/null +++ b/src/node_modules/es-abstract/2019/CreateHTML.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $replace = callBound('String.prototype.replace'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createhtml + +module.exports = function CreateHTML(string, tag, attribute, value) { + if (Type(tag) !== 'String' || Type(attribute) !== 'String') { + throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings'); + } + var str = RequireObjectCoercible(string); + var S = ToString(str); + var p1 = '<' + tag; + if (attribute !== '') { + var V = ToString(value); + var escapedV = $replace(V, /\x22/g, '"'); + p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22'; + } + return p1 + '>' + S + '</' + tag + '>'; +}; |