#!/bin/bash

cat <<HEADER > parse.js
/* remove eslint errors to see if there is something really wrong */
/*eslint quotes: [0]*/
/*eslint indent: [0]*/
/*eslint vars-on-top: [0]*/
/*eslint yoda: 0*/
/*eslint curly: 0*/
/*eslint no-implicit-coercion: 0*/
/*eslint newline-after-var: 0*/
/*eslint space-before-function-paren: 0*/
/*eslint block-spacing: 0*/
/*eslint brace-style: 0*/
/*eslint complexity: 0*/
/*eslint one-var: 0*/
/*eslint eqeqeq: 0*/
/*eslint object-curly-spacing: 0*/
/*eslint quote-props: 0*/
/*eslint key-spacing: 0*/
/*eslint valid-jsdoc: 0*/
/*eslint func-style: 0*/
/*eslint no-nested-ternary: 0*/
/*eslint operator-linebreak: 0*/
/*eslint no-multi-spaces: 0*/
/*eslint no-constant-condition: 0*/
/*eslint comma-spacing: 0*/
/*eslint no-else-return: 0*/
/*eslint no-warning-comments: 0*/
/*eslint default-case: 0*/
/*eslint consistent-return: 0*/
/*eslint no-undefined: 0*/
/*eslint no-new-func: 0*/
/*eslint max-nested-callbacks: 0*/
/*eslint padded-blocks: 0*/
/*eslint no-self-compare: 0*/
/*eslint no-multiple-empty-lines: 0*/
/*eslint no-new: 0*/
/*eslint no-unused-vars: 0*/
'use strict';

var window = {document: {}};

HEADER

curl https://raw.githubusercontent.com/angular/angular.js/master/src/Angular.js >> parse.js
curl https://raw.githubusercontent.com/angular/angular.js/master/src/stringify.js >> parse.js
curl https://raw.githubusercontent.com/angular/angular.js/master/src/minErr.js >> parse.js
curl https://raw.githubusercontent.com/angular/angular.js/master/src/ng/parse.js >> parse.js

cat <<HEADER >> parse.js

exports.Lexer = Lexer;
exports.Parser = Parser;


HEADER

# now we are going to expose the AST

search='fn.literal = isLiteral(ast);'  # sample input containing metachars.
searchEscaped=$(sed 's/[^^]/[&]/g; s/\^/\\^/g' <<< "$search") # escape it.
sed -i "s/${searchEscaped}/fn.ast = ast;\n${search}/g" parse.js
