#!/bin/bash

# Controlla che sia stato fornito almeno un argomento
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
    echo "Uso: $0 [s] file.tex"
    echo " - Se viene passato 's' come primo argomento, sovrascrive il file originale."
    echo " - Altrimenti, crea un nuovo file con '-modificato' nel nome."
    exit 1
fi

# Determina se sovrascrivere o meno
if [ "$1" == "s" ]; then
    overwrite=true
    input_file="$2"
else
    overwrite=false
    input_file="$1"
fi

# Verifica se il file esiste
if [ ! -f "$input_file" ]; then
    echo "Errore: Il file '$input_file' non esiste!"
    exit 1
fi

# Se non si sovrascrive, crea un nuovo nome file
if [ "$overwrite" = false ]; then
    output_file="${input_file%.tex}-modificato.tex"
else
    output_file="$input_file"
fi

# Variabile per tenere traccia se siamo dentro un blocco lstlisting
inside_lstlisting=0

# Creiamo un file temporaneo per la modifica
temp_file=$(mktemp)

# Legge il file riga per riga
while IFS= read -r line; do
    # Controlla se inizia un blocco lstlisting
    if [[ "$line" =~ \\begin\{lstlisting\} ]]; then
        inside_lstlisting=1
    fi

    # Se siamo dentro lstlisting, non modificare la riga
    if [ $inside_lstlisting -eq 1 ]; then
        echo "$line"
    else
        # Sostituzione solo fuori dai blocchi lstlisting
        echo "$line" | sed -E 's/"([^"]+)"/\\enquote{\1}/g'
    fi

    # Controlla se termina un blocco lstlisting
    if [[ "$line" =~ \\end\{lstlisting\} ]]; then
        inside_lstlisting=0
    fi
done < "$input_file" > "$temp_file"

# Se deve sovrascrivere, sostituisce il file originale
if [ "$overwrite" = true ]; then
    mv "$temp_file" "$input_file"
    echo "File sovrascritto: $input_file"
else
    mv "$temp_file" "$output_file"
    echo "File convertito: $output_file"
fi
