UNPKG

@rightcapital/phpdoc-parser

Version:

TypeScript version of PHPDoc parser with support for intersection types and generics

48 lines (47 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.QuoteAwareConstExprStringNode = void 0; const const_expr_string_node_1 = require("./const-expr-string-node"); class QuoteAwareConstExprStringNode extends const_expr_string_node_1.ConstExprStringNode { constructor(value, quoteType) { super(value); this.quoteType = quoteType; } toString() { if (this.quoteType === QuoteAwareConstExprStringNode.SINGLE_QUOTED) { return `'${this.value.replace(/'/g, "\\'")}'`; } return `"${this.escapeDoubleQuotedString()}"`; } escapeDoubleQuotedString() { let escaped = this.value.replace(/["\n\r\t\x0B\f\v\\$]/g, '\\$&'); const regexes = [ /[\x00-\x08\x0E-\x1F]/g, /[\xC0-\xC1]/g, /[\xF5-\xFF]/g, /\xE0[\x80-\x9F]/g, /\xF0[\x80-\x8F]/g, /[\xC2-\xDF](?![\x80-\xBF])/g, /[\xE0-\xEF](?![\x80-\xBF]{2})/g, /[\xF0-\xF4](?![\x80-\xBF]{3})/g, /(?<=[\x00-\x7F\xF5-\xFF])[\x80-\xBF]/g, /(?<![\xC2-\xDF]|[\xE0-\xEF]|[\xE0-\xEF][\x80-\xBF]|[\xF0-\xF4]|[\xF0-\xF4][\x80-\xBF]|[\xF0-\xF4][\x80-\xBF]{2})[\x80-\xBF]/g, /(?<=[\xE0-\xEF])[\x80-\xBF](?![\x80-\xBF])/g, /(?<=[\xF0-\xF4])[\x80-\xBF](?![\x80-\xBF]{2})/g, /(?<=[\xF0-\xF4][\x80-\xBF])[\x80-\xBF](?![\x80-\xBF])/g, ]; for (const regex of regexes) { escaped = escaped.replace(regex, (match) => { const hex = match.charCodeAt(0).toString(16); return `\\x${'0'.repeat(2 - hex.length) + hex}`; }); } return escaped; } getNodeType() { return 'QuoteAwareConstExprStringNode'; } } exports.QuoteAwareConstExprStringNode = QuoteAwareConstExprStringNode; QuoteAwareConstExprStringNode.SINGLE_QUOTED = 1; QuoteAwareConstExprStringNode.DOUBLE_QUOTED = 2;