diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-09-05 12:42:04 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-09-05 12:43:25 -0700 |
commit | 5f0da59d328f46ef77f7eba90e9782b43af84394 (patch) | |
tree | d03e09204d07df2ff1ab31778756ef59140c5c3a /edit/008-sandbox-trace.mu | |
parent | 4a027415c22ff5291c8731c2ecf923fbe3ee4b72 (diff) | |
download | mu-5f0da59d328f46ef77f7eba90e9782b43af84394.tar.gz |
2160
Diffstat (limited to 'edit/008-sandbox-trace.mu')
-rw-r--r-- | edit/008-sandbox-trace.mu | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/edit/008-sandbox-trace.mu b/edit/008-sandbox-trace.mu deleted file mode 100644 index 7b5dd4e2..00000000 --- a/edit/008-sandbox-trace.mu +++ /dev/null @@ -1,194 +0,0 @@ -## clicking on the code typed into a sandbox toggles its trace - -scenario sandbox-click-on-code-toggles-app-trace [ - $close-trace # trace too long - assume-screen 40/width, 10/height - # basic recipe - 1:address:array:character <- new [ -recipe foo [ - stash [abc] -]] - # run it - 2:address:array:character <- new [foo] - assume-console [ - press F4 - ] - 3:address:programming-environment-data <- new-programming-environment screen:address, 1:address:array:character, 2:address:array:character - event-loop screen:address, console:address, 3:address:programming-environment-data - screen-should-contain [ - . run (F4) . - . ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . stash [abc] ┊ x. - .] ┊foo . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━. - . ┊ . - ] - # click on the 'foo' line in the sandbox - assume-console [ - left-click 4, 21 - ] - run [ - event-loop screen:address, console:address, 3:address:programming-environment-data - print-character screen:address, 9251/␣/cursor - ] - # trace now printed and cursor shouldn't have budged - screen-should-contain [ - . run (F4) . - .␣ ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . stash [abc] ┊ x. - .] ┊foo . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊abc . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ . - ] - screen-should-contain-in-color 245/grey, [ - . . - . ┊ . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ x. - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊abc . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ . - ] - # click again on the same region - assume-console [ - left-click 4, 25 - ] - run [ - event-loop screen:address, console:address, 3:address:programming-environment-data - print-character screen:address, 9251/␣/cursor - ] - # trace hidden again - screen-should-contain [ - . run (F4) . - .␣ ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . stash [abc] ┊ x. - .] ┊foo . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━. - . ┊ . - ] -] - -scenario sandbox-shows-app-trace-and-result [ - $close-trace # trace too long - assume-screen 40/width, 10/height - # basic recipe - 1:address:array:character <- new [ -recipe foo [ - stash [abc] - add 2, 2 -]] - # run it - 2:address:array:character <- new [foo] - assume-console [ - press F4 - ] - 3:address:programming-environment-data <- new-programming-environment screen:address, 1:address:array:character, 2:address:array:character - event-loop screen:address, console:address, 3:address:programming-environment-data - screen-should-contain [ - . run (F4) . - . ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . stash [abc] ┊ x. - . add 2, 2 ┊foo . - .] ┊4 . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━. - . ┊ . - ] - # click on the 'foo' line in the sandbox - assume-console [ - left-click 4, 21 - ] - run [ - event-loop screen:address, console:address, 3:address:programming-environment-data - ] - # trace now printed - screen-should-contain [ - . run (F4) . - . ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . stash [abc] ┊ x. - . add 2, 2 ┊foo . - .] ┊abc . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4 . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ . - ] -] - -# clicks on sandbox code toggle its display-trace? flag -after <global-touch> [ - # right side of screen? check if it's inside the code of any sandbox - { - sandbox-left-margin:number <- get *current-sandbox, left:offset - click-column:number <- get *t, column:offset - on-sandbox-side?:boolean <- greater-or-equal click-column, sandbox-left-margin - break-unless on-sandbox-side? - first-sandbox:address:sandbox-data <- get *env, sandbox:offset - break-unless first-sandbox - first-sandbox-begins:number <- get *first-sandbox, starting-row-on-screen:offset - click-row:number <- get *t, row:offset - below-sandbox-editor?:boolean <- greater-or-equal click-row, first-sandbox-begins - break-unless below-sandbox-editor? - # identify the sandbox whose code is being clicked on - sandbox:address:sandbox-data <- find-click-in-sandbox-code env, click-row - break-unless sandbox - # toggle its display-trace? property - x:address:boolean <- get-address *sandbox, display-trace?:offset - *x <- not *x - hide-screen screen - screen <- render-sandbox-side screen, env, 1/clear - screen <- update-cursor screen, recipes, current-sandbox, *sandbox-in-focus? - # no change in cursor - show-screen screen - loop +next-event:label - } -] - -recipe find-click-in-sandbox-code [ - local-scope - env:address:programming-environment-data <- next-ingredient - click-row:number <- next-ingredient - # assert click-row >= sandbox.starting-row-on-screen - sandbox:address:sandbox-data <- get *env, sandbox:offset - start:number <- get *sandbox, starting-row-on-screen:offset - clicked-on-sandboxes?:boolean <- greater-or-equal click-row, start - assert clicked-on-sandboxes?, [extract-sandbox called on click to sandbox editor] - # while click-row < sandbox.next-sandbox.starting-row-on-screen - { - next-sandbox:address:sandbox-data <- get *sandbox, next-sandbox:offset - break-unless next-sandbox - next-start:number <- get *next-sandbox, starting-row-on-screen:offset - found?:boolean <- lesser-than click-row, next-start - break-if found? - sandbox <- copy next-sandbox - loop - } - # return sandbox if click is in its code region - code-ending-row:number <- get *sandbox, code-ending-row-on-screen:offset - click-above-response?:boolean <- lesser-or-equal click-row, code-ending-row - start:number <- get *sandbox, starting-row-on-screen:offset - click-below-menu?:boolean <- greater-than click-row, start - click-on-sandbox-code?:boolean <- and click-above-response?, click-below-menu? - { - break-if click-on-sandbox-code? - reply 0/no-click-in-sandbox-output - } - reply sandbox -] - -# when rendering a sandbox, dump its trace before response/warning if display-trace? property is set -after <render-sandbox-results> [ - { - display-trace?:boolean <- get *sandbox, display-trace?:offset - break-unless display-trace? - sandbox-trace:address:array:character <- get *sandbox, trace:offset - break-unless sandbox-trace # nothing to print; move on - row, screen <- render-string, screen, sandbox-trace, left, right, 245/grey, row - row <- subtract row, 1 # trim the trailing newline that's always present - } -] |