whiskers.git / crates / whiskers-chooser / docs / chooser-rules.svg
chooser-rules.svg8 lines · 14.2 KB · raw
1<svg xmlns="http://www.w3.org/2000/svg" viewBox="-30 0 696 524" role="img" aria-label="The rules as a Rete network"><style>svg { background: #fefefe; font: 11px monospace; }
2rect, circle { fill: #fefefe; stroke: #1e1e1e; stroke-width: 1; }
3text { fill: #1e1e1e; }
4line, path { stroke: #1e1e1e; stroke-width: 1; fill: none; opacity: 0.3; }
5polygon { fill: #1e1e1e; opacity: 0.3; }
6.frame rect { fill: none; stroke-dasharray: 1 3; }
7.frame text { opacity: 0.7; }
8</style><g class="frame"><rect x="-5" y="92" width="160" height="276"></rect><text x="0" y="103">the shell · one ask</text></g><g class="frame"><rect x="-5" y="372" width="160" height="122"></rect><text x="0" y="383">an effect, once done</text></g><line class="waits" x1="155" y1="116" x2="184" y2="32"></line><line class="waits" x1="155" y1="242" x2="184" y2="228"></line><line class="waits" x1="155" y1="116" x2="184" y2="60"></line><line class="waits" x1="155" y1="242" x2="184" y2="256"></line><line class="waits" x1="155" y1="116" x2="184" y2="88"></line><line class="waits" x1="155" y1="116" x2="184" y2="116"></line><line class="waits" x1="155" y1="354" x2="184" y2="340"></line><line class="waits" x1="155" y1="116" x2="184" y2="144"></line><line class="waits" x1="155" y1="396" x2="184" y2="396"></line><line class="waits" x1="155" y1="424" x2="184" y2="424"></line><line class="waits" x1="155" y1="116" x2="184" y2="172"></line><line class="waits" x1="155" y1="298" x2="184" y2="284"></line><line class="waits" x1="155" y1="452" x2="184" y2="452"></line><line class="waits" x1="155" y1="298" x2="184" y2="312"></line><line class="waits" x1="155" y1="116" x2="184" y2="200"></line><line class="waits" x1="155" y1="480" x2="184" y2="480"></line><line class="waits" x1="155" y1="354" x2="184" y2="368"></line><path class="waits" d="M258 32 H294 V220"></path><line class="waits" x1="258" y1="228" x2="286" y2="228"></line><path class="waits" d="M258 60 H294 V248"></path><line class="waits" x1="258" y1="256" x2="286" y2="256"></line><path class="waits" d="M258 88 H294 V262"></path><line class="waits" x1="258" y1="256" x2="286" y2="270"></line><path class="waits" d="M258 116 H294 V276"></path><line class="waits" x1="258" y1="256" x2="286" y2="284"></line><path class="waits" d="M302 284 H334 V332"></path><line class="waits" x1="258" y1="340" x2="326" y2="340"></line><path class="waits" d="M258 144 H294 V290"></path><line class="waits" x1="258" y1="256" x2="286" y2="298"></line><path class="waits" d="M302 298 H334 V346"></path><line class="waits" x1="258" y1="340" x2="326" y2="354"></line><path class="waits" d="M258 172 H294 V304"></path><line class="waits" x1="258" y1="256" x2="286" y2="312"></line><path class="waits" d="M302 312 H334 V292"></path><line class="waits" x1="258" y1="284" x2="326" y2="284"></line><path class="waits" d="M302 312 H334 V320"></path><line class="waits" x1="258" y1="312" x2="326" y2="312"></line><path class="waits" d="M258 200 H294 V318"></path><line class="waits" x1="258" y1="256" x2="286" y2="326"></line><path class="waits" d="M302 284 H334 V360"></path><line class="waits" x1="258" y1="368" x2="326" y2="368"></line><path class="waits" d="M302 298 H334 V374"></path><line class="waits" x1="258" y1="368" x2="326" y2="382"></line><path class="waits" d="M258 32 H294 V332"></path><line class="waits" x1="258" y1="256" x2="286" y2="340"></line><path class="waits" d="M258 60 H294 V234"></path><line class="waits" x1="258" y1="228" x2="286" y2="242"></line><path class="waits" d="M258 88 H294 V346"></path><line class="waits" x1="258" y1="228" x2="286" y2="354"></line><path class="waits" d="M258 116 H294 V360"></path><line class="waits" x1="258" y1="228" x2="286" y2="368"></line><path class="waits" d="M258 144 H294 V374"></path><line class="waits" x1="258" y1="228" x2="286" y2="382"></line><path class="waits" d="M258 172 H294 V388"></path><line class="waits" x1="258" y1="228" x2="286" y2="396"></line><path class="waits" d="M258 200 H294 V402"></path><line class="waits" x1="258" y1="228" x2="286" y2="410"></line><line class="waits" x1="302" y1="228" x2="374" y2="228"></line><line class="waits" x1="302" y1="256" x2="374" y2="256"></line><g class="back waits"><path d="M636 256 H655 V513 H-24 V396 H-10"></path><polygon points="-5,396 -11,393 -11,399"></polygon></g><line class="waits" x1="302" y1="270" x2="374" y2="270"></line><g class="back waits"><path d="M636 270 H655 V513 H-24 V396 H-10"></path><polygon points="-5,396 -11,393 -11,399"></polygon></g><line class="waits" x1="342" y1="340" x2="374" y2="340"></line><g class="back waits"><path d="M636 340 H664 V522 H-33 V424 H-10"></path><polygon points="-5,424 -11,421 -11,427"></polygon></g><line class="waits" x1="342" y1="354" x2="374" y2="354"></line><g class="back waits"><path d="M636 354 H664 V522 H-33 V424 H-10"></path><polygon points="-5,424 -11,421 -11,427"></polygon></g><line class="waits" x1="258" y1="396" x2="374" y2="396"></line><line class="waits" x1="258" y1="424" x2="374" y2="424"></line><line class="waits" x1="342" y1="284" x2="374" y2="284"></line><g class="back waits"><path d="M636 284 H682 V540 H-51 V452 H-10"></path><polygon points="-5,452 -11,449 -11,455"></polygon></g><line class="waits" x1="258" y1="452" x2="374" y2="452"></line><line class="waits" x1="342" y1="312" x2="374" y2="312"></line><line class="waits" x1="302" y1="326" x2="374" y2="326"></line><g class="back waits"><path d="M636 326 H691 V549 H-60 V480 H-10"></path><polygon points="-5,480 -11,477 -11,483"></polygon></g><line class="waits" x1="258" y1="480" x2="374" y2="480"></line><line class="waits" x1="342" y1="368" x2="374" y2="368"></line><line class="waits" x1="342" y1="382" x2="374" y2="382"></line><line class="waits" x1="302" y1="340" x2="374" y2="410"></line><line class="waits" x1="302" y1="242" x2="374" y2="242"></line><line class="waits" x1="302" y1="354" x2="374" y2="438"></line><line class="waits" x1="302" y1="368" x2="374" y2="466"></line><line class="waits" x1="302" y1="382" x2="374" y2="494"></line><line class="waits" x1="302" y1="396" x2="374" y2="508"></line><line class="waits" x1="302" y1="410" x2="374" y2="522"></line><g class="fact waits"><rect x="0" y="107" width="150" height="18"></rect><text x="6" y="120">what she did</text></g><g class="fact waits"><rect x="0" y="233" width="150" height="18"></rect><text x="6" y="246">chooser open</text></g><g class="fact waits"><rect x="0" y="289" width="150" height="18"></rect><text x="6" y="302">unsaved change</text></g><g class="fact waits"><rect x="0" y="345" width="150" height="18"></rect><text x="6" y="358">voices listed</text></g><g class="fact waits"><rect x="0" y="387" width="150" height="18"></rect><text x="6" y="400">character moved</text></g><g class="fact waits"><rect x="0" y="415" width="150" height="18"></rect><text x="6" y="428">voice moved</text></g><g class="fact waits"><rect x="0" y="443" width="150" height="18"></rect><text x="6" y="456">saved</text></g><g class="fact waits"><rect x="0" y="471" width="150" height="18"></rect><text x="6" y="484">discarded</text></g><g class="alpha waits"><rect x="184" y="23" width="74" height="18"></rect><text x="190" y="36">= open</text></g><g class="alpha waits"><rect x="184" y="219" width="74" height="18"></rect><text x="190" y="232">= no</text></g><g class="alpha waits"><rect x="184" y="51" width="74" height="18"></rect><text x="190" y="64">= right</text></g><g class="alpha waits"><rect x="184" y="247" width="74" height="18"></rect><text x="190" y="260">= yes</text></g><g class="alpha waits"><rect x="184" y="79" width="74" height="18"></rect><text x="190" y="92">= left</text></g><g class="alpha waits"><rect x="184" y="107" width="74" height="18"></rect><text x="190" y="120">= voice right</text></g><g class="alpha waits"><rect x="184" y="331" width="74" height="18"></rect><text x="190" y="344">= yes</text></g><g class="alpha waits"><rect x="184" y="135" width="74" height="18"></rect><text x="190" y="148">= voice left</text></g><g class="alpha waits"><rect x="184" y="387" width="74" height="18"></rect><text x="190" y="400">is known</text></g><g class="alpha waits"><rect x="184" y="415" width="74" height="18"></rect><text x="190" y="428">is known</text></g><g class="alpha waits"><rect x="184" y="163" width="74" height="18"></rect><text x="190" y="176">= check</text></g><g class="alpha waits"><rect x="184" y="275" width="74" height="18"></rect><text x="190" y="288">= yes</text></g><g class="alpha waits"><rect x="184" y="443" width="74" height="18"></rect><text x="190" y="456">is known</text></g><g class="alpha waits"><rect x="184" y="303" width="74" height="18"></rect><text x="190" y="316">= no</text></g><g class="alpha waits"><rect x="184" y="191" width="74" height="18"></rect><text x="190" y="204">= cancel</text></g><g class="alpha waits"><rect x="184" y="471" width="74" height="18"></rect><text x="190" y="484">is known</text></g><g class="alpha waits"><rect x="184" y="359" width="74" height="18"></rect><text x="190" y="372">= no</text></g><g class="join waits"><circle cx="294" cy="228" r="8"></circle><text x="294" y="232" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="256" r="8"></circle><text x="294" y="260" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="270" r="8"></circle><text x="294" y="274" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="284" r="8"></circle><text x="294" y="288" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="334" cy="340" r="8"></circle><text x="334" y="344" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="298" r="8"></circle><text x="294" y="302" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="334" cy="354" r="8"></circle><text x="334" y="358" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="312" r="8"></circle><text x="294" y="316" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="334" cy="284" r="8"></circle><text x="334" y="288" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="334" cy="312" r="8"></circle><text x="334" y="316" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="326" r="8"></circle><text x="294" y="330" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="334" cy="368" r="8"></circle><text x="334" y="372" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="334" cy="382" r="8"></circle><text x="334" y="386" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="340" r="8"></circle><text x="294" y="344" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="242" r="8"></circle><text x="294" y="246" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="354" r="8"></circle><text x="294" y="358" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="368" r="8"></circle><text x="294" y="372" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="382" r="8"></circle><text x="294" y="386" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="396" r="8"></circle><text x="294" y="400" text-anchor="middle">&amp;</text></g><g class="join waits"><circle cx="294" cy="410" r="8"></circle><text x="294" y="414" text-anchor="middle">&amp;</text></g><g class="rule waits"><rect x="374" y="219" width="262" height="18"></rect><text x="380" y="232">open → open the chooser</text></g><g class="rule waits"><rect x="374" y="247" width="262" height="18"></rect><text x="380" y="260">next character → show the next character</text></g><g class="rule waits"><rect x="374" y="261" width="262" height="18"></rect><text x="380" y="274">previous character → show the previous character</text></g><g class="rule waits"><rect x="374" y="331" width="262" height="18"></rect><text x="380" y="344">next voice → show the next voice</text></g><g class="rule waits"><rect x="374" y="345" width="262" height="18"></rect><text x="380" y="358">previous voice → show the previous voice</text></g><g class="rule waits"><rect x="374" y="387" width="262" height="18"></rect><text x="380" y="400">a character says hi → say hi in its saved voice</text></g><g class="rule waits"><rect x="374" y="415" width="262" height="18"></rect><text x="380" y="428">a voice says its name → say the voice's name in it</text></g><g class="rule waits"><rect x="374" y="275" width="262" height="18"></rect><text x="380" y="288">check saves → save this character and voice</text></g><g class="rule waits"><rect x="374" y="443" width="262" height="18"></rect><text x="380" y="456">saved, close → close the chooser</text></g><g class="rule waits"><rect x="374" y="303" width="262" height="18"></rect><text x="380" y="316">check with no change closes → close the chooser</text></g><g class="rule waits"><rect x="374" y="317" width="262" height="18"></rect><text x="380" y="330">cross throws away → put back what was saved</text></g><g class="rule waits"><rect x="374" y="471" width="262" height="18"></rect><text x="380" y="484">discarded, close → close the chooser</text></g><g class="rule waits"><rect x="374" y="359" width="262" height="18"></rect><text x="380" y="372">no voices to step: right → ignore: no voices listed</text></g><g class="rule waits"><rect x="374" y="373" width="262" height="18"></rect><text x="380" y="386">no voices to step: left → ignore: no voices listed</text></g><g class="rule waits"><rect x="374" y="401" width="262" height="18"></rect><text x="380" y="414">open already → ignore: open already</text></g><g class="rule waits"><rect x="374" y="233" width="262" height="18"></rect><text x="380" y="246">closed: right → ignore: not open</text></g><g class="rule waits"><rect x="374" y="429" width="262" height="18"></rect><text x="380" y="442">closed: left → ignore: not open</text></g><g class="rule waits"><rect x="374" y="457" width="262" height="18"></rect><text x="380" y="470">closed: voice right → ignore: not open</text></g><g class="rule waits"><rect x="374" y="485" width="262" height="18"></rect><text x="380" y="498">closed: voice left → ignore: not open</text></g><g class="rule waits"><rect x="374" y="499" width="262" height="18"></rect><text x="380" y="512">closed: check → ignore: not open</text></g><g class="rule waits"><rect x="374" y="513" width="262" height="18"></rect><text x="380" y="526">closed: cross → ignore: not open</text></g></svg>