alias urltok { var %a = $1,%b = 1,%c = @:?&./#+,%d,%e,%f = 1 while %b <= $len(%a) { %d = $mid(%a,%b,1) if %b > 1 && %d != / && %d isin %c $+ = && %d = $mid(%a,$calc(%b -1),1) return $null if $left(%a,7) != http:// || $mid(%a,8,1) isin %c return $null inc %b } goto $prop :attr %b = 1 while %b <= $len(%a) { if $mid(%a,%b,1) isin ?& { %d = $mid(%a,%b,1) inc %e if %e = $2 { var %x = 1 } } if %x { var %x = %x $+ $mid(%a,%b,1) if $mid(%a,%b,1) = = break } inc %b } return $iif(%x,$mid(%x,3,-1),$iif($2 = 0,%e,$null)) :dir %e = $count($mid(%a,8),/) if $2 = 0 { if $count(%a,http://) > 1 return 1 return $iif($right(%a,1) = /,$calc(%e -1),%e) } %b = $calc($pos(%a,/,$calc($2 +2)) +1) %e = %b while %b <= $len(%a) { if $mid(%a,%b,1) isin $remove(%c,.) break var %x = %x $+ $mid(%a,%b,1) inc %b } return $iif(%e = 1,$null,%x) :val if $2 = 0 return $count(%a,=) %b = $pos(%a,=,$2) while %b <= $len(%a) { if $mid(%a,%b,1) isin %c break var %x = %x $+ $mid(%a,%b,1) inc %b } return $right(%x,-1) :protocol return $left(%a,4) :user %e = $mid(%a,$calc($pos(%a,://) +3)) return $iif(. isin $left(%e,$calc($pos(%e,:) -1)),$null,$v2) :pass %e = $left(%a,$pos(%a,@,1)) return $mid($mid(%e,$pos(%e,:,$count(%e,:))),2,-1) :port if $right($left(%a,$pos(%a,/,%f)),2) = :/ || ($v1 = //) { inc %f goto port } %e = $left(%a,$pos(%a,/,3))) %f = $mid(%a,$calc($pos(%e,:,$count(%e,:)) +1)) return $iif($left(%f,$calc($pos(%f,/,1) -1)) !isnum,$null,$v1) :host if $mid(%a,8,1) !isin %c { %b = 8 while %b <= $len(%a) { %e = $mid(%a,%b,1) if %e isin :/ break var %x = %x $+ %e inc %b } return $iif($left(%x,4) = www.,$right(%x,-4),%x) } if $pos(%a,@) > $pos(%a,:,%f) { inc %f goto host } return $right($mid(%a,$pos(%a,@),$pos(%a,:,$calc(%f -1))),-1) :anchor return $mid(%a,$pos(%a,$chr(35))) }