mirror of
https://github.com/urbit/shrub.git
synced 2024-12-30 15:44:03 +03:00
94 lines
2.0 KiB
Plaintext
94 lines
2.0 KiB
Plaintext
:: link: social bookmarking
|
|
::
|
|
:: link operates on the core structure of "pages", which are URLs saved at a
|
|
:: specific time with a specific title.
|
|
:: submissions, then, are pages received from a specific ship.
|
|
::
|
|
|%
|
|
:: primitives
|
|
::
|
|
+$ url @t
|
|
+$ site @t :: domain, host, etc.
|
|
:: +page: a saved URL with timestamp and custom title
|
|
::
|
|
+$ page
|
|
$: title=@t
|
|
=url
|
|
=time
|
|
==
|
|
:: +submission: a page saved by a ship
|
|
::
|
|
+$ submission
|
|
$: =ship
|
|
page
|
|
==
|
|
:: +note: a comment on some url
|
|
::
|
|
+$ note
|
|
$: =time
|
|
udon=@t
|
|
==
|
|
:: +comment: a comment by a ship on some url
|
|
::
|
|
+$ comment
|
|
$: =ship
|
|
note
|
|
==
|
|
:: lists, reverse chronological / newest first
|
|
::
|
|
+$ pages (list page)
|
|
+$ submissions (list submission)
|
|
+$ notes (list note)
|
|
+$ comments (list comment)
|
|
::
|
|
:: state builder
|
|
::
|
|
++ per-path-url
|
|
|$ [value]
|
|
(map path (map url value))
|
|
::
|
|
:: +action: local actions
|
|
::
|
|
+$ action
|
|
$% :: user actions
|
|
::
|
|
:: %save: save page to path on our ship
|
|
::
|
|
[%save =path title=@t =url]
|
|
:: %note: save a note for a url
|
|
::
|
|
[%note =path =url udon=@t]
|
|
:: %seen: mark item as read (~ for all in path)
|
|
::
|
|
[%seen =path url=(unit url)]
|
|
:: hook actions
|
|
::
|
|
:: %hear: hear about page at path on other ship
|
|
::
|
|
[%hear =path submission]
|
|
:: %read: hear about note on url from ship
|
|
::
|
|
[%read =path =url comment]
|
|
==
|
|
::
|
|
:: +initial: local result
|
|
::
|
|
+$ initial
|
|
$% [%local-pages pages=(map path pages)]
|
|
[%submissions submissions=(map path submissions)]
|
|
[%annotations notes=(per-path-url notes)]
|
|
[%discussions comments=(per-path-url comments)]
|
|
==
|
|
:: +update: local updates
|
|
::
|
|
::NOTE we include paths/urls to support the "subscribed to all" case
|
|
::
|
|
+$ update
|
|
$% [%local-pages =path =pages]
|
|
[%submissions =path =submissions]
|
|
[%annotations =path =url =notes]
|
|
[%discussions =path =url =comments]
|
|
[%observation =path urls=(set url)]
|
|
==
|
|
--
|