import { parse, tokenizer } from 'acorn';
import spaces from '../utils/spaces.js';

export default function readScript ( parser, start, attributes ) {
	const scriptStart = parser.index;
	let scriptEnd = null;

	for ( const token of tokenizer( parser.remaining() ) ) {
		parser.index = scriptStart + token.end;
		parser.allowWhitespace();

		if ( parser.eat( '</script>' )  ) {
			scriptEnd = scriptStart + token.end;
			break;
		}
	}

	const source = spaces( scriptStart ) + parser.template.slice( scriptStart, scriptEnd );

	let ast;

	try {
		ast = parse( source, {
			ecmaVersion: 8,
			sourceType: 'module'
		});
	} catch ( err ) {
		parser.acornError( err );
	}

	ast.start = scriptStart;

	return {
		start,
		end: parser.index,
		attributes,
		content: ast
	};
}