mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-01 11:33:41 +03:00
custody: initial commit
This commit is contained in:
parent
8dca89f6f8
commit
754fd61e1b
16
pkg/arvo/gen/sql.hoon
Normal file
16
pkg/arvo/gen/sql.hoon
Normal file
@ -0,0 +1,16 @@
|
||||
/+ *custody, *csv
|
||||
|= [=key=path =loc=path]
|
||||
%. ~
|
||||
%- print-rows
|
||||
%+ select
|
||||
!, *hoon
|
||||
:* (need ship.left)
|
||||
physical-form.left
|
||||
==
|
||||
%^ join
|
||||
(load:keys key-path)
|
||||
(load:locations loc-path)
|
||||
!, *hoon
|
||||
?& !=(~ ship.left)
|
||||
=(location.left location.right)
|
||||
==
|
78
pkg/arvo/lib/csv.hoon
Normal file
78
pkg/arvo/lib/csv.hoon
Normal file
@ -0,0 +1,78 @@
|
||||
|%
|
||||
++ text
|
||||
%+ cook
|
||||
|= =tape
|
||||
(crip tape)
|
||||
;~ pose
|
||||
(cook tape soil:vast)
|
||||
non-quote-text
|
||||
==
|
||||
::
|
||||
++ non-quote-text
|
||||
(star ;~(less com qit))
|
||||
::
|
||||
++ parse
|
||||
|* cols=(list rule)
|
||||
%+ ifix
|
||||
:- ;~(sfix ;~(less (just `@`10) (star prn)) (just `@`10))
|
||||
(just `@`10)
|
||||
(more (just `@`10) (parse-line cols))
|
||||
::
|
||||
++ parse-line
|
||||
|* cols=(list rule)
|
||||
?~ cols
|
||||
(easy ~)
|
||||
?~ t.cols
|
||||
i.cols
|
||||
;~ plug
|
||||
i.cols
|
||||
;~(pfix com $(cols t.cols))
|
||||
==
|
||||
::
|
||||
:: inner join
|
||||
::
|
||||
++ join
|
||||
=/ name-side (ream '[left=- right=+]')
|
||||
|= [left=(list vase) rite=(list vase) =hoon]
|
||||
^- (list vase)
|
||||
|- ^- (list vase)
|
||||
=* left-loop $
|
||||
?~ left
|
||||
~
|
||||
=/ rote rite
|
||||
|- ^- (list vase)
|
||||
=* rite-loop $
|
||||
?~ rite
|
||||
left-loop(left t.left, rite rote)
|
||||
=/ slopped-row (slap (slop i.left i.rite) name-side)
|
||||
=/ val (slap (slop slopped-row !>(..zuse)) hoon)
|
||||
?. =(%& q.val)
|
||||
rite-loop(rite t.rite)
|
||||
:- slopped-row
|
||||
rite-loop(rite t.rite)
|
||||
::
|
||||
:: filter
|
||||
::
|
||||
++ where
|
||||
|= [rows=(list vase) =hoon]
|
||||
^- (list vase)
|
||||
%+ skim rows
|
||||
|= =vase
|
||||
=/ val (slap vase hoon)
|
||||
=(%& q.val)
|
||||
::
|
||||
:: select
|
||||
::
|
||||
++ select
|
||||
|= [=hoon rows=(list vase)]
|
||||
^- (list vase)
|
||||
%+ turn rows
|
||||
|= =vase
|
||||
(slap (slop vase !>(..zuse)) hoon)
|
||||
::
|
||||
:: pretty-print rows
|
||||
::
|
||||
++ print-rows
|
||||
|= rows=(list vase)
|
||||
(slog (turn rows sell))
|
||||
--
|
100
pkg/arvo/lib/custody.hoon
Normal file
100
pkg/arvo/lib/custody.hoon
Normal file
@ -0,0 +1,100 @@
|
||||
/+ csv
|
||||
|%
|
||||
++ fed ;~(pfix sig fed:ag)
|
||||
++ parse-enum
|
||||
|* form=mold
|
||||
%- sear :_ text:csv
|
||||
|= =cord
|
||||
((soft form) cord)
|
||||
::
|
||||
++ keys
|
||||
=< form
|
||||
|%
|
||||
+$ form
|
||||
$: =location:locations
|
||||
ship=(unit ship)
|
||||
=role
|
||||
shard=(unit shard)
|
||||
copy=(unit copy)
|
||||
=physical-form
|
||||
note=cord
|
||||
formal-ship=(unit ship)
|
||||
==
|
||||
::
|
||||
+$ role
|
||||
$? %empty
|
||||
%other
|
||||
%master
|
||||
%own
|
||||
%spawn
|
||||
%manage
|
||||
%vote
|
||||
%transfer
|
||||
==
|
||||
::
|
||||
+$ shard @udshard
|
||||
+$ copy ?(%a %b %c)
|
||||
+$ physical-form ?(%usb %dvd %paper)
|
||||
++ parsers
|
||||
:~ text:csv
|
||||
(punt fed)
|
||||
(parse-enum role)
|
||||
(punt dim:ag)
|
||||
(punt (parse-enum copy))
|
||||
(parse-enum physical-form)
|
||||
text:csv
|
||||
(punt fed)
|
||||
==
|
||||
::
|
||||
++ parse
|
||||
%+ cook
|
||||
|* arg=*
|
||||
^- (list form)
|
||||
arg
|
||||
(parse:csv parsers)
|
||||
::
|
||||
++ load-forms
|
||||
|= =path
|
||||
^- (list form)
|
||||
(rash (of-wain:format .^(wain %cx path)) parse)
|
||||
::
|
||||
++ load
|
||||
|= =path
|
||||
^- (list vase)
|
||||
(turn (load-forms path) |=(=form !>(form)))
|
||||
--
|
||||
::
|
||||
++ locations
|
||||
=< form
|
||||
|%
|
||||
+$ form
|
||||
$: =location
|
||||
description=@t
|
||||
=physical-location
|
||||
==
|
||||
+$ location @tlocation
|
||||
+$ physical-location @tphysicallocation
|
||||
++ parsers
|
||||
:~ text:csv
|
||||
text:csv
|
||||
text:csv
|
||||
==
|
||||
::
|
||||
++ parse
|
||||
%+ cook
|
||||
|* arg=*
|
||||
^- (list form)
|
||||
arg
|
||||
(parse:csv parsers)
|
||||
::
|
||||
++ load-forms
|
||||
|= =path
|
||||
^- (list form)
|
||||
(rash (of-wain:format .^(wain %cx path)) parse)
|
||||
::
|
||||
++ load
|
||||
|= =path
|
||||
^- (list vase)
|
||||
(turn (load-forms path) |=(=form !>(form)))
|
||||
--
|
||||
--
|
Loading…
Reference in New Issue
Block a user