]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/gemini/cli/cli.factor
core: subseq-index? -> subseq-of?
[factor.git] / extra / gemini / cli / cli.factor
index 5da25a3049345d1ebf03353aed8982eb0afc3605..0d815873c9c4f8f42941b1a28e099fb35ac361df 100644 (file)
@@ -78,7 +78,7 @@ CONSTANT: URL V{ }
 : gemini-print ( url body meta -- )
     f pre [
         PAGE delete-all
-        gemini-charset decode string-lines [
+        gemini-charset decode split-lines [
             { [ pre get not ] [ "=>" ?head ] } 0&& [
                 swap gemini-link present over 2array PAGE push
                 PAGE length swap "[%s] %s\n" printf
@@ -101,14 +101,14 @@ CONSTANT: URL V{ }
 
 : gemini-go ( args -- )
     present [ DEFAULT-URL ] when-empty
-    { [ "://" over subseq? ] [ "gemini://" head? ] } 1||
+    { [ dup "://" subseq-of? ] [ "gemini://" head? ] } 1||
     [ "gemini://" prepend ] unless
     dup "gemini://" head? [
         [ add-history ] [ add-stack ] [ gemini-get ] tri
     ] [ open-url ] if ;
 
 : gemini-reload ( -- )
-    HISTORY ?last gemini-go ;
+    URL ?first gemini-go ;
 
 : gemini-back ( -- )
     -1 stack-url [ gemini-get ] when* ;
@@ -118,12 +118,13 @@ CONSTANT: URL V{ }
 
 : gemini-up ( -- )
     URL ?first [
-        >url f >>query f >>anchor [ "../" url-append-path ] change-path
+        >url f >>query f >>anchor
+        [ dup "/" tail? "./../" "./" ? url-append-path ] change-path
         gemini-go
     ] when* ;
 
 : gemini-less ( -- )
-    "gemini.txt" temp-file dup exists? [
+    "gemini.txt" temp-file dup file-exists? [
         "less" swap 2array try-process
     ] [ drop ] if ;
 
@@ -140,7 +141,7 @@ CONSTANT: URL V{ }
     URL ?first [ >url "/" >>path gemini-go ] when* ;
 
 : gemini-shell ( args -- )
-    "|" split "gemini.txt" temp-file dup exists? [
+    "|" split "gemini.txt" temp-file dup file-exists? [
         "cat" swap 2array prefix run-pipeline drop
     ] [ 2drop ] if ;