diff --git a/CHANGELOG.md b/CHANGELOG.md index cccdcfc..73b1903 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # asciinema-rec_script changelog +## 0.9.1 (2021-10-18) + +* Add a pause after printing the command prompt + ## 0.9.0 (2021-10-17) * Initial release diff --git a/README.md b/README.md index 83d57e3..b1fcbc5 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ Place `asciinema-rec_script` somewhere in your $PATH. * _(so eg. `--help` will show all the [asciinema rec [options]](https://github.com/asciinema/asciinema#rec-filename))_ * `SLEEP=0 ./screencasts/demo-bash_functions.asc` * _(env vars can be passed into the script in the regular way)_ + * _(to eg set `PROMPT="$ "`, `PROMPT_PAUSE=5`)_ * `source ./screencasts/demo-date_maths.asc` * _Nb. It should also be possibe to source the `.asc` script in your $SHELL and run it as a regular bash script_ * _(Maintaining this compatability means that the `.asc` file won't require any special commands that a regular shell script wouldn't already have in it. Which hopefully results in regular shell scripts resulting in half-decent looking recordings.)_ diff --git a/bin/asciinema-rec_script b/bin/asciinema-rec_script index 91af11c..d8611f8 100755 --- a/bin/asciinema-rec_script +++ b/bin/asciinema-rec_script @@ -35,6 +35,10 @@ build_augmented_script() { local script="$1" } execute() { + # A pause can be added between printing the shell prompt + # and simulating the script typing out a command + PROMPT_PAUSE=${PROMPT_PAUSE:-1} + case $1 in sleep*) # translate any sleep commands to our pretty 'countdown' @@ -47,7 +51,8 @@ build_augmented_script() { local script="$1" ;; source*) # we'll use `source` to define multiline commands - printf "${PROMPT}%s\n" "$(eval "${1//source/$CAT}")" + printf "${PROMPT}" + printf "%s\n" "$(sleep $PROMPT_PAUSE; eval "${1//source/$CAT}")" # shellcheck disable=SC1090 eval "$1" ;; @@ -60,7 +65,8 @@ build_augmented_script() { local script="$1" comment "$(eval echo "${1/: /}")" ;; *) - printf "${PROMPT}%s\n" "$(echo "$1" | $CAT)" + printf "${PROMPT}" + printf "%s\n" "$(sleep $PROMPT_PAUSE; echo "$1" | $CAT)" eval "$1" ;; esac diff --git a/screencasts/demo-bash_functions.asc b/screencasts/demo-bash_functions.asc index 249d00b..b010231 100755 --- a/screencasts/demo-bash_functions.asc +++ b/screencasts/demo-bash_functions.asc @@ -1,41 +1,37 @@ #!/usr/bin/env asciinema-rec_script : "\`${script:=$0}\`" -: "There'll be \`${SLEEP:-5}s\` countdowns where you can hit \`[space]\` to pause." +: "There'll be \`${SLEEP:-2}s\` countdowns where you can hit \`[space]\` to pause." -sleep ${SLEEP:-5} # First we'll write a function `f1` that just prints out some variables source "${script%.asc}/f1.1" -sleep ${SLEEP:-5} # Note that vars can be accessed using `$a` or `${a}` syntax echo "a='$a', b='${b}', c='$c'" -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} # And double quotes are used for interpolation of: # * env vars (eg. `"${a}"` ) # * functions/commands (eg. `"$(date)"`) -sleep ${SLEEP:-5} # So let's call our function f1 -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} # Nothing there, so we'll set a couple of env vars for it # (And remember to *never* put spaces around the `=`) a='a 0' b='b 0' -sleep ${SLEEP:-5} # Now we'll call it again f1 -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} # Next we'll change `f1` to accept "arguments" # Unfortunately bash functions don't have named arguments, # they just use positional parameters `$1`, `$2` etc @@ -45,19 +41,18 @@ sleep ${SLEEP:-5} source "${script%.asc}/f1.2" -sleep ${SLEEP:-5} # Then call `f1` (checking on our env vars BEFORE & AFTER the call) :;echo "BEFORE: a='$a', b='$b', c='$c'" f1 'a 1' 'b 1' 'c 1' +sleep ${SLEEP:-2} :;echo "AFTER : a='$a', b='$b', c='$c'" -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} # Hang on! # 👎 Fail! # That's no good, the `$a` & `$b` env vars we set previously have changed! -sleep ${SLEEP:-5} # Let's try again. # But first re-assign `$a` & `$b`... a='a 0' @@ -65,59 +60,55 @@ b='b 0' unset c # and unset `$c` -sleep ${SLEEP:-5} # Then fix our function by using `local` env vars... source "${script%.asc}/f1.3" -sleep ${SLEEP:-5} # Now we'll just check to make sure it worked... :;echo "BEFORE: a='$a', b='$b', c='$c'" f1 'a 1' 'b 1' 'c 1' +sleep ${SLEEP:-2} :;echo "AFTER : a='$a', b='$b', c='$c'" -sleep ${SLEEP:-5} # 🏆 Success! # No global env vars were harmed in the making or calling of this function. -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} # Now, give the "arguments" default values using `${name:-default}` syntax source "${script%.asc}/f1.4" f1 'a 1' -sleep ${SLEEP:-5} # Now, what about defaulting to the values of env vars outside the function? # ie. with this syntax: `a=${1:-$a}` # And how bout falling back to our original default values? # ie. with this syntax: `a=${1:-${a:-a 2}}` +sleep ${SLEEP:-2} source "${script%.asc}/f1.5" f1 'a 1' -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} # Now, let's get even funkier with `$c` and get its default from a function. # And just cause we can, let's call *it's* function `c` c() { date; } -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} # ie. which just prints the date c -sleep ${SLEEP:-5} # So now change `c=...` in `f1` to make use of our `$(c)` function... source "${script%.asc}/f1.6" f1 'a 1' -sleep ${SLEEP:-5} # Now let's mix things up a bit and call `f1` in a different way. # We can call it in context of new values for `$b` & `$c`, # by placing them in front of the call to `f1`. @@ -125,40 +116,38 @@ sleep ${SLEEP:-5} # 🤔 ... but won't that change the global values for `$b` & `$c`? # Let's check: -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} :;echo "BEFORE: a='$a', b='$b', c='$c'" c='c 3' b='b 3' f1 'a 1' +sleep ${SLEEP:-2} :;echo "AFTER : a='$a', b='$b', c='$c'" -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} # 🏆 Success! # Once again... # No global env vars were harmed in the making or calling of this function. -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} # Hmm... now here's one more trick, but IMO it's more trouble than it's worth. # This trick involves passing in var assignments as "arguments" to the # function, for `local` to evaluate. # *Then* we can default back to original values with a *second* `local`. -sleep ${SLEEP:-5} +sleep ${SLEEP:-2} # That magic function (which we'll call `f2` for short) looks like this: source "${script%.asc}/f2" # And it can be called like this... -sleep ${SLEEP:-5} f2 a='a 4' b='b 4' # Or this... -sleep ${SLEEP:-5} a='a 4' f2 b='b 4' # Or this... -sleep ${SLEEP:-5} a='a 4' f2 c='c 4' b='b 4' diff --git a/screencasts/demo-bash_functions.cast b/screencasts/demo-bash_functions.cast index 956d742..1eb6a98 100644 --- a/screencasts/demo-bash_functions.cast +++ b/screencasts/demo-bash_functions.cast @@ -1,13 +1,197 @@ -{"version": 2, "width": 183, "height": 42, "timestamp": 1634469372, "idle_time_limit": 1.0, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}, "title": "demo-bash_functions.asc"} -[1.235469, "o", "🎥 \u001b[32;3mBegin recording - \u001b[1mdemo-bash_functions.asc\u001b[0m\r\n"] -[1.308318, "o", "💭 \u001b[3;1m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m./screencasts/demo-bash_functions.asc\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] -[1.374858, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mThere'll be \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m2s\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m countdowns where you can hit \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m[space]\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m to pause.\u001b[0m\u001b[0m\r\n"] -[1.374912, "o", "\r\n"] -[1.38837, "o", "\r0️⃣ 2️⃣ "] -[2.400163, "o", "\r0️⃣ 1️⃣ "] -[3.409143, "o", "\r \r"] -[3.482412, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mFirst we'll write a function \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mf1\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m that just prints out some variables\u001b[0m\u001b[0m\r\n"] -[3.542516, "o", "\u001b[32;1m❯\u001b[0m \u001b[38;2;166;226;46mf1\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m{\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;230;219;116m-> f1(a='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;230;219;116m', b='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;230;219;116m', c='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;230;219;116m')\u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] -[3.542699, "o", "\r\n\r\n"] -[3.550463, "o", "\r0️⃣ 2️⃣ "] -[4.464421, "o", "^C"] +{"version": 2, "width": 183, "height": 42, "timestamp": 1634503319, "idle_time_limit": 1.0, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}, "title": "demo-bash_functions.asc"} +[8.84083, "o", "🎥 \u001b[32;3mBegin recording - \u001b[1mdemo-bash_functions.asc\u001b[0m\r\n"] +[8.911675, "o", "💭 \u001b[3;1m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m./screencasts/demo-bash_functions.asc\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[8.981996, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mThere'll be \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m2s\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m countdowns where you can hit \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m[space]\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m to pause.\u001b[0m\u001b[0m\r\n\r\n"] +[9.051416, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mFirst we'll write a function \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mf1\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m that just prints out some variables\u001b[0m\u001b[0m\r\n"] +[9.051463, "o", "\u001b[32;1m❯\u001b[0m "] +[10.126703, "o", "\u001b[38;2;166;226;46mf1\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m{\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;230;219;116m-> f1(a='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;230;219;116m', b='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;230;219;116m', c='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;230;219;116m')\u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[10.126991, "o", "\r\n\r\n"] +[10.188023, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNote that vars can be accessed using \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$a\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m or \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m${a}\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m syntax\u001b[0m\u001b[0m\r\n"] +[10.251682, "o", "\u001b[32;1m❯\u001b[0m \u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;230;219;116ma='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;230;219;116m', b='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;230;219;116m', c='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;230;219;116m'\u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[10.251733, "o", "a='', b='', c=''\r\n\r\n\r\n"] +[10.258933, "o", "\r0️⃣ 2️⃣ "] +[11.271177, "o", "\r0️⃣ 1️⃣ "] +[12.279483, "o", "\r \r"] +[12.350073, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mAnd double quotes are used for interpolation of:\u001b[0m\u001b[0m\r\n"] +[12.416404, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;119;119;119m*\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255menv vars (eg. \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m\"${a}\"\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m )\u001b[0m\u001b[0m\r\n"] +[12.480892, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;119;119;119m*\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mfunctions/commands (eg. \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m\"$(date)\"\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[0m\r\n"] +[12.480935, "o", "\r\n\r\n"] +[12.541122, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mSo let's call our function\u001b[0m\u001b[0m\r\n"] +[12.541258, "o", "\u001b[32;1m❯\u001b[0m "] +[13.616773, "o", "\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf1\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n-> f1(a='', b='', c='')\r\n"] +[13.616812, "o", "\r\n\r\n"] +[13.62336, "o", "\r0️⃣ 2️⃣ "] +[14.63378, "o", "\r0️⃣ 1️⃣ "] +[15.638518, "o", "\r \r"] +[15.707128, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNothing there, so we'll set a couple of env vars for it\u001b[0m\u001b[0m\r\n"] +[15.767542, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m(And remember to \u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;228;46;112mnever\u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;255;255;255m put spaces around the \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m=\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[0m\r\n"] +[15.767589, "o", "\u001b[32;1m❯\u001b[0m "] +[16.838735, "o", "\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 0\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[16.838846, "o", "\u001b[32;1m❯\u001b[0m "] +[17.904096, "o", "\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mb 0\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[17.904136, "o", "\r\n\r\n"] +[17.969745, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNow we'll call it again\u001b[0m\u001b[0m\r\n"] +[17.96996, "o", "\u001b[32;1m❯\u001b[0m "] +[19.04789, "o", "\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf1\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[19.047935, "o", "-> f1(a='a 0', b='b 0', c='')\r\n"] +[19.048038, "o", "\r\n\r\n"] +[19.054808, "o", "\r0️⃣ 2️⃣ "] +[20.067657, "o", "\r0️⃣ 1️⃣ "] +[21.073629, "o", "\r \r"] +[21.140363, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNext we'll change \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mf1\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m to accept \"arguments\"\u001b[0m\u001b[0m\r\n"] +[21.214693, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mUnfortunately bash functions don't have named arguments,\u001b[0m\u001b[0m\r\n"] +[21.282789, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mthey just use positional parameters \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$1\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m, \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$2\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m etc\u001b[0m\u001b[0m\r\n"] +[21.350997, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[21.420946, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mSo we're going to assign them to variables.\u001b[0m\u001b[0m\r\n"] +[21.491218, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mie. like function \"arguments\" in other languages...\u001b[0m\u001b[0m\r\n"] +[21.491265, "o", "\u001b[32;1m❯\u001b[0m "] +[22.567513, "o", "\u001b[38;2;166;226;46mf1\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m{\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255m1\u001b[0m\u001b[38;2;249;38;114m;\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255m2\u001b[0m\u001b[38;2;249;38;114m;\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255m3\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;230;219;116m-> f1(a='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;230;219;116m', b='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;230;219;116m', c='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;230;219;116m')\u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[22.567715, "o", "\r\n\r\n"] +[22.643152, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mThen call \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mf1\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m (checking on our env vars BEFORE \u001b[0m\u001b[38;2;255;255;255m&\u001b[0m\u001b[38;2;255;255;255m AFTER the call)\u001b[0m\u001b[0m\r\n"] +[22.643435, "o", "💬 \u001b[3;1mBEFORE: a='a 0', b='b 0', c=''\u001b[0m\r\n\u001b[32;1m❯\u001b[0m "] +[23.721027, "o", "\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf1\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 1\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mb 1\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mc 1\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[23.721151, "o", "-> f1(a='a 1', b='b 1', c='c 1')\r\n"] +[23.727974, "o", "\r0️⃣ 2️⃣ "] +[24.737392, "o", "\r0️⃣ 1️⃣ "] +[25.744723, "o", "\r \r"] +[25.744884, "o", "💬 \u001b[3;1mAFTER : a='a 1', b='b 1', c='c 1'\u001b[0m\r\n"] +[25.745003, "o", "\r\n"] +[25.75322, "o", "\r0️⃣ 2️⃣ "] +[26.763546, "o", "\r0️⃣ 1️⃣ "] +[27.770181, "o", "\r \r"] +[27.845198, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mHang on!\u001b[0m\u001b[0m\r\n"] +[27.920279, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m👎 Fail!\u001b[0m\u001b[0m\r\n"] +[28.001457, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mThat's no good, the \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$a\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m&\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$b\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m env vars we set previously have changed!\u001b[0m\u001b[0m\r\n\r\n\r\n"] +[28.078915, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mLet's try again.\u001b[0m\u001b[0m\r\n"] +[28.15785, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mBut first re-assign \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$a\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m&\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$b\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m...\u001b[0m\u001b[0m\r\n"] +[28.157897, "o", "\u001b[32;1m❯\u001b[0m "] +[29.234373, "o", "\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 0\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[29.234483, "o", "\u001b[32;1m❯\u001b[0m "] +[30.303671, "o", "\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mb 0\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[30.386884, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mand unset \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$c\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[30.387022, "o", "\u001b[32;1m❯\u001b[0m "] +[31.463762, "o", "\u001b[38;2;102;217;239munset\u001b[0m\u001b[38;2;255;255;255m c \u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[31.463882, "o", "\r\n\r\n"] +[31.546402, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mThen fix our function by using \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mlocal\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m env vars...\u001b[0m\u001b[0m\r\n"] +[31.546442, "o", "\u001b[32;1m❯\u001b[0m "] +[32.620948, "o", "\u001b[38;2;166;226;46mf1\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m{\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;249;38;114mlocal\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255m1\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255m2\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255m3\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;230;219;116m-> f1(a='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;230;219;116m', b='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;230;219;116m', c='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;230;219;116m')\u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[32.621099, "o", "\r\n\r\n"] +[32.703693, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNow we'll just check to make sure it worked...\u001b[0m\u001b[0m\r\n"] +[32.703882, "o", "💬 \u001b[3;1mBEFORE: a='a 0', b='b 0', c=''\u001b[0m\r\n"] +[32.703959, "o", "\u001b[32;1m❯\u001b[0m "] +[33.77997, "o", "\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf1\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 1\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mb 1\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mc 1\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[33.780013, "o", "-> f1(a='a 1', b='b 1', c='c 1')\r\n"] +[33.786903, "o", "\r0️⃣ 2️⃣ "] +[34.799263, "o", "\r0️⃣ 1️⃣ "] +[35.806692, "o", "\r \r"] +[35.807015, "o", "💬 \u001b[3;1mAFTER : a='a 0', b='b 0', c=''\u001b[0m\r\n\r\n"] +[35.807178, "o", "\r\n"] +[35.897838, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m🏆 Success!\u001b[0m\u001b[0m\r\n"] +[35.976641, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNo global env vars were harmed in the making or calling of this function.\u001b[0m\u001b[0m\r\n"] +[35.976688, "o", "\r\n\r\n"] +[35.983688, "o", "\r0️⃣ 2️⃣ "] +[36.99663, "o", "\r0️⃣ 1️⃣ "] +[38.0028, "o", "\r \r"] +[38.076247, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNow, give the \"arguments\" default values using \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m${name:-default}\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m syntax\u001b[0m\u001b[0m\r\n"] +[38.076293, "o", "\u001b[32;1m❯\u001b[0m "] +[39.14325, "o", "\u001b[38;2;166;226;46mf1\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m{\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;249;38;114mlocal\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255m1\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;230;219;116ma 2\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255m2\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;230;219;116mb 2\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255m3\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;230;219;116mc 2\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;230;219;116m-> f1(a='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255ma\u001b"] +[39.143507, "o", "[0m\u001b[38;2;230;219;116m', b='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;230;219;116m', c='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;230;219;116m')\u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[39.143739, "o", "\r\n"] +[39.143871, "o", "\u001b[32;1m❯\u001b[0m "] +[40.220217, "o", "\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf1\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 1\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[40.220263, "o", "-> f1(a='a 1', b='b 2', c='c 2')\r\n"] +[40.220376, "o", "\r\n\r\n"] +[40.304608, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNow, what about defaulting to the values of env vars outside the function?\u001b[0m\u001b[0m\r\n"] +[40.38775, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mie. with this syntax: \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51ma=${1:-$a}\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[40.387796, "o", "\r\n"] +[40.465162, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mAnd how bout falling back to our original default values?\u001b[0m\u001b[0m\r\n"] +[40.542419, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mie. with this syntax: \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51ma=${1:-${a:-a 2}}\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[40.549791, "o", "\r0️⃣ 2️⃣ "] +[41.560755, "o", "\r0️⃣ 1️⃣ "] +[42.570034, "o", "\r \r"] +[42.570356, "o", "\u001b[32;1m❯\u001b[0m "] +[43.648711, "o", "\u001b[38;2;166;226;46mf1\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m{\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;249;38;114mlocal\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255m1\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;230;219;116ma 2\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255m2\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;230;219;116mb 2\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255m3\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;255;2"] +[43.648755, "o", "55;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;230;219;116mc 2\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;230;219;116m-> f1(a='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;230;219;116m', b='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;230;219;116m', c='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;230;219;116m')\u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[43.649007, "o", "\r\n\u001b[32;1m❯\u001b[0m "] +[44.722576, "o", "\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf1\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 1\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[44.722621, "o", "-> f1(a='a 1', b='b 0', c='c 2')\r\n"] +[44.722712, "o", "\r\n\r\n"] +[44.729531, "o", "\r0️⃣ 2️⃣ "] +[45.740597, "o", "\r0️⃣ 1️⃣ "] +[46.750721, "o", "\r \r"] +[46.821848, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNow, let's get even funkier with \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$c\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m and get its default from a function.\u001b[0m\u001b[0m\r\n"] +[46.885781, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mAnd just cause we can, let's call \u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;228;46;112mit's\u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;255;255;255m function \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mc\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[46.885939, "o", "\u001b[32;1m❯\u001b[0m "] +[47.96227, "o", "\u001b[38;2;166;226;46mc\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m{\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mdate\u001b[0m\u001b[38;2;249;38;114m;\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[47.962314, "o", "\r\n"] +[47.969206, "o", "\r0️⃣ 2️⃣ "] +[48.980029, "o", "\r0️⃣ 1️⃣ "] +[49.987264, "o", "\r \r"] +[50.058137, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mie. which just prints the date\u001b[0m\u001b[0m\r\n"] +[50.05818, "o", "\u001b[32;1m❯\u001b[0m "] +[51.131068, "o", "\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[51.134943, "o", "Mon Oct 18 07:42:50 AEDT 2021\r\n"] +[51.135278, "o", "\r\n\r\n"] +[51.202648, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mSo now change \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mc=...\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m in \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mf1\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m to make use of our \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$(c)\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m function...\u001b[0m\u001b[0m\r\n"] +[51.202774, "o", "\u001b[32;1m❯\u001b[0m "] +[52.268703, "o", "\u001b[38;2;166;226;46mf1\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m{\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;249;38;114mlocal\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255m1\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;230;219;116ma 2\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255m2\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;230;219;116mb 2\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255m3\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;255;2"] +[52.26886, "o", "55;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m(\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;230;219;116m)\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;230;219;116m-> f1(a='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;230;219;116m', b='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;230;219;116m', c='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;230;219;116m')\u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[52.26912, "o", "\r\n"] +[52.269222, "o", "\u001b[32;1m❯\u001b[0m "] +[53.346622, "o", "\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf1\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 1\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[53.351436, "o", "-> f1(a='a 1', b='b 0', c='Mon Oct 18 07:42:52 AEDT 2021')\r\n"] +[53.35156, "o", "\r\n\r\n"] +[53.419488, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNow let's mix things up a bit and call \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mf1\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m in a different way.\u001b[0m\u001b[0m\r\n"] +[53.489689, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mWe can call it in context of new values for \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$b\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m&\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$c\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m,\u001b[0m\u001b[0m\r\n"] +[53.561922, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mby placing them in front of the call to \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mf1\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m.\u001b[0m\u001b[0m\r\n"] +[53.561965, "o", "\r\n"] +[53.629724, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m🤔 ... but won't that change the global values for \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$b\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m&\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m$c\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m?\u001b[0m\u001b[0m\r\n\r\n"] +[53.702626, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mLet's check:\u001b[0m\u001b[0m\r\n"] +[53.709517, "o", "\r0️⃣ 2️⃣ "] +[54.721985, "o", "\r0️⃣ 1️⃣ "] +[55.726911, "o", "\r \r"] +[55.727293, "o", "💬 \u001b[3;1mBEFORE: a='a 0', b='b 0', c=''\u001b[0m\r\n"] +[55.727431, "o", "\u001b[32;1m❯\u001b[0m "] +[56.805701, "o", "\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mc 3\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mb 3\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf1\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 1\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[56.805746, "o", "-> f1(a='a 1', b='b 3', c='c 3')\r\n"] +[56.812749, "o", "\r0️⃣ 2️⃣ "] +[57.822876, "o", "\r0️⃣ 1️⃣ "] +[58.831786, "o", "\r \r"] +[58.832176, "o", "💬 \u001b[3;1mAFTER : a='a 0', b='b 0', c=''\u001b[0m\r\n\r\n\r\n"] +[58.84161, "o", "\r0️⃣ 2️⃣ "] +[59.855463, "o", "\r0️⃣ 1️⃣ "] +[60.860902, "o", "\r \r"] +[60.929437, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m🏆 Success!\u001b[0m\u001b[0m\r\n"] +[60.989168, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mOnce again...\u001b[0m\u001b[0m\r\n"] +[61.066302, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNo global env vars were harmed in the making or calling of this function.\u001b[0m\u001b[0m\r\n"] +[61.066348, "o", "\r\n\r\n"] +[61.073498, "o", "\r0️⃣ 2️⃣ "] +[62.082876, "o", "\r0️⃣ 1️⃣ "] +[63.091335, "o", "\r \r"] +[63.163517, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mHmm... now here's one more trick, but IMO it's more trouble than it's worth.\u001b[0m\u001b[0m\r\n"] +[63.239378, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mThis trick involves passing in var assignments as \"arguments\" to the\u001b[0m\u001b[0m\r\n"] +[63.317815, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mfunction, for \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mlocal\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m to evaluate.\u001b[0m\u001b[0m\r\n"] +[63.394919, "o", "💭 \u001b[3;1m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;228;46;112mThen\u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;255;255;255m we can default back to original values with a \u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;228;46;112msecond\u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mlocal\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m.\u001b[0m\u001b[0m\r\n\r\n\r\n"] +[63.401629, "o", "\r0️⃣ 2️⃣ "] +[64.408983, "o", "\r0️⃣ 1️⃣ "] +[65.418305, "o", "\r \r"] +[65.489082, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mThat magic function (which we'll call \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mf2\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m for short) looks like this:\u001b[0m\u001b[0m\r\n"] +[65.489193, "o", "\u001b[32;1m❯\u001b[0m "] +[66.563399, "o", "\u001b[38;2;166;226;46mf2\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m{\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;249;38;114mlocal\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255m@\u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;249;38;114m;\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;249;38;114mlocal\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;230;219;116ma 2\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;230;219;116mb 2\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m{\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;249;38;114m:-\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m(\u001b[0m\u001b[38;2;255"] +[66.563445, "o", ";255;255mc\u001b[0m\u001b[38;2;230;219;116m)\u001b[0m\u001b[38;2;230;219;116m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;230;219;116m-> f2(a='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;230;219;116m', b='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mb\u001b[0m\u001b[38;2;230;219;116m', c='\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255mc\u001b[0m\u001b[38;2;230;219;116m')\u001b[0m\u001b[38;2;255;255;255m\"\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\r\n\u001b[38;2;255;255;255m}\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[66.563692, "o", "\r\n\r\n"] +[66.646884, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mAnd it can be called like this...\u001b[0m\u001b[0m\r\n"] +[66.646923, "o", "\u001b[32;1m❯\u001b[0m "] +[67.718965, "o", "\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf2\u001b[0m\u001b[38;2;255;255;255m a=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 4\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m b=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mb 4\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[67.72377, "o", "-> f2(a='a 4', b='b 4', c='Mon Oct 18 07:43:06 AEDT 2021')\r\n"] +[67.723802, "o", "\r\n\r\n"] +[67.807903, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mOr this...\u001b[0m\u001b[0m\r\n"] +[67.808106, "o", "\u001b[32;1m❯\u001b[0m "] +[68.886371, "o", "\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 4\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf2\u001b[0m\u001b[38;2;255;255;255m b=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mb 4\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[68.891147, "o", "-> f2(a='a 4', b='b 4', c='Mon Oct 18 07:43:08 AEDT 2021')\r\n"] +[68.891179, "o", "\r\n\r\n"] +[68.952635, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mOr this...\u001b[0m\u001b[0m\r\n"] +[68.95376, "o", "\u001b[32;1m❯\u001b[0m "] +[70.044233, "o", "\u001b[38;2;255;255;255ma\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116ma 4\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255mf2\u001b[0m\u001b[38;2;255;255;255m c=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mc 4\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m b=\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;230;219;116mb 4\u001b[0m\u001b[38;2;255;255;255m'\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[70.044339, "o", "-> f2(a='a 4', b='b 4', c='c 4')\r\n"] +[70.044416, "o", "🎬 \u001b[32;3mEnd recording - \u001b[1mdemo-bash_functions.asc\u001b[0m\r\n"] diff --git a/screencasts/demo-date_maths.cast b/screencasts/demo-date_maths.cast index 53eef60..42ed0f6 100644 --- a/screencasts/demo-date_maths.cast +++ b/screencasts/demo-date_maths.cast @@ -1,21 +1,22 @@ -{"version": 2, "width": 183, "height": 42, "timestamp": 1634454688, "idle_time_limit": 1.0, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}, "title": "demo-date_maths.asc"} -[0.009544, "o", "🎥 \u001b[32;3mBegin recording - \u001b[1mdemo-date_maths.asc\u001b[0m\r\n"] -[0.076059, "o", "💭 \u001b[3;1m\u001b[38;2;253;151;31m#\u001b[0m\u001b[38;2;253;151;31mDate maths\u001b[0m\u001b[38;2;253;151;31m\u001b[0m\u001b[0m\r\n\r\n"] -[0.139888, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mThe \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mdate\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m command can be used to retrieve the:\u001b[0m\u001b[0m\r\n"] -[0.200427, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;119;119;119m*\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;228;46;112mday of the week\u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;255;255;255m using the \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m%l\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m option\u001b[0m\u001b[0m\r\n"] -[0.260477, "o", "\u001b[32;1m❯\u001b[0m \u001b[38;2;255;255;255mday_of_the_week\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m(\u001b[0m\u001b[38;2;255;255;255mdate\u001b[0m\u001b[38;2;230;219;116m +\u001b[0m\u001b[38;2;255;255;255m%\u001b[0m\u001b[38;2;255;255;255ml\u001b[0m\u001b[38;2;230;219;116m)\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] -[0.264766, "o", "\r\n"] -[0.324592, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;119;119;119m*\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;228;46;112mhour of the day\u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;255;255;255m using the \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m%u\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m option\u001b[0m\u001b[0m\r\n"] -[0.382798, "o", "\u001b[32;1m❯\u001b[0m \u001b[38;2;255;255;255mhour\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m(\u001b[0m\u001b[38;2;255;255;255mdate\u001b[0m\u001b[38;2;230;219;116m +\u001b[0m\u001b[38;2;255;255;255m%\u001b[0m\u001b[38;2;255;255;255mu\u001b[0m\u001b[38;2;230;219;116m)\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] -[0.38768, "o", "\r\n\r\n"] -[0.452806, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNow, can you guess what we're going to do with those two numbers?\u001b[0m\u001b[0m\r\n"] -[0.517286, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m🤔...\u001b[0m\u001b[0m\r\n"] -[0.525034, "o", "\r0️⃣ 3️⃣ "] -[1.53423, "o", "\r0️⃣ 2️⃣ "] -[2.547418, "o", "\r0️⃣ 1️⃣ "] -[3.55726, "o", "\r \r"] -[3.557453, "o", "\r\n"] -[3.629463, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mWe're going to add them together!\u001b[0m\u001b[0m\r\n"] -[3.692092, "o", "\u001b[32;1m❯\u001b[0m \u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255m((\u001b[0m\u001b[38;2;255;255;255mday_of_the_week \u001b[0m\u001b[38;2;249;38;114m+\u001b[0m\u001b[38;2;255;255;255m hour\u001b[0m\u001b[38;2;255;255;255m))\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] -[3.692138, "o", "13\r\n"] -[3.692262, "o", "🎬 \u001b[32;3mEnd recording - \u001b[1mdemo-date_maths.asc\u001b[0m\r\n"] +{"version": 2, "width": 183, "height": 42, "timestamp": 1634504032, "idle_time_limit": 1.0, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}, "title": "demo-date_maths.asc"} +[0.031256, "o", "🎥 \u001b[32;3mBegin recording - \u001b[1mdemo-date_maths.asc\u001b[0m\r\n"] +[0.103646, "o", "💭 \u001b[3;1m\u001b[38;2;253;151;31m#\u001b[0m\u001b[38;2;253;151;31mDate maths\u001b[0m\u001b[38;2;253;151;31m\u001b[0m\u001b[0m\r\n\r\n"] +[0.182554, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mThe \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51mdate\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m command can be used to retrieve the:\u001b[0m\u001b[0m\r\n"] +[0.249686, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;119;119;119m*\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;228;46;112mday of the week\u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;255;255;255m using the \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m%l\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m option\u001b[0m\u001b[0m\r\n"] +[0.249733, "o", "\u001b[32;1m❯\u001b[0m "] +[1.324717, "o", "\u001b[38;2;255;255;255mday_of_the_week\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m(\u001b[0m\u001b[38;2;255;255;255mdate\u001b[0m\u001b[38;2;230;219;116m +\u001b[0m\u001b[38;2;255;255;255m%\u001b[0m\u001b[38;2;255;255;255ml\u001b[0m\u001b[38;2;230;219;116m)\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[1.330215, "o", "\r\n"] +[1.409032, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;119;119;119m*\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;228;46;112mhour of the day\u001b[0m\u001b[38;2;228;46;112m*\u001b[0m\u001b[38;2;255;255;255m using the \u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;236;53;51m%u\u001b[0m\u001b[38;2;236;53;51m`\u001b[0m\u001b[38;2;255;255;255m option\u001b[0m\u001b[0m\r\n"] +[1.409079, "o", "\u001b[32;1m❯\u001b[0m "] +[2.496021, "o", "\u001b[38;2;255;255;255mhour\u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;230;219;116m(\u001b[0m\u001b[38;2;255;255;255mdate\u001b[0m\u001b[38;2;230;219;116m +\u001b[0m\u001b[38;2;255;255;255m%\u001b[0m\u001b[38;2;255;255;255mu\u001b[0m\u001b[38;2;230;219;116m)\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n"] +[2.502282, "o", "\r\n\r\n"] +[2.588152, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mNow, can you guess what we're going to do with those two numbers?\u001b[0m\u001b[0m\r\n"] +[2.656072, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255m🤔...\u001b[0m\u001b[0m\r\n"] +[2.665474, "o", "\r0️⃣ 3️⃣ "] +[3.675073, "o", "\r0️⃣ 2️⃣ "] +[4.682834, "o", "\r0️⃣ 1️⃣ "] +[5.689489, "o", "\r \r"] +[5.689561, "o", "\r\n"] +[5.764166, "o", "💭 \u001b[3;1m\u001b[38;2;255;255;255mWe're going to add them together!\u001b[0m\u001b[0m\r\n"] +[5.829014, "o", "\u001b[32;1m❯\u001b[0m \u001b[38;2;102;217;239mecho\u001b[0m\u001b[38;2;255;255;255m \u001b[0m\u001b[38;2;255;255;255m$\u001b[0m\u001b[38;2;255;255;255m((\u001b[0m\u001b[38;2;255;255;255mday_of_the_week \u001b[0m\u001b[38;2;249;38;114m+\u001b[0m\u001b[38;2;255;255;255m hour\u001b[0m\u001b[38;2;255;255;255m))\u001b[0m\u001b[38;2;255;255;255m\u001b[0m\u001b[0m\r\n8\r\n"] +[5.829128, "o", "🎬 \u001b[32;3mEnd recording - \u001b[1mdemo-date_maths.asc\u001b[0m\r\n"]