blob: 7e4332738c43d8fa2ca4a54d3636f2b8be778644 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
/- boke, tp=trill-post, cnt=contact
/+ kaji, fetch-lib=fetch, plib=trill-utils, const=constants, sr=sortug, lib=boke
/= index /web/index
/= search /web/search/search
/= subscribe /web/subscribe
|_ [rl=req-line:kaji s=state:boke =bowl:gall]
+* fetch ~(. fetch-lib [s bowl])
srch ~(. search [s bowl])
++ eyre-bail (error-response:kaji 404)
++ manx-bail (error-page:kaji 404)
::
++ $ ^- eyre-res:kaji
=/ p pat.rl ::?. mob.rl pat.rl [%m pat.rl]
?. (is-subscribed:lib src.bowl) nudge
~& serving-search=rl(pat p)
?+ p eyre-bail
~ main
[%f ~] (search-fragment par.rl)
==
++ nudge
:- %page
=/ sub ~(. subscribe src.bowl)
=/ nudgep (nudge:sub "Search")
(index ~[nudgep] bowl)
++ main
:- %page
~& >> params=~(tap by par.rl)
=/ args parse-params
~& args=args
=/ page ?~ args init:srch
=/ res (search:fetch u.args)
(page:srch u.args res)
(index ~[page] bowl)
++ search-fragment
|= pmap=(map @t @t)
:- %html
=/ args parse-params
~& args=args
?~ args manx-bail
=/ res (search:fetch u.args)
(results:srch u.args res)
:: ++ inline-search
:: |= ssection=@t
:: =/ sec ((soft section) ssection)
:: ?~ sec bail
:: =/ args (parse-params par.rl)
:: ~& args=args
:: ?~ args bail
:: =/ res (search:fetch u.sec u.args)
:: (results:srch [u.sec u.args] res)
:: ++ dated-search
:: |= [ssection=@t date=@t]
:: =/ sec ((soft section) ssection)
:: ?~ sec bail
:: =/ interval=@dr
:: ?: .=('day' date) ~d1
:: ?: .=('week' date) ~d7
:: ?: .=('month' date) ~d30
:: ?: .=('year' date) ~d365 ~s1
:: ?: .=(~s1 interval) bail
:: =/ args (parse-params par.rl)
:: ~& args=args
:: ?~ args bail
:: =/ req=page-req:tp [(some (sub now.bowl interval)) ~ search-page-size:const]
:: =/ res (search:fetch u.sec query.u.args tags.u.args req)
:: (results:srch [u.sec u.args] res)
:: =/ sec (section:srch section)
:: =/ args (parse-params:srch par.rl)
:: ?~ args inline-search-error
:: =/ res (fetch-results:srch sec query.u.args req.u.args)
:: ?~ res inline-search-error
:: =/ =marl (res-to-marl:srch sec query.u.args u.res)
:: ;div
:: ;* marl
:: ==
:: ++ inline-search-error
:: %- serve-html:kaji :_ .n %- add-error:kaji
:: %+ alert:kaji "An error ocurred" 3.000
+$ section $?(%blog %comments %chat %threads %replies)
+$ pars [=section query=@t tags=(list @t) req=page-req:tp]
++ parse-params ^- (unit pars)
=/ pmap par.rl
=/ query (~(get by pmap) 'query') ?~ query ~
?: .=(u.query '') ~
:: =/ ts (~(get by pmap) 'tags') ?~ ts ~
=/ =section
=/ ssec (~(get by pmap) 'section') ?~ ssec %blog
=/ tsec ((soft section) u.ssec) ?~ tsec %blog u.tsec
=/ sdr (~(get by pmap) 'interval')
=/ r=page-req:tp [~ ~ search-page-size:const]
=. r ?. ?=(^ sdr) r
=/ interval=@dr
?: .=('day' u.sdr) ~d1
?: .=('week' u.sdr) ~d7
?: .=('month' u.sdr) ~d30
?: .=('year' u.sdr) ~d365 ~s0
?: .=(interval 0) r
r(newer (some (sub now.bowl interval)))
=/ o (~(get by pmap) 'after')
=/ n (~(get by pmap) 'before')
=/ c (~(get by pmap) 'count')
=? older.r ?=(^ o) (slaw:parsing:sr %uw u.o)
=? newer.r ?=(^ n) (slaw:parsing:sr %uw u.n)
=. count.r ?~ c count.r
=/ cc (slaw %ud u.c)
?~ cc count.r u.cc
%- some
[section u.query ~ r]
--
|