summaryrefslogtreecommitdiff
path: root/desk/sur/trill/post.hoon
blob: 78c5e1a72d77f985bbebb71d01e4a276ff6f1d2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/-  gate=trill-gate
/+  mp=mop-extensions
|%
+$  id  @da
+$  pid  [=ship =id]
:: anon post type?
+$  tag  @t
+$  gfeed  ((mop pid post) ggth)
++  ggth   |=([[shipa=@p a=time] [shipb=@p b=time]] (gth a b))
++  gorm   ((on pid post) ggth)
++  torm   ((on pid thread) ggth)
++  porm   ((on pid pid) ggth)
++  gorrm  ((mp pid post) ggth)
+$  feed   ((mop id post) gth)
++  orm    ((on id post) gth)
+$  full-graph  ((mop pid full-node) ggth)
++  form  ((on pid full-node) ggth)
::  instead of using this I'm just gonna jam old names
+$  perms  [read=lock:gate write=lock:gate]
+$  cursor  (unit id)
+$  page-req  [newer=cursor older=cursor count=@ud]
+$  full-node  [p=post children=$~(~ full-graph)]
+$  cpage  [p=(list post) top=@ud bot=@ud]
+$  spage  [p=(list post) page-req]
+$  page  [p=(list full-node) page-req]
+$  pfilter  $-(=post ?)
+$  tfilter  $-(=thread ?)
+$  bfilter  $-([=thread =post] ?)  ::  search filter
+$  tpage  [p=(list thread) page-req]
+$  thread
  $:  =pid
      replies=(list pid)  ::  key should be the head of this list
      title=@t
      =path
      tags=(set tag)
      snip=content-list
  ==
+$  post
  $:  =id
      title=@t
      author=ship
      thread=pid      ::  this is the key of the threads table!
      parent=(unit pid)
      children=(set pid)
      contents=content-map
      =perms
      =engagement
      =signature
      tags=(set tag) ::TODO  make sure it's not infinite
  ==
::
+$  signature   [p=@uvH q=ship r=life]
+$  engagement
  $:
    =reacts    quoted=(set signed-pid)
    shared=(set signed-pid)
  ==
+$  signed-pid  [=signature =pid]
+$  react  @t
+$  reacts  (map ship signed-react)
+$  signed-react  [p=react q=signature]


+$  content-map  ((mop time content-list) gth)
++  corm  ((on time content-list) gth)
+$  heading  $?(%h1 %h2 %h3 %h4 %h5 %h6)
+$  content-list  (list block)
+$  paragraph  (list inline)
:: man tables are a rabbit hole. we'll get to it
++  table
|^        [%table headers=(list cell) rows=(list row)]
+$  row   (list cell)
+$  cell  content-list
--
+$  clist  [%list p=(list li) ordered=?]
+$  li     content-list
+$  block
  $%  [%paragraph p=paragraph]
      [%blockquote p=paragraph]
      :: table  
      clist
      [%heading p=cord q=heading]
      [%media =media]
      [%codeblock code=cord lang=cord]
      [%eval hoon=cord]
      [%tasklist p=(list task)]
      ::
      [%ref app=term =ship =path]
      [%json origin=term content=@t]
  ==
+$  task  [p=paragraph q=?]
+$  poll-opt  [option=cord votes=@]
+$  media
  $%  [%images p=(list [url=@t caption=@t])]
      [%video p=cord]
      [%audio p=cord]
  ==
+$  inline
  $%  [%text p=cord]
      [%italic p=cord]
      [%bold p=cord]
      [%strike p=cord]
      [%codespan p=cord]
      [%link href=cord show=cord]
      [%break ~]
      :: not strictly markdown
      [%ship p=ship]
      [%date p=@da]
      [%note id=cord text=(list inline)] :: footnotes and so on
      [%underline p=cord]
      [%sup p=cord]
      [%sub p=cord]
      [%ruby p=cord q=cord]
  ==
--