giovedì 10 novembre 2016

Bash Vs Livecode

Ho trovato in giro il seguente script bash per catturare tutti i riferimenti esterni:

#!/bin/bash
pagina=$1
if [ ${pagina:0:4} = "http" ]; then
  #web
  curl $pagina | grep -o 'href=['"'"'"][^"'"'"']*['"'"'"]' | sed -e 's/^href=["'"'"']//' -e 's/["'"'"']$//' >> links.txt
else
  #locale
  less $pagina | grep -o 'href=['"'"'"][^"'"'"']*['"'"'"]' | sed -e 's/^href=["'"'"']//' -e 's/["'"'"']$//' >> links.txt
fi

Sono 7 righe di codice (ignorando i commenti). In pratica prende quello che c'è dopo "href=", solo che l'espressione di grep e sed sono veramente difficili da comprendere.
Ho provato a farlo in livecode e il risultato è questo:
 
put $1 into indirizzo
#web o locale?
if (char 1 to 4 of $1) is not "http" then put "file:" before indirizzo
put url indirizzo into pagina
set itemdel to "="
put the number of items of pagina into nn
repeat with i=1 to nn
   if (char -4 to -1 of item i of pagina ) = "href" then put word 1 of item (i+1) of pagina & return after listaLink
end repeat
put listaLink


Sono 9 righe, solo due di più di bash, ma forse molto più chiare. Voi che ne dite?