]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/gemini/ui/ui.factor
core: subseq-index? -> subseq-of?
[factor.git] / extra / gemini / ui / ui.factor
index a3f8cdb1f7afa5df0856ed590b184f9f6d3da3ec..a9f3ed1bf99107ec62800447f2ab068159014d21 100644 (file)
@@ -28,8 +28,11 @@ M: gemini-gadget model-changed
     [ value>> present ]
     [ url-field>> editor>> set-editor-string ] bi* ;
 
+: ?gemini-url ( obj -- url )
+    present dup "://" subseq-of? [ "gemini://" prepend ] unless >url ;
+
 : show-gemini ( url gemini-gadget -- )
-    [ [ >url ] [ f ] if* ] dip
+    [ [ ?gemini-url ] [ f ] if* ] dip
     over [ protocol>> "gemini" = ] [ t ] if* [
         [
             2dup control-value =
@@ -40,7 +43,7 @@ M: gemini-gadget model-changed
     ] [ drop open-url ] if ;
 
 : <url-field> ( gemini-gadget -- field )
-    '[ >url _ show-gemini ] <action-field>
+    '[ _ show-gemini ] <action-field>
         "Gemini URL" >>default-text
         white-interior ;
 
@@ -81,9 +84,8 @@ M: gemini-gadget model-changed
 : com-up ( gemini -- )
     [
         control-value dup [
-            f >>query
-            f >>anchor
-            [ "/" ?tail drop "/" split1-last drop "/" append ] change-path
+            f >>query f >>anchor
+            [ dup "/" tail? "./../" "./" ? url-append-path ] change-path
         ] when
     ]
     [ show-gemini ] bi ;