gopher: simplify.
parent
c45e4e1c68
commit
9858753c43
|
@ -51,7 +51,7 @@ PRIVATE>
|
||||||
|
|
||||||
ERROR: not-a-gopher-url url ;
|
ERROR: not-a-gopher-url url ;
|
||||||
|
|
||||||
: gopher* ( url -- item-type byte-array )
|
: gopher ( url -- item-type byte-array )
|
||||||
dup url? [ >url ] unless
|
dup url? [ >url ] unless
|
||||||
dup protocol>> "gopher" = [ not-a-gopher-url ] unless {
|
dup protocol>> "gopher" = [ not-a-gopher-url ] unless {
|
||||||
[ host>> ]
|
[ host>> ]
|
||||||
|
@ -80,6 +80,16 @@ M: gopher-link >url
|
||||||
} cleave "gopher://%s:%s/%s%s" sprintf
|
} cleave "gopher://%s:%s/%s%s" sprintf
|
||||||
] if >url ;
|
] if >url ;
|
||||||
|
|
||||||
|
: gopher-link. ( gopher-link -- )
|
||||||
|
dup type>> CHAR: i = [
|
||||||
|
name>> print
|
||||||
|
] [
|
||||||
|
[ name>> ] keep [
|
||||||
|
presented ,,
|
||||||
|
COLOR: blue foreground ,,
|
||||||
|
] H{ } make format nl
|
||||||
|
] if ;
|
||||||
|
|
||||||
: gopher-text ( object -- lines )
|
: gopher-text ( object -- lines )
|
||||||
utf8 decode string-lines { "." } split1 drop ;
|
utf8 decode string-lines { "." } split1 drop ;
|
||||||
|
|
||||||
|
@ -91,33 +101,11 @@ M: gopher-link >url
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: gopher ( url -- object )
|
|
||||||
gopher* swap {
|
|
||||||
{ A_TEXT [ gopher-text ] }
|
|
||||||
{ A_MENU [ gopher-menu ] }
|
|
||||||
{ A_INDEX [ gopher-menu ] }
|
|
||||||
{ A_GIF [ gopher-gif ] }
|
|
||||||
[ drop ]
|
|
||||||
} case ;
|
|
||||||
|
|
||||||
: gopher. ( url -- )
|
: gopher. ( url -- )
|
||||||
gopher {
|
gopher swap {
|
||||||
{ [ dup byte-array? ] [ . ] }
|
{ A_TEXT [ gopher-text [ print ] each ] }
|
||||||
{ [ dup image? ] [ image. ] }
|
{ A_MENU [ gopher-menu [ gopher-link. ] each ] }
|
||||||
[
|
{ A_INDEX [ gopher-menu [ gopher-link. ] each ] }
|
||||||
[
|
{ A_GIF [ gopher-gif image. ] }
|
||||||
dup gopher-link? [
|
[ drop . ]
|
||||||
dup type>> CHAR: i = [
|
} case ;
|
||||||
name>> print
|
|
||||||
] [
|
|
||||||
[ name>> ] keep [
|
|
||||||
presented ,,
|
|
||||||
COLOR: blue foreground ,,
|
|
||||||
] H{ } make format nl
|
|
||||||
] if
|
|
||||||
] [
|
|
||||||
print
|
|
||||||
] if
|
|
||||||
] each
|
|
||||||
]
|
|
||||||
} cond ;
|
|
||||||
|
|
Loading…
Reference in New Issue