#!/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )";

files=$1;

# Transform Box make()
replacement=$(cat $DIR/BoxMakeTemplate.re);
replace-in-files \
  --regex='//\s+use-make-box([\s\S]*?)?(\[[\s\S]*?\])?\s+\[@react.component\]\s+external\s+make:\s+\(([\s\S]*?~key:\s+string=\?,?)?([\s\S]*?)\)\s+=>\s+React.element\s+=\s+(.*?);' \
  --replacement="$replacement" \
  "$files";

# Transform Box makeProps()
replacement=$(cat $DIR/BoxMakePropsTemplate.re);
replace-in-files \
  --regex='//\s+use-makeProps-box[\s\S]*?let\s+makeProps\s+=\s+\(([\s\S]*?~key:\s+option\(string\)=\?,?)?([\s\S]*?)\)\s+=>\s+makeProps\(([\s\S]*?~key\?,?)?([\s\S]*?)\);' \
  --replacement="$replacement" \
  "$files";

# Transform PseudoBox make()
replacement=$(cat $DIR/PseudoBoxMakeTemplate.re);
replace-in-files \
  --regex='//\s+use-make-pseudoBox([\s\S]*?)?(\[[\s\S]*?\])?\s+\[@react.component\]\s+external\s+make:\s+\(([\s\S]*?~key:\s+string=\?,?)?([\s\S]*?)\)\s+=>\s+React.element\s+=\s+(.*?);' \
  --replacement="$replacement" \
  "$files";

# Transform PseudoBox makeProps()
replacement=$(cat $DIR/PseudoBoxMakePropsTemplate.re);
replace-in-files \
  --regex='//\s+use-makeProps-pseudoBox[\s\S]*?let\s+makeProps\s+=\s+\(([\s\S]*?~key:\s+option\(string\)=\?,?)?([\s\S]*?)\)\s+=>\s+makeProps\(([\s\S]*?~key\?,?)?([\s\S]*?)\);' \
  --replacement="$replacement" \
  "$files";

for file in $(globby "$files"); 
  do bsrefmt --in-place --parse re --print re "$file"; 
done;