A structured procedural language w/ a Lisp runtime / Rust ATProto bridge, to build a working TUI Bsky client
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Adopt .spl extension for Superplan sources

+97 -7
+1 -7
.gitattributes
··· 1 1 # Superplan source files 2 - # Superplan source 3 2 *.spl linguist-language=Text 4 - 5 - # If you still have older files during transition 6 3 *.sp linguist-language=Text 7 4 8 - # Ignore generated build output in repo stats if ever committed by mistake 9 - bridge/target/** linguist-generated=true 10 - target/** linguist-generated=true 11 - 5 + # Generated files 12 6 bridge/target/** linguist-generated=true 13 7 target/** linguist-generated=true
+96
superplan/examples/home.spl
··· 1 + PROGRAM HOME 2 + 3 + STRING HANDLE 4 + STRING PASSWORD 5 + STRING CMD 6 + STRING TEXT 7 + STRING ACTOR 8 + JSON TL 9 + JSON PROFILE 10 + JSON ME 11 + 12 + PROCEDURE SHOW_HOME(JSON TL) 13 + BEGIN 14 + WRITE(JSON_STRING(JSON_GET(JSON_INDEX(JSON_GET(TL, "feed"), 0), "text"))) 15 + END 16 + 17 + PROCEDURE SHOW_PROFILE(JSON PROFILE) 18 + BEGIN 19 + WRITE("HANDLE:") 20 + WRITE(JSON_STRING(JSON_GET(PROFILE, "handle"))) 21 + WRITE("DISPLAY NAME:") 22 + WRITE(JSON_STRING(JSON_GET(PROFILE, "displayName"))) 23 + END 24 + 25 + PROCEDURE SHOW_WHOAMI(JSON ME) 26 + BEGIN 27 + WRITE("HANDLE:") 28 + WRITE(JSON_STRING(JSON_GET(ME, "handle"))) 29 + WRITE("DID:") 30 + WRITE(JSON_STRING(JSON_GET(ME, "did"))) 31 + WRITE("PDS:") 32 + WRITE(JSON_STRING(JSON_GET(ME, "pds"))) 33 + END 34 + 35 + PROCEDURE SHOW_HELP() 36 + BEGIN 37 + WRITE("AVAILABLE COMMANDS:") 38 + WRITE("HOME") 39 + WRITE("PROFILE") 40 + WRITE("POST") 41 + WRITE("WHOAMI") 42 + WRITE("HELP") 43 + WRITE("QUIT") 44 + END 45 + 46 + BEGIN 47 + WRITE("SUPERPLAN SKY") 48 + 49 + WRITE("HANDLE:") 50 + HANDLE = READLINE() 51 + 52 + WRITE("APP PASSWORD:") 53 + PASSWORD = READLINE() 54 + 55 + IF ATP_LOGIN(HANDLE, PASSWORD) THEN 56 + CALL SHOW_HELP() 57 + 58 + WHILE TRUE DO 59 + WRITE("COMMAND:") 60 + CMD = READLINE() 61 + 62 + IF CMD = "HOME" THEN 63 + TL = ATP_TIMELINE("") 64 + CALL SHOW_HOME(TL) 65 + END 66 + 67 + IF CMD = "PROFILE" THEN 68 + WRITE("ACTOR:") 69 + ACTOR = READLINE() 70 + PROFILE = ATP_PROFILE(ACTOR) 71 + CALL SHOW_PROFILE(PROFILE) 72 + END 73 + 74 + IF CMD = "POST" THEN 75 + WRITE("TEXT:") 76 + TEXT = READLINE() 77 + IF ATP_POST(TEXT) THEN 78 + WRITE("POST OK") 79 + END 80 + END 81 + 82 + IF CMD = "WHOAMI" THEN 83 + ME = ATP_WHOAMI() 84 + CALL SHOW_WHOAMI(ME) 85 + END 86 + 87 + IF CMD = "HELP" THEN 88 + CALL SHOW_HELP() 89 + END 90 + 91 + IF CMD = "QUIT" THEN 92 + STOP 93 + END 94 + END 95 + END 96 + END