!7 static Web web; static Canvas canvas; p-subst { web = persistentObject("Web", Web); web.useCLParse = false; web.onNewLabel.add(voidfunc(WebNode node, O label) { processNode(node); change(); }); initWeb(); printStruct(web.relations); canvas = showCAL(diagram(), 650, 450); calcOnConceptChanges(1000, r { canvas = showCAL(diagram(), canvas) }, false); bot("Every Day Bot."); showCommandList(); } static CirclesAndLines diagram() { ret webToCAL(web); } svoid initWeb { web.node("Every day"); } answer { if "every day *" { web.relation("Every day", "I should", $1); ret "OK"; } if "clear" { web.clear(); change(); initWeb(); ret "OK"; } if "add day *" { web.node($1).addLabel("Day"); ret "OK"; } if "process" { processAllNodes(); ret "OK"; } } svoid processAllNodes { for (WebNode node : cloneList(web.nodes)) processNode(node); } svoid processNode(WebNode node) { if (node.hasLabel("Day")) processDay(node); } svoid processDay(WebNode day) { print("Processing day " + day); for (WebNode action : web_allForwardRelated(web, web.findNode("Every day"), "I should")) { print("Action=" + action); web.getRelation(day, action).addLabel("I should"); } }