+: <search-articles-action> ( -- action )
+ <page-action>
+
+ [
+ "search" param [ unicode:blank? ] trim
+ dup "search" set-value
+
+ [ f ] [
+ tokenize [
+ " " "\s+" replace "\\b" dup surround
+ "i" <optioned-regexp>
+ ] map
+ ] if-empty
+
+ [ f ] [
+ f <article> select-tuples
+ [ title>> ] sort-with
+ [ revision>> <revision> select-tuple ] map
+ swap '[ content>> _ [ first-match ] with all? ] filter
+ ] if-empty
+
+ [ "results" set-value ]
+ [ not "empty" set-value ] bi
+ ] >>init
+
+ { wiki "search" } >>template ;
+