USING: accessors arrays assocs combinators fry hashtables
io.pathnames io.sockets kernel lexer make math.parser
namespaces peg.ebnf present sequences splitting strings
-strings.parser urls.encoding vocabs.loader ;
+strings.parser urls.encoding vocabs vocabs.loader ;
IN: urls
[ protocol>> protocol-port ]
tri or <inet>
] [ protocol>> ] bi
- secure-protocol? [ >secure-addr ] when ;
+ secure-protocol? [ "urls.secure" ensure-vocab-loaded >secure-addr ] when ;
: set-url-addr ( url addr -- url )
[ host>> >>host ] [ port>> >>port ] bi ;
: load-vocab ( name -- vocab )
[ require ] [ lookup-vocab ] bi ;
+
+: ensure-vocab-loaded ( name -- )
+ dup lookup-vocab [ drop ] [ require ] if ;