Olá amigos pinguins, recentemente comecei a desenvolver este script em shell (que usa regex do perl dentro, mas eu vou trocar isso depois) que imprime um arquivo markdown de forma legível (como se o markdown já não fosse legível o suficiente) no terminal linux (tipo o glow), vocês podem ver mais detalhes ou comentar neste post que eu fiz no reddit. Meu esforço atual está concentrado em fazer com que as tabelas markdown apareçam corretamente. Sei que meu código ainda está feio e difícil de entender, mas gostaria de pedir ajuda em uma dúvida de noob: eu consegui criar um código que funciona do jeito que eu quero quando está em um script isolado, mas não consigo fazê-lo funcionar junto com o script que já tenho (o script está aqui), e o código que eu fiz para formatar as tabelas é esse:
numOFmatches=0
currenttable=""
tablesize=0
FILE=$(cat "$FILE" | while IFS= read -r line; do
if [[ $line =~ ^\| ]]; then
((numOFmatches++))
currenttable+=" $line\n"
else
if [ $numOFmatches -gt 0 ]; then
table=$(echo -e "$currenttable" | awk 'NR==1{gsub(/-/,"="); print toupper($0)} NR!=1{print $0}')
header=$(echo -e "${table}" | head -1)
data=$(echo -e "${table}" | tail -n +2)
echo -e "\x1b[1m${header}\x1b[0m" | column -t -s '|'
echo -e "${data}" | column -t -s '|'
echo
for ((i=0; i<$tablesize; i++)); do
echo
done
numOFmatches=0
currenttable=""
fi
echo "$line"
fi
done < "$FILE"
if [ $numOFmatches -gt 0 ]; then
table=$(echo -e "$currenttable" | awk 'NR==1{gsub(/-/,"="); print toupper($0)} NR!=1{print $0}')
header=$(echo -e "${table}" | head -1)
data=$(echo -e "${table}" | tail -n +2)
echo -e "\x1b[1m${header}\x1b[0m" | column -t -s '|'
echo -e "${data}" | column -t -s '|'
echo
for ((i=0; i<$tablesize; i++)); do
echo
done
fi)
echo "$FILE"
Isso pega o conteúdo de $FILE (que é o conteúdo do arquivo escolhido como parâmetro no script), trata as tabelas e as armazena de volta na variável, depois imprime, como eu disse antes ele exibe tudo do jeito que eu quero quando colocado em um script separado, mas não quando tento incorporá-lo no resto do programa (tentei de várias maneiras), mas a saída do script não é alterada e eu não consigo descobrir o que eu estou fazendo de errado.
Por curiosidade, ele deixa as tabelas assim:
Alguém aqui com experiencia em shellscript poderia dar um help por favor? Eu tô quase queimando meu último neurônio tentando fazer isso mas não saí do lugar.
Desde já agradeço à todo pela atenção.