mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-02 07:06:41 +03:00
Rewrite ++dedupe to roll instead of skim, and fix issue where it wasn't accounting for different cases correctly.
ie, it wasn't making sure that the found case was *actually* before the new request's case.
This commit is contained in:
parent
4671526a3e
commit
e2b056eff9
@ -696,34 +696,60 @@
|
|||||||
::
|
::
|
||||||
++ dedupe :: find existing alias
|
++ dedupe :: find existing alias
|
||||||
|= rov/rove ^- rove
|
|= rov/rove ^- rove
|
||||||
=; ros/(list rove) ?+(ros rov {^ $~} i.ros)
|
=; ron/(unit rove) (fall ron rov)
|
||||||
?- -.rov
|
?- -.rov
|
||||||
$sing ~
|
$sing ~
|
||||||
$next
|
$next
|
||||||
?~ (case-to-aeon:ze q.p.rov) ~
|
=+ aey=(case-to-aeon:ze q.p.rov)
|
||||||
%+ skim ~(tap in ~(key by qyx))
|
?~ aey ~
|
||||||
|= a=rove ^- ?
|
%+ roll ~(tap in ~(key by qyx))
|
||||||
?& ?=($next -.a)
|
|= {hav/rove res/(unit rove)}
|
||||||
=(p.a p.rov(q q.p.a))
|
?^ res res
|
||||||
?=(^ (case-to-aeon:ze q.p.a))
|
=- ?:(- `hav ~)
|
||||||
|
?& ?=($next -.hav)
|
||||||
|
=(p.hav p.rov(q q.p.hav))
|
||||||
|
::
|
||||||
|
:: only a match if this request is before
|
||||||
|
:: or at our starting case.
|
||||||
|
=+ hay=(case-to-aeon:ze q.p.hav)
|
||||||
|
?~(hay | (lte u.hay u.aey))
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
$mult
|
$mult
|
||||||
?~ (case-to-aeon:ze q.p.rov) ~
|
=+ aey=(case-to-aeon:ze q.p.rov)
|
||||||
%+ skim ~(tap in ~(key by qyx))
|
?~ aey ~
|
||||||
|= a=rove ^- ?
|
%+ roll ~(tap in ~(key by qyx))
|
||||||
?& ?=($mult -.a)
|
|= {hav/rove res/(unit rove)}
|
||||||
=(p.a p.rov(q q.p.a))
|
?^ res res
|
||||||
?=(^ (case-to-aeon:ze q.p.a))
|
=- ?:(- `hav ~)
|
||||||
|
?& ?=($mult -.hav)
|
||||||
|
=(p.hav p.rov(q q.p.hav))
|
||||||
|
::
|
||||||
|
:: only a match if this request is before
|
||||||
|
:: or at our starting case, and it has been
|
||||||
|
:: tested at least that far.
|
||||||
|
=+ hay=(case-to-aeon:ze q.p.hav)
|
||||||
|
?& ?=(^ hay)
|
||||||
|
(lte u.hay u.aey)
|
||||||
|
?=(^ q.hav)
|
||||||
|
(gte u.q.hav u.aey)
|
||||||
|
==
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
$many
|
$many
|
||||||
?~ (case-to-aeon:ze p.q.rov) ~
|
=+ aey=(case-to-aeon:ze p.q.rov)
|
||||||
%+ skim ~(tap in ~(key by qyx))
|
?~ aey ~
|
||||||
|= a=rove ^- ?
|
%+ roll ~(tap in ~(key by qyx))
|
||||||
?& ?=($many -.a)
|
|= {hav/rove res/(unit rove)}
|
||||||
=(a rov(p.q p.q.a))
|
?^ res res
|
||||||
?=(^ (case-to-aeon:ze p.q.a))
|
=- ?:(- `hav ~)
|
||||||
|
?& ?=($many -.hav)
|
||||||
|
=(hav rov(p.q p.q.hav))
|
||||||
|
::
|
||||||
|
:: only a match if this request is before
|
||||||
|
:: or at our starting case.
|
||||||
|
=+ hay=(case-to-aeon:ze p.q.hav)
|
||||||
|
?~(hay | (lte u.hay u.aey))
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
|
Loading…
Reference in New Issue
Block a user