123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.stripIgnoredCharacters = stripIgnoredCharacters;
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
- var _source = require("../language/source");
- var _tokenKind = require("../language/tokenKind");
- var _lexer = require("../language/lexer");
- var _blockString = require("../language/blockString");
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function stripIgnoredCharacters(source) {
- var sourceObj = typeof source === 'string' ? new _source.Source(source) : source;
- if (!(sourceObj instanceof _source.Source)) {
- throw new TypeError("Must provide string or Source. Received: ".concat((0, _inspect.default)(sourceObj)));
- }
- var body = sourceObj.body;
- var lexer = (0, _lexer.createLexer)(sourceObj);
- var strippedBody = '';
- var wasLastAddedTokenNonPunctuator = false;
- while (lexer.advance().kind !== _tokenKind.TokenKind.EOF) {
- var currentToken = lexer.token;
- var tokenKind = currentToken.kind;
-
- var isNonPunctuator = !(0, _lexer.isPunctuatorToken)(currentToken);
- if (wasLastAddedTokenNonPunctuator) {
- if (isNonPunctuator || currentToken.kind === _tokenKind.TokenKind.SPREAD) {
- strippedBody += ' ';
- }
- }
- var tokenBody = body.slice(currentToken.start, currentToken.end);
- if (tokenKind === _tokenKind.TokenKind.BLOCK_STRING) {
- strippedBody += dedentBlockString(tokenBody);
- } else {
- strippedBody += tokenBody;
- }
- wasLastAddedTokenNonPunctuator = isNonPunctuator;
- }
- return strippedBody;
- }
- function dedentBlockString(blockStr) {
-
- var rawStr = blockStr.slice(3, -3);
- var body = (0, _blockString.dedentBlockStringValue)(rawStr);
- var lines = body.split(/\r\n|[\n\r]/g);
- if ((0, _blockString.getBlockStringIndentation)(lines) > 0) {
- body = '\n' + body;
- }
- var lastChar = body[body.length - 1];
- var hasTrailingQuote = lastChar === '"' && body.slice(-4) !== '\\"""';
- if (hasTrailingQuote || lastChar === '\\') {
- body += '\n';
- }
- return '"""' + body + '"""';
- }
|