2020-06-10 21:45:00 +03:00
|
|
|
/- sur=graph-store, pos=post
|
2020-06-10 23:47:18 +03:00
|
|
|
/+ res=resource, *or-map
|
2020-06-05 22:22:36 +03:00
|
|
|
=< [sur .]
|
|
|
|
=< [pos .]
|
|
|
|
=, sur
|
|
|
|
=, pos
|
|
|
|
|%
|
2020-06-11 22:30:19 +03:00
|
|
|
:: NOTE: move these functions to zuse
|
2020-06-11 21:25:49 +03:00
|
|
|
++ nu :: parse number as hex
|
|
|
|
|= jon/json
|
|
|
|
?> ?=({$s *} jon)
|
|
|
|
(rash p.jon hex)
|
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
++ re :: recursive reparsers
|
|
|
|
|* {gar/* sef/_|.(fist:dejs-soft:format)}
|
|
|
|
|= jon/json
|
|
|
|
^- (unit _gar)
|
|
|
|
=- ~! gar ~! (need -) -
|
|
|
|
((sef) jon)
|
|
|
|
::
|
|
|
|
++ dank :: tank
|
|
|
|
^- $-(json (unit tank))
|
|
|
|
=, ^? dejs-soft:format
|
|
|
|
%+ re *tank |. ~+
|
|
|
|
%- of :~
|
|
|
|
leaf+sa
|
|
|
|
palm+(ot style+(ot mid+sa cap+sa open+sa close+sa ~) lines+(ar dank) ~)
|
|
|
|
rose+(ot style+(ot mid+sa open+sa close+sa ~) lines+(ar dank) ~)
|
|
|
|
==
|
|
|
|
::
|
2020-06-10 23:47:18 +03:00
|
|
|
++ orm ((or-map atom node) lth)
|
|
|
|
++ orm-log ((or-map time action) lth)
|
|
|
|
::
|
2020-06-05 22:22:36 +03:00
|
|
|
++ enjs
|
|
|
|
=, enjs:format
|
|
|
|
|%
|
|
|
|
++ update
|
|
|
|
|= upd=^update
|
|
|
|
^- json
|
2020-06-10 21:45:00 +03:00
|
|
|
?> ?=(%0 -.upd)
|
|
|
|
|^ (frond %graph-update (pairs ~[(encode +.upd)]))
|
2020-06-05 22:22:36 +03:00
|
|
|
::
|
|
|
|
++ encode
|
2020-06-10 21:45:00 +03:00
|
|
|
|= upd=update-0
|
2020-06-05 22:22:36 +03:00
|
|
|
^- [cord json]
|
2020-06-10 21:45:00 +03:00
|
|
|
?- -.upd
|
|
|
|
%keys
|
|
|
|
[%keys [%a (turn ~(tap in resources.upd) enjs:res)]]
|
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
:: %add-graph
|
|
|
|
:: :- %add-graph
|
|
|
|
:: %- pairs
|
|
|
|
:: :~ [%resource (enjs:res resource.upd)]
|
|
|
|
:: [%graph (graph graph.upd)]
|
|
|
|
:: ==
|
2020-06-10 21:45:00 +03:00
|
|
|
::
|
|
|
|
%remove-graph
|
|
|
|
[%remove-graph (enjs:res resource.upd)]
|
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
:: %add-nodes
|
|
|
|
:: :- %add-nodes
|
|
|
|
:: %- pairs
|
|
|
|
:: :~ [%resource (enjs:res resource.upd)]
|
|
|
|
:: [%nodes (nodes nodes.upd)]
|
|
|
|
:: ==
|
2020-06-10 21:45:00 +03:00
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
:: %remove-nodes
|
|
|
|
:: :- %remove-nodes
|
|
|
|
:: %- pairs
|
|
|
|
:: :~ [%resource (enjs:res resource.upd)]
|
|
|
|
:: [%indices (indices indices.upd)]
|
|
|
|
:: ==
|
|
|
|
:: ::
|
2020-06-10 21:45:00 +03:00
|
|
|
%add-signatures
|
|
|
|
:- %add-signatures
|
|
|
|
%- pairs
|
|
|
|
:~ [%uid (uid uid.upd)]
|
|
|
|
[%signatures (signatures signatures.upd)]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
%remove-signatures
|
|
|
|
:- %remove-signatures
|
|
|
|
%- pairs
|
|
|
|
:~ [%uid (uid uid.upd)]
|
|
|
|
[%signatures (signatures signatures.upd)]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
%add-tag
|
|
|
|
:- %add-tag
|
|
|
|
%- pairs
|
|
|
|
:~ [%term s+term.upd]
|
|
|
|
[%resource (enjs:res resource.upd)]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
%remove-tag
|
|
|
|
:- %remove-tag
|
|
|
|
%- pairs
|
|
|
|
:~ [%term s+term.upd]
|
|
|
|
[%resource (enjs:res resource.upd)]
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ graph
|
|
|
|
|= g=^graph
|
|
|
|
^- json
|
2020-06-10 23:47:18 +03:00
|
|
|
:- %a
|
|
|
|
%+ turn (tap:orm g)
|
|
|
|
|= [a=atom n=^node]
|
|
|
|
^- json
|
|
|
|
%- pairs
|
|
|
|
:~ [%key (numb a)]
|
|
|
|
[%node (node n)]
|
|
|
|
==
|
2020-06-10 21:45:00 +03:00
|
|
|
::
|
|
|
|
++ index
|
|
|
|
|= i=^index
|
|
|
|
^- json
|
2020-06-10 23:47:18 +03:00
|
|
|
=/ j=^tape ""
|
|
|
|
|-
|
|
|
|
?~ i
|
|
|
|
[%s (crip j)]
|
|
|
|
=/ k=json (numb i.i)
|
|
|
|
?> ?=(%n -.k)
|
|
|
|
%_ $
|
|
|
|
i t.i
|
|
|
|
j (weld j (weld "/" (trip +.k)))
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ node
|
|
|
|
|= n=^node
|
|
|
|
^- json
|
|
|
|
%- pairs
|
|
|
|
:~ [%post (post post.n)]
|
|
|
|
:- %children
|
|
|
|
?- -.children.n
|
|
|
|
%empty ~
|
|
|
|
%graph (graph +.children.n)
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ post
|
|
|
|
|= p=^post
|
|
|
|
^- json
|
|
|
|
%- pairs
|
|
|
|
:~ [%author (ship author.p)]
|
|
|
|
[%index (index index.p)]
|
|
|
|
[%time-sent (time time-sent.p)]
|
|
|
|
[%contents [%a (turn contents.p content)]]
|
|
|
|
[%hash ?~(hash.p ~ s+(scot %ux u.hash.p))]
|
|
|
|
[%signatures (signatures signatures.p)]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ content
|
|
|
|
|= c=^content
|
|
|
|
^- json
|
|
|
|
?- -.c
|
|
|
|
%text (frond %text s+text.c)
|
|
|
|
%url (frond %url s+url.c)
|
|
|
|
%reference (frond %reference (uid uid.c))
|
|
|
|
%code
|
|
|
|
%+ frond %code
|
|
|
|
%- pairs
|
|
|
|
:- [%expression s+expression.c]
|
|
|
|
:_ ~
|
|
|
|
:- %output
|
|
|
|
:: virtualize output rendering, +tank:enjs:format might crash
|
|
|
|
::
|
|
|
|
=/ result=(each (list json) tang)
|
|
|
|
(mule |.((turn output.c tank)))
|
|
|
|
?- -.result
|
|
|
|
%& a+p.result
|
|
|
|
%| a+[a+[%s '[[output rendering error]]']~]~
|
|
|
|
==
|
|
|
|
==
|
2020-06-10 21:45:00 +03:00
|
|
|
::
|
|
|
|
++ nodes
|
2020-06-10 23:47:18 +03:00
|
|
|
|= m=(map ^index ^node)
|
|
|
|
^- json
|
|
|
|
:- %a
|
|
|
|
%+ turn ~(tap by m)
|
|
|
|
|= [n=^index o=^node]
|
2020-06-10 21:45:00 +03:00
|
|
|
^- json
|
2020-06-10 23:47:18 +03:00
|
|
|
%- pairs
|
|
|
|
:~ [%index (index n)]
|
|
|
|
[%node (node o)]
|
|
|
|
==
|
2020-06-10 21:45:00 +03:00
|
|
|
::
|
|
|
|
++ indices
|
|
|
|
|= i=(set ^index)
|
|
|
|
^- json
|
2020-06-10 23:47:18 +03:00
|
|
|
[%a (turn ~(tap in i) index)]
|
2020-06-10 21:45:00 +03:00
|
|
|
::
|
|
|
|
++ uid
|
|
|
|
|= u=^uid
|
|
|
|
^- json
|
2020-06-10 23:47:18 +03:00
|
|
|
%- pairs
|
|
|
|
:~ [%resource (enjs:res resource.u)]
|
|
|
|
[%index (index index.u)]
|
|
|
|
==
|
2020-06-10 21:45:00 +03:00
|
|
|
::
|
|
|
|
++ signatures
|
|
|
|
|= s=^signatures
|
|
|
|
^- json
|
2020-06-10 23:47:18 +03:00
|
|
|
[%a (turn ~(tap in s) signature)]
|
|
|
|
::
|
|
|
|
++ signature
|
|
|
|
|= s=^signature
|
|
|
|
^- json
|
|
|
|
%- pairs
|
|
|
|
:~ [%signature s+(scot %ux p.s)]
|
|
|
|
[%ship (ship q.s)]
|
|
|
|
[%life (numb r.s)]
|
|
|
|
==
|
2020-06-05 22:22:36 +03:00
|
|
|
--
|
|
|
|
--
|
|
|
|
::
|
|
|
|
++ dejs
|
|
|
|
=, dejs:format
|
|
|
|
|%
|
|
|
|
++ action
|
2020-06-11 22:30:19 +03:00
|
|
|
|= jon=json
|
2020-06-05 22:22:36 +03:00
|
|
|
^- ^action
|
2020-06-11 21:25:49 +03:00
|
|
|
:- %0
|
|
|
|
^- action-0
|
2020-06-11 22:30:19 +03:00
|
|
|
=< (decode jon)
|
2020-06-11 21:25:49 +03:00
|
|
|
|%
|
|
|
|
++ decode
|
|
|
|
%- of
|
2020-06-11 22:30:19 +03:00
|
|
|
:~
|
|
|
|
:: [%add-graph add-graph]
|
2020-06-11 21:25:49 +03:00
|
|
|
[%remove-graph remove-graph]
|
2020-06-11 22:30:19 +03:00
|
|
|
:: [%add-nodes add-nodes]
|
|
|
|
:: [%remove-nodes remove-nodes]
|
|
|
|
:: [%add-signatures add-signatures]
|
2020-06-11 21:25:49 +03:00
|
|
|
[%remove-signatures remove-signatures]
|
2020-06-11 22:30:19 +03:00
|
|
|
[%add-tag add-tag]
|
|
|
|
[%remove-tag remove-tag]
|
2020-06-11 21:25:49 +03:00
|
|
|
==
|
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
:: ++ add-graph
|
|
|
|
:: %- ot
|
|
|
|
:: :~ [%resource dejs:res]
|
|
|
|
:: [%graph !!]
|
|
|
|
:: ==
|
2020-06-11 21:25:49 +03:00
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
++ remove-graph (ot [%resource dejs:res]~)
|
2020-06-11 21:25:49 +03:00
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
:: ++ add-nodes
|
|
|
|
:: %- ot
|
|
|
|
:: :~ [%resource dejs:res]
|
|
|
|
:: [%nodes nodes]
|
|
|
|
:: ==
|
2020-06-11 21:25:49 +03:00
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
:: ++ nodes (op index node)
|
2020-06-11 21:25:49 +03:00
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
:: ++ node
|
|
|
|
:: %- ot
|
|
|
|
:: :~ [%post post]
|
|
|
|
:: [%children (ot [%empty ul]~)]
|
|
|
|
:: ==
|
|
|
|
:: ::
|
|
|
|
:: ++ post
|
|
|
|
:: %- ot
|
|
|
|
:: :~ [%author (su ;~(pfix sig fed:ag))]
|
|
|
|
:: [%index index]
|
|
|
|
:: [%time-sent di]
|
|
|
|
:: [%contents (ar content)]
|
|
|
|
:: [%hash (mu nu)]
|
|
|
|
:: [%signatures (as signature)]
|
|
|
|
:: ==
|
|
|
|
:: ::
|
|
|
|
:: ++ content
|
|
|
|
:: %- of
|
|
|
|
:: :~ [%text so]
|
|
|
|
:: [%url so]
|
|
|
|
:: [%reference uid]
|
|
|
|
:: [%code eval]
|
|
|
|
:: ==
|
|
|
|
:: ::
|
|
|
|
:: ++ eval
|
|
|
|
:: |= a=^json
|
|
|
|
:: ^- [cord (list tank)]
|
|
|
|
:: =, ^? dejs-soft:format
|
|
|
|
:: =+ exp=((ot expression+so ~) a)
|
|
|
|
:: %- need
|
|
|
|
:: ?~ exp [~ '' ~]
|
|
|
|
:: :+ ~ u.exp
|
|
|
|
:: :: NOTE: when sending, if output is an empty list,
|
|
|
|
:: :: graph-store will evaluate
|
|
|
|
:: (fall ((ot output+(ar dank) ~) a) ~)
|
2020-06-11 21:25:49 +03:00
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
:: ++ remove-nodes
|
|
|
|
:: %- ot
|
|
|
|
:: :~ [%resource dejs:res]
|
|
|
|
:: [%indices (as index)]
|
|
|
|
:: ==
|
|
|
|
:: ::
|
2020-06-11 21:25:49 +03:00
|
|
|
++ add-signatures
|
|
|
|
%- ot
|
|
|
|
:~ [%uid uid]
|
|
|
|
[%signatures (as signature)]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ remove-signatures
|
|
|
|
%- ot
|
|
|
|
:~ [%uid uid]
|
|
|
|
[%signatures (as signature)]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ signature
|
|
|
|
%- ot
|
|
|
|
:~ [%hash nu]
|
|
|
|
[%ship (su ;~(pfix sig fed:ag))]
|
|
|
|
[%life ni]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ uid
|
|
|
|
%- ot
|
|
|
|
:~ [%resource dejs:res]
|
|
|
|
[%index index]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ index (su ;~(pfix net (more net dem)))
|
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
++ add-tag
|
2020-06-11 21:25:49 +03:00
|
|
|
%- ot
|
2020-06-11 22:30:19 +03:00
|
|
|
:~ [%term so]
|
2020-06-11 21:25:49 +03:00
|
|
|
[%resource dejs:res]
|
|
|
|
==
|
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
++ remove-tag
|
2020-06-11 21:25:49 +03:00
|
|
|
%- ot
|
2020-06-11 22:30:19 +03:00
|
|
|
:~ [%term so]
|
2020-06-11 21:25:49 +03:00
|
|
|
[%resource dejs:res]
|
|
|
|
==
|
|
|
|
--
|
2020-06-05 22:22:36 +03:00
|
|
|
--
|
2020-06-10 19:17:55 +03:00
|
|
|
::
|
2020-06-11 22:30:19 +03:00
|
|
|
::++ create
|
|
|
|
:: |_ [our=ship now=time]
|
|
|
|
:: ++ post
|
|
|
|
:: |= [=index contents=(list content)]
|
|
|
|
:: ^- ^post
|
|
|
|
:: :* our
|
|
|
|
:: index
|
|
|
|
:: now
|
|
|
|
:: contents
|
|
|
|
:: ~
|
|
|
|
:: *signatures
|
|
|
|
:: ==
|
|
|
|
:: --
|
|
|
|
::
|
2020-06-05 22:22:36 +03:00
|
|
|
--
|