HEX
Server: Apache
System: Linux webd004.cluster130.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User: frenchy (106757)
PHP: 7.4.33
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/frenchy/www/french-american.org/current/node_modules/postcss-jsx/template-tokenize.js
"use strict";
const tokenize = require("postcss/lib/tokenize");

function templateTokenize (input) {
	let pos = input.quasis[0].start;
	const quasis = input.quasis.filter(quasi => quasi.start !== quasi.end);
	const tokenizer = tokenize.apply(this, arguments);

	function tokenInExpressions (token, returned) {
		const start = pos;
		pos += token[1].length;
		if (!quasis.some(quasi => start >= quasi.start && pos <= quasi.end) || (returned.length && token[0] === returned[0][0])) {
			return true;
		} else if (returned.length) {
			back(token);
		}
	}

	function back (token) {
		pos -= token[1].length;
		return tokenizer.back.apply(tokenizer, arguments);
	}

	function nextToken () {
		const args = arguments;
		const returned = [];
		let token;
		let line;
		let column;

		while (
			(token = tokenizer.nextToken.apply(tokenizer, args)) &&
			tokenInExpressions(token, returned)
		) {
			line = token[4] || token[2] || line;
			column = token[5] || token[3] || column;
			returned.push(token);
		}
		if (returned.length) {
			token = [
				returned[0][0],
				returned.map(token => token[1]).join(""),
				returned[0][2],
				returned[0][3],
				line,
				column,
			];
		}
		return token;
	}
	return Object.assign({}, tokenizer, {
		back,
		nextToken,
	});
}

module.exports = templateTokenize;