From 9858753c43603187ca2210719c24f64048281e82 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sat, 20 Dec 2014 12:27:51 -0800 Subject: [PATCH] gopher: simplify. --- extra/gopher/gopher.factor | 48 ++++++++++++++------------------------ 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/extra/gopher/gopher.factor b/extra/gopher/gopher.factor index c1d80872c6..38f10a72f0 100644 --- a/extra/gopher/gopher.factor +++ b/extra/gopher/gopher.factor @@ -51,7 +51,7 @@ PRIVATE> ERROR: not-a-gopher-url url ; -: gopher* ( url -- item-type byte-array ) +: gopher ( url -- item-type byte-array ) dup url? [ >url ] unless dup protocol>> "gopher" = [ not-a-gopher-url ] unless { [ host>> ] @@ -80,6 +80,16 @@ M: gopher-link >url } cleave "gopher://%s:%s/%s%s" sprintf ] 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 ) utf8 decode string-lines { "." } split1 drop ; @@ -91,33 +101,11 @@ M: gopher-link >url 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 { - { [ dup byte-array? ] [ . ] } - { [ dup image? ] [ image. ] } - [ - [ - dup gopher-link? [ - dup type>> CHAR: i = [ - name>> print - ] [ - [ name>> ] keep [ - presented ,, - COLOR: blue foreground ,, - ] H{ } make format nl - ] if - ] [ - print - ] if - ] each - ] - } cond ; + gopher swap { + { A_TEXT [ gopher-text [ print ] each ] } + { A_MENU [ gopher-menu [ gopher-link. ] each ] } + { A_INDEX [ gopher-menu [ gopher-link. ] each ] } + { A_GIF [ gopher-gif image. ] } + [ drop . ] + } case ;