@@ -12,7 +12,8 @@
1212 ==
1313+$ state-1
1414 $: %1
15− =opoints
15+ fopoints=opoints :: forward ordered points
16+ ropoints=opoints :: reversed ordered points, e.g. .~palnet-sampel
1617 ==
1718::
1819+$ spawned (jug ship ship)
@@ -114,26 +115,28 @@
114115++ get-nas .^(^state:naive %gx (scrio %azimuth /nas/noun))
115116++ put-in-opoints
116117 |= =ship
117− ^- _opoints
118− (put:ors opoints (to-q ship) ~)
118+ ^- _state
119+ =. fopoints
120+ (put:ors fopoints (to-q ship) ~)
121+ =. ropoints
122+ (put:ors ropoints (switch-words (to-q ship)) ~)
123+ state
119124++ on-naive-state
120125 |= nas=^state:naive
121126 ^- (quip card _state)
122127 =+ points=points.nas :: =points, eh?
123− =. opoints
124− |-
125− ^- _opoints
126− ?~ points opoints
127− =/ =ship -.n.points
128− :: traverse tree of points and add @ps to opoints with ^sein, you know
129− =. opoints (put-in-opoints ship)
130− $(points l.points, opoints $(points r.points))
131− `state
128+ :- ~
129+ |-
130+ ^- _state
131+ ?~ points state
132+ =/ =ship -.n.points
133+ =. state (put-in-opoints ship)
134+ $(points l.points, state $(points r.points))
132135::
133136++ on-naive-diff
134137 |= =diff:naive
135138 ^- (quip card _state)
136− =? opoints ?=([%tx [* * * %spawn ship *] *] diff)
139+ =? state ?=([%tx [* * * %spawn ship *] *] diff)
137140 %- put-in-opoints
138141 ship.tx.raw-tx.diff
139142 `state
@@ -143,21 +146,26 @@
143146 ^- ?
144147 ?= [%tx [* * * %spawn ship *] *] diff
145148::
149+++ get-unpoint-term
150+ |= ship-name=term
151+ .^(unpoint %gx (scrio %azimuth /point/[ship-name]/noun))
152+::
153+++ get-unpoint
154+ |= =ship
155+ (get-unpoint-term (scot %p ship))
156+::
146157++ get-point
147158 |= ship-name=term
148159 ^- point
149160 =/ =ship `@p`(slav %p ship-name)
150− =/ unpoint (get-unpoint ship-name)
151− :* unpoint
161+ =/ unpoint (get-unpoint-term ship-name)
162+ :* ship
163+ unpoint
152164 (spa-count ship)
153− (sponsor-chain unpoint)
154− (probable-dominion unpoint)
165+ (sponsor-chain ship unpoint)
166+ (probable-dominion ship unpoint)
155167 ==
156168::
157−++ get-unpoint
158− |= ship-name=term
159− .^(unpoint %gx (scrio %azimuth /point/[ship-name]/noun))
160−::
161169++ run-spawned-points
162170 |* [agg=mold targ=ship]
163171 |= f=$-([agg ship] agg)
@@ -191,21 +199,21 @@
191199 +(agg)
192200::
193201++ run-wildcard-search
194− |* [agg=mold search=search-full =page-info]
202+ |* [agg=mold search=search-full points=opoints =page-info]
195203 |= f=$-([agg @q] agg)
196204 ^- agg
197205 =/ s-syls search-syls.search
198206 ~& s-syls
199207 =/ s-opts search-opts.search
200− =+ =agg
208+ =| =agg
201209 =+ [llb=.~zod rrb=`@q`(sub (bex 32) 1)]
202210 =| agg-count=@
203211 |-
204212 ^- _agg
205− ?~ opoints
213+ ?~ points
206214 :: ~& "nothing here, going up"
207215 agg
208− =* n=@q `@`-.n.opoints
216+ =/ n=@q `@`-.n.points
209217 =/ lrb=@q ?: (gth n 0) (sub-d n 1) .~zod
210218 =/ rlb=@q (add-d n 1)
211219 =/ left-view (range-contains-search llb lrb s-opts)
@@ -213,41 +221,53 @@
213221 :: ~& "left side: {<?:(contains.left-view 'Y' 'N')>} {<llb>} - {<lrb>} contains {<s-opts>}"
214222 =/ right-view (range-contains-search rlb rrb s-opts)
215223 =? agg contains.left-view
216− $(opoints l.opoints, rrb lrb, s-opts opts.left-view)
224+ $(points l.points, rrb lrb, s-opts opts.left-view)
217225 =? agg (matches-search s-syls n)
218226 =/ fits (fits-on-page agg-count page-info)
219227 =. agg-count +(agg-count)
220228 ?: fits (f agg n) agg
221229 :: ~& "right side: {<?:(contains.right-view 'Y' 'N')>} {<rlb>} - {<rrb>} contains {<s-opts>}"
222230 =? agg contains.right-view
223− $(opoints r.opoints, llb rlb, s-opts opts.right-view)
231+ $(points r.points, llb rlb, s-opts opts.right-view)
224232 agg
225233::
226234++ search-opoints
227235 |= =search-text
228236 ^- (list ship)
229237 =/ =search-full (search-text-to-search-full search-text)
238+ =^ spoints search-full
239+ (maybe-reverse-search search-full fopoints ropoints)
230240 =/ results
231− %- (run-wildcard-search (list @q) search-full *page-info)
241+ %-
242+ (run-wildcard-search (list @q) search-full points.spoints *page-info)
232243 |= [agg=(list @q) result=@q]
233244 [result agg]
245+ =? results reversed.spoints
246+ (turn results switch-words)
234247 %- flop
235248 (turn results to-p)
236249::
237250++ sponsor-chain
238− |= =unpoint
239− ^- (list ship)
251+ |= [=ship =unpoint]
252+ ^- (list ^ship)
240253 ?~ unpoint ~
241254 =/ sponsor sponsor.net.u.unpoint
242255 ?. has.sponsor ~
243− [who.sponsor ~] :: todo: lookup parent
256+ =/ spon who.sponsor
257+ ?: =(spon ship) ~
258+ :- spon
259+ =/ spon-point (get-unpoint spon)
260+ $(ship spon, unpoint spon-point)
244261::
245262++ probable-dominion
246− |= =unpoint
263+ |= [=ship =unpoint]
247264 ^- dominion:naive
248265 ?^ unpoint
249266 dominion.u.unpoint
250− %l1 :: todo: lookup parent
267+ =/ parent (^sein:title ship)
268+ ?: =(parent ship) %l1
269+ =/ parent-point (get-unpoint parent)
270+ $(ship parent, unpoint parent-point)
251271::
252272++ read-doc
253273 |= =path