shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Por favor, não me julguem


From: Robson Alexandre
Subject: Re: [shell-script] Por favor, não me julguem
Date: Sun, 07 Feb 2016 15:04:55 +0000

Alfredo,

já tinha pensado em algo do tipo mas não havia colocado em prática.
Mesmo pq qdo preciso de algo parecido recorro ao Sublime Text que tem um snippet chamado Emmet que usa uma sintaxe que trabalha hieraquia, repetições e algumas substituições p.e.
div>ul>li+li+li
que vai "abrir" e "fechar" os elementos como vc sugeriu.
Minha simplista sugestão para fazer algo do tipo em shell fica abaixo:

string="html>head+body>div>div+div+div>p>span"
sed -r 's/([[:alnum:]]+)>/<\1>\n/g;s|([[:alnum:]]+)\+|<\1></\1>\n|g;s|([[:alnum:]]+)$|<\1>|' <<< $string
reverse=$(tac <(sed 's|[^[:alnum:]]|&\n|g' <<< $string))
sed -r 's| [^+ ]+\+||g;s|([[:alnum:]]+)[ >]|</\1>|g' <<< ${reverse[@]}

O algoritmo basicamente é elamentos são alfanuméricos.
Comandos são > ou +
Se comando = ">", elemento que antecede tem sua tag aberta.
Se comando = "+", elemento abre e fecha tag
Ao final inverte a ordem dos elementos e fecha tag um a um (exceto os elementos sucedidos por "+")

Talvez já exista algo que faça o mesmo e o pessoal possa indicar este ou outro caminho.
E é claro, sugestões de melhorar o algoritmo e/ou usar outras ferramentas.

Atenciosamente
Robson Alexandre






Em seg, 1 de fev de 2016 às 16:18, Alfredo Casanova address@hidden [shell-script] <address@hidden> escreveu:
 

Antes de qualquer coisa, não tenho orgulho do que fiz hahaha
Não sou programador, mas vira e mexe faço alguma coisa em shell script e coloco num apache pra consultar informacoes.
Aí pra evitar ficar escapando barra, aspas, etc nos echo "<html">, fiz isso aqui e o resultado foi bem mais q satisfatório pro meu uso minusculo
Acho até q o conceito pode ser melhor explorado, por isso tô postando na lista, só pra servir de inspiração:

html(){
[ "$2" == "abre" ] && echo "<$1>$3"
[ "$2" == "fecha" ] && echo "</$1>"
[ "$2" == "contem" ] && echo "<$1>$3</${1// */}>"
}

$ html html contem "$(html table contem "$(html tr contem "$(html "td class='cssaqui'" contem "teste de tabela html")")")"
<html><table><tr><td class='cssaqui'>teste de tabela html</td></tr></table></html>

se preferir uma construção mais limpa, é só fazer aos poucos
html html abre
html body abre
html table abre
html tr abre
html "td class='css aqui'" contem teste de tabela html
html tr fecha
html table fecha
html body fecha
html html fecha


reply via email to

[Prev in Thread] Current Thread [Next in Thread]