Website : rimsha.abasa.com
backdoor
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
canvas
/
node_modules
/
remark-stringify
/
lib
/
util
/
Filename :
copy-identifier-encoding.js
back
Copy
'use strict' var entityPrefixLength = require('./entity-prefix-length') module.exports = copy var ampersand = '&' var punctuationExppresion = /[-!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~_]/ // For shortcut and collapsed reference links, the contents is also an // identifier, so we need to restore the original encoding and escaping // that were present in the source string. // // This function takes the unescaped & unencoded value from shortcut’s // child nodes and the identifier and encodes the former according to // the latter. function copy(value, identifier) { var length = value.length var count = identifier.length var result = [] var position = 0 var index = 0 var start while (index < length) { // Take next non-punctuation characters from `value`. start = index while (index < length && !punctuationExppresion.test(value.charAt(index))) { index += 1 } result.push(value.slice(start, index)) // Advance `position` to the next punctuation character. while ( position < count && !punctuationExppresion.test(identifier.charAt(position)) ) { position += 1 } // Take next punctuation characters from `identifier`. start = position while ( position < count && punctuationExppresion.test(identifier.charAt(position)) ) { if (identifier.charAt(position) === ampersand) { position += entityPrefixLength(identifier.slice(position)) } position += 1 } result.push(identifier.slice(start, position)) // Advance `index` to the next non-punctuation character. while (index < length && punctuationExppresion.test(value.charAt(index))) { index += 1 } } return result.join('') }