#!/usr/bin/env bash

YEAR=2014
TOURNAMENT=1-tabiyas
SCRIPT_PATH=`dirname $0`

# Regexps to parse the result of game
date='([0-9]{2}\.[0-9]{2}\.[0-9]{4})'
white='(.+)'
black='(.+)'
result='((1|0|0\.5):(1|0|0\.5))'

# Directories to search `tour_info' in
if [[ $# != 0 ]]; then
    tour_dirs=()
    for number in "$@"; do
        # Change tour numbers: '1' -> '01', '2' -> '02', and so on
        number=$(printf "%02g" "$number")

        tour_dirs+=("$SCRIPT_PATH"/"$YEAR"/"$TOURNAMENT"/tours/"$number")
    done
else
    tour_dirs=("$SCRIPT_PATH"/"$YEAR"/"$TOURNAMENT"/tours/*)
fi

for dir in "${tour_dirs[@]}"; do
    number=$(printf "%01g" ${dir:(-2)}) # remove the leading `0' if any

    echo "- number: ${number}"
    echo "  games:"

    # Add a newline at the end of `tour_info' to parse the last line
    tour_info=$(cat "$dir/tour_info" && echo)

    while read line; do
        # Parsed data of game: date a[1], white player a[2], black
        # player a[6], and the result a[3]
        data=( $(echo "$line" | gawk --re-interval \
            'match($0, /'${date}' [-—] '${white}' '${result}' '${black}'/, a) \
            { print a[1], a[2], a[6], a[3] }') )

        if [[ ${#data[@]} != 0 ]]; then
            echo "  - date:   ${data[0]}"
            echo "    white:  ${data[1]}"
            echo "    black:  ${data[2]}"
            echo "    result: '${data[3]}'"
            echo
        fi
    done <<< "$tour_info"
done