1
1
mirror of https://github.com/Yvee1/hascard.git synced 2024-11-22 04:33:06 +03:00

Small fixes and added gifs and explantion of cards

This commit is contained in:
Steven van den Broek 2020-07-18 17:38:57 +02:00
parent 516bc2d21f
commit 44f95bc4ae
25 changed files with 1414 additions and 107 deletions

View File

@ -1,13 +1,54 @@
# hascard
An in-progress commandline utility for reviewing notes. 'Flashcards' can be written in markdown-like syntax. Different kind of questions are possible:
- [x] Simple flashcard
- Multiple choice question
- [x] Single correct answer
- [x] Multiple correct answers
- [x] Fill in the gaps
A commandline utility for reviewing notes. 'Flashcards' can be written in markdown-like syntax.
![a recording of example usage of the hascard application](./recording.gif)
![a recording of example usage of the hascard application](./recordings/recording.gif)
<!-- ![a terminal application with a multiple choice question depicted on it](./scrot.png) -->
## Cards
### Definition
This is the simplest card, it simply has a title and can be flipped to show the contents. For example the following card
```
# Word or question
Explanation or definition of this word, or the answer to the question.
```
will result in
![](./recordings/definition.gif)
UI built with [brick](https://github.com/jtdaugherty/brick) and parsing of cards done with [parsec](https://github.com/haskell/parsec)
### Multiple choice
This is a typical multiple choice question. The question starts with `# ` and the choices follow. Only one answer is correct, and is indicated by a `*`, the other questions are preceded by a `-`. As an example, the following text
```
# Multiple choice question, (only one answer is right)
- Choice 1
* Choice 2 (this is the correct answer)
- Choice 3
- Choice 4
```
gets rendered as
![](./recordings/multiple-choice.gif)
### Multiple answer
Multiple choice questions with multiple possible answers is also possible. Here again the question starts with `#` and the options follow. Preceding each option is a box `[ ]` that is filled with a `*` or a `x` if it is correct. For example
```
# Multiple answer question
[*] Option 1 (this is a correct answer)
[ ] Option 2
[*] Option 3 (this is a correct answer)
[ ] Option 4
```
results in
![](./recordings/multiple-answer.gif)
### Open question
Open questions are also supported. The words that have to be filled in should be surrounded by underscores `_`. Multiple answer possibilities can also be given by seperating them with vertical bars `|`. As an example, the card
```
# Fill in the gaps
The symbol € is for the currency named _Euro_, and is used in the _EU|European Union_.
```
behaves like this
![](./recordings/gapped-question.gif)
## Miscellaneous info
Written in Haskell, UI built with [brick](https://github.com/jtdaugherty/brick) and parsing of cards done with [parsec](https://github.com/haskell/parsec). Recordings of the terminal were made using [terminalizer](https://github.com/faressoft/terminalizer).

BIN
Setup.hi

Binary file not shown.

BIN
Setup.o

Binary file not shown.

View File

@ -2,15 +2,26 @@
intrinsically photosensitive Retinal Ganglion Cell
---
# The visual system
The visual system consists of two parts:
- An optical system that produces an image on the retina.
- An image-processing system. This spends most of its resources on the fovea.
# Peak intensity of motopic vision is at a wavelength of around
- 400 nm
- 450 nm
- 500 nm
* 550 nm
---
# Layers of the eye 1
Light falls onto the _retina_ which is covered by the _macula_ filter which protects against UV and low wavelengths.
---
# LGN
_lateral geniculate nuclei_
---
# Check the elements that are part of the primary visual path
[*] Optic nerve
[ ] RHP axis
[*] LGN
---
# Layers of the eye 2
Below the retina is the _choroid_ containing blood vessels.
@ -20,23 +31,18 @@ Below the retina is the _choroid_ containing blood vessels.
The last layer is the _sclera_. It is white, except in front where it is transparent.
---
# Peak intensity of motopic vision is at a wavelength of around
- 400 nm
- 450 nm
- 500 nm
* 550 nm
# Choroid
The choroid seperates from the sclera and becomes the _ciliary body_, and then the _iris_.
---
# Retina
Part of the eye that turns _light_ into _electrical neural impulses_.
---
# Choroid
The choroid seperates from sclera and becomes the _ciliary body_, and then the _iris_.
---
# LGN
_lateral geniculate nuclei_
# The visual system
The visual system consists of two parts:
- An optical system that produces an image on the retina.
- An image-processing system. This spends most of its resources on the fovea.
---
# LGN 6 layers

View File

@ -4,17 +4,17 @@ Explanation or definition of this word, or the answer to the question.
---
# Multiple choice question, (only one answer is right)
- Option 1
* Option 2 (this is the correct answer)
- Option 3
- Option 4
- Choice 1
* Choice 2 (this is the correct answer)
- Choice 3
- Choice 4
---
# Multiple choice question, (multiple possible answers)
[ ] Option 1
# Multiple answer question
[*] Option 1 (this is a correct answer)
[ ] Option 2
[x] Option 3 (this is the correct answer)
[*] Option 3 (this is a correct answer)
[ ] Option 4
---

View File

@ -1,25 +0,0 @@
# Simple card
This is the back of the card
---
# Multiple choice question, (only one answer is right)
- Option 1
* Option 2 (this is the correct answer)
- Option 3
- Option 4
---
# Multiple choice question, (multiple possible answers)
[ ] Option 1
[ ] Option 2
[x] Option 3 (this is the correct answer)
[ ] Option 4
---
# Fill in the gaps
The symbol € is for the currency named _Euro_, and is used in the _EU_.
---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

107
recordings/config.yml Normal file
View File

@ -0,0 +1,107 @@
# Specify a command to be executed
# like `/bin/bash -l`, `ls`, or any other commands
# the default is bash for Linux
# or powershell.exe for Windows
command: zsh
# Specify the current working directory path
# the default is the current working directory path
cwd: null
# Export additional ENV variables
env:
recording: true
# Explicitly set the number of columns
# or use `auto` to take the current
# number of columns of your shell
cols: auto
# Explicitly set the number of rows
# or use `auto` to take the current
# number of rows of your shell
rows: auto
# Amount of times to repeat GIF
# If value is -1, play once
# If value is 0, loop indefinitely
# If value is a positive number, loop n times
repeat: 0
# Quality
# 1 - 100
quality: 100
# Delay between frames in ms
# If the value is `auto` use the actual recording delays
frameDelay: auto
# Maximum delay between frames in ms
# Ignored if the `frameDelay` isn't set to `auto`
# Set to `auto` to prevent limiting the max idle time
maxIdleTime: 2000
# The surrounding frame box
# The `type` can be null, window, floating, or solid`
# To hide the title use the value null
# Don't forget to add a backgroundColor style with a null as type
frameBox:
type: solid
title: null
style:
border: 0px black solid
# boxShadow: none
# margin: 0px
# Add a watermark image to the rendered gif
# You need to specify an absolute path for
# the image on your machine or a URL, and you can also
# add your own CSS styles
watermark:
imagePath: null
style:
position: absolute
right: 15px
bottom: 15px
width: 100px
opacity: 0.9
# Cursor style can be one of
# `block`, `underline`, or `bar`
cursorStyle: bar
# Font family
# You can use any font that is installed on your machine
# in CSS-like syntax
fontFamily: "Iosevka"
# The size of the font
fontSize: 24
# The height of lines
lineHeight: 0.92
# The spacing between letters
letterSpacing: 0
# Theme
theme:
background: "transparent"
foreground: "#afafaf"
cursor: "#c7c7c7"
black: "#232628"
red: "#fc4384"
green: "#b3e33b"
yellow: "#ffa727"
blue: "#75dff2"
magenta: "#ae89fe"
cyan: "#708387"
white: "#d5d5d0"
brightBlack: "#626566"
brightRed: "#ff7fac"
brightGreen: "#c8ed71"
brightYellow: "#ebdf86"
brightBlue: "#75dff2"
brightMagenta: "#ae89fe"
brightCyan: "#b1c6ca"
brightWhite: "#f9f9f4"

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -0,0 +1,117 @@
# The configurations that used for the recording, feel free to edit them
config:
# Specify a command to be executed
# like `/bin/bash -l`, `ls`, or any other commands
# the default is bash for Linux
# or powershell.exe for Windows
command: zsh
# Specify the current working directory path
# the default is the current working directory path
cwd: /home/steven
# Export additional ENV variables
env:
recording: true
# Explicitly set the number of columns
# or use `auto` to take the current
# number of columns of your shell
cols: 112
# Explicitly set the number of rows
# or use `auto` to take the current
# number of rows of your shell
rows: 29
# Amount of times to repeat GIF
# If value is -1, play once
# If value is 0, loop indefinitely
# If value is a positive number, loop n times
repeat: 0
# Quality
# 1 - 100
quality: 100
# Delay between frames in ms
# If the value is `auto` use the actual recording delays
frameDelay: auto
# Maximum delay between frames in ms
# Ignored if the `frameDelay` isn't set to `auto`
# Set to `auto` to prevent limiting the max idle time
maxIdleTime: 2000
# The surrounding frame box
# The `type` can be null, window, floating, or solid`
# To hide the title use the value null
# Don't forget to add a backgroundColor style with a null as type
frameBox:
type: solid
title: null
style:
border: 0px black solid
# boxShadow: none
# margin: 0px
# Add a watermark image to the rendered gif
# You need to specify an absolute path for
# the image on your machine or a URL, and you can also
# add your own CSS styles
watermark:
imagePath: null
style:
position: absolute
right: 15px
bottom: 15px
width: 100px
opacity: 0.9
# Cursor style can be one of
# `block`, `underline`, or `bar`
cursorStyle: bar
# Font family
# You can use any font that is installed on your machine
# in CSS-like syntax
fontFamily: "Iosevka"
# The size of the font
fontSize: 24
# The height of lines
lineHeight: 0.98
# The spacing between letters
letterSpacing: 0
# Theme
theme:
background: "transparent"
foreground: "#afafaf"
cursor: "#c7c7c7"
black: "#232628"
red: "#fc4384"
green: "#b3e33b"
yellow: "#ffa727"
blue: "#75dff2"
magenta: "#ae89fe"
cyan: "#708387"
white: "#d5d5d0"
brightBlack: "#626566"
brightRed: "#ff7fac"
brightGreen: "#c8ed71"
brightYellow: "#ebdf86"
brightBlue: "#75dff2"
brightMagenta: "#ae89fe"
brightCyan: "#b1c6ca"
brightWhite: "#f9f9f4"
# Records, feel free to edit them
records:
- delay: 2000
content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m \e[8;1H\e(B\e[m \e[9;1H\e(B\e[m \e[10;1H\e(B\e[m \e[11;1H\e(B\e[m ╭──────────────────────────────────────────────────────────────────╮ \e[12;1H\e(B\e[m │\e[33m Word or question \e(B\e[m│ \e[13;1H\e(B\e[m ├──────────────────────────────────────────────────────────────────┤ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ │ \e[16;1H\e(B\e[m │ │ \e[17;1H\e(B\e[m │ 1/4 │ \e[18;1H\e(B\e[m ╰──────────────────────────────────────────────────────────────────╯ \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m \e[23;1H\e(B\e[m \e[24;1H\e(B\e[m \e[25;1H\e(B\e[m \e[26;1H\e(B\e[m \e[27;1H\e(B\e[m \e[28;1H\e(B\e[m \e[29;1H\e(B\e[m "
- delay: 2000
content: "\e[?25l\e[14;1H\e(B\e[m │ Explanation or definition of this word, or the answer to the │ \e[15;1H\e(B\e[m │ question. │ \e[16;1H\e(B\e[m │ │ "

BIN
recordings/definition.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

117
recordings/definition.yml Normal file
View File

@ -0,0 +1,117 @@
# The configurations that used for the recording, feel free to edit them
config:
# Specify a command to be executed
# like `/bin/bash -l`, `ls`, or any other commands
# the default is bash for Linux
# or powershell.exe for Windows
command: zsh
# Specify the current working directory path
# the default is the current working directory path
cwd: /media/steven/shared/Documents/Coding/Haskell/hascard
# Export additional ENV variables
env:
recording: true
# Explicitly set the number of columns
# or use `auto` to take the current
# number of columns of your shell
cols: 80
# Explicitly set the number of rows
# or use `auto` to take the current
# number of rows of your shell
rows: 22
# Amount of times to repeat GIF
# If value is -1, play once
# If value is 0, loop indefinitely
# If value is a positive number, loop n times
repeat: 0
# Quality
# 1 - 100
quality: 100
# Delay between frames in ms
# If the value is `auto` use the actual recording delays
frameDelay: auto
# Maximum delay between frames in ms
# Ignored if the `frameDelay` isn't set to `auto`
# Set to `auto` to prevent limiting the max idle time
maxIdleTime: 2000
# The surrounding frame box
# The `type` can be null, window, floating, or solid`
# To hide the title use the value null
# Don't forget to add a backgroundColor style with a null as type
frameBox:
type: solid
title: null
style:
border: 0px black solid
# boxShadow: none
# margin: 0px
# Add a watermark image to the rendered gif
# You need to specify an absolute path for
# the image on your machine or a URL, and you can also
# add your own CSS styles
watermark:
imagePath: null
style:
position: absolute
right: 15px
bottom: 15px
width: 100px
opacity: 0.9
# Cursor style can be one of
# `block`, `underline`, or `bar`
cursorStyle: bar
# Font family
# You can use any font that is installed on your machine
# in CSS-like syntax
fontFamily: "Iosevka"
# The size of the font
fontSize: 24
# The height of lines
lineHeight: 0.92
# The spacing between letters
letterSpacing: 0
# Theme
theme:
background: "transparent"
foreground: "#afafaf"
cursor: "#c7c7c7"
black: "#232628"
red: "#fc4384"
green: "#b3e33b"
yellow: "#ffa727"
blue: "#75dff2"
magenta: "#ae89fe"
cyan: "#708387"
white: "#d5d5d0"
brightBlack: "#626566"
brightRed: "#ff7fac"
brightGreen: "#c8ed71"
brightYellow: "#ebdf86"
brightBlue: "#75dff2"
brightMagenta: "#ae89fe"
brightCyan: "#b1c6ca"
brightWhite: "#f9f9f4"
# Records, feel free to edit them
records:
- delay: 2000
content: "\e[?1049h\e[22;0;0t\e[H\e[2J\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m \e[8;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[9;1H\e(B\e[m │\e[33m Word or question \e(B\e[m│ \e[10;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[11;1H\e(B\e[m │ │ \e[12;1H\e(B\e[m │ │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ 1/4 │ \e[15;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[16;1H\e(B\e[m \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
- delay: 2000
content: "\e[?25l\e[11;1H\e(B\e[m │ Explanation or definition of this word, or │ \e[12;1H\e(B\e[m │ the answer to the question. │ \e[13;1H\e(B\e[m │ │ "

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

View File

@ -0,0 +1,209 @@
# The configurations that used for the recording, feel free to edit them
config:
# Specify a command to be executed
# like `/bin/bash -l`, `ls`, or any other commands
# the default is bash for Linux
# or powershell.exe for Windows
command: zsh
# Specify the current working directory path
# the default is the current working directory path
cwd: /media/steven/shared/Documents/Coding/Haskell/hascard
# Export additional ENV variables
env:
recording: true
# Explicitly set the number of columns
# or use `auto` to take the current
# number of columns of your shell
cols: 80
# Explicitly set the number of rows
# or use `auto` to take the current
# number of rows of your shell
rows: 22
# Amount of times to repeat GIF
# If value is -1, play once
# If value is 0, loop indefinitely
# If value is a positive number, loop n times
repeat: 0
# Quality
# 1 - 100
quality: 100
# Delay between frames in ms
# If the value is `auto` use the actual recording delays
frameDelay: auto
# Maximum delay between frames in ms
# Ignored if the `frameDelay` isn't set to `auto`
# Set to `auto` to prevent limiting the max idle time
maxIdleTime: 2000
# The surrounding frame box
# The `type` can be null, window, floating, or solid`
# To hide the title use the value null
# Don't forget to add a backgroundColor style with a null as type
frameBox:
type: solid
title: null
style:
border: 0px black solid
# boxShadow: none
# margin: 0px
# Add a watermark image to the rendered gif
# You need to specify an absolute path for
# the image on your machine or a URL, and you can also
# add your own CSS styles
watermark:
imagePath: null
style:
position: absolute
right: 15px
bottom: 15px
width: 100px
opacity: 0.9
# Cursor style can be one of
# `block`, `underline`, or `bar`
cursorStyle: bar
# Font family
# You can use any font that is installed on your machine
# in CSS-like syntax
fontFamily: "Iosevka"
# The size of the font
fontSize: 24
# The height of lines
lineHeight: 0.92
# The spacing between letters
letterSpacing: 0
# Theme
theme:
background: "transparent"
foreground: "#afafaf"
cursor: "#c7c7c7"
black: "#232628"
red: "#fc4384"
green: "#b3e33b"
yellow: "#ffa727"
blue: "#75dff2"
magenta: "#ae89fe"
cyan: "#708387"
white: "#d5d5d0"
brightBlack: "#626566"
brightRed: "#ff7fac"
brightGreen: "#c8ed71"
brightYellow: "#ebdf86"
brightBlue: "#75dff2"
brightMagenta: "#ae89fe"
brightCyan: "#b1c6ca"
brightWhite: "#f9f9f4"
# Records, feel free to edit them
records:
# - delay: 870
# content: "\e[1m\e[7m%\e[27m\e[1m\e[0m \r \r\e]2;..skell/hascard\a"
# - delay: 36
# content: "\r\e[0m\e[27m\e[24m\e[J\e[01;32m➜ \e[36mhascard\e[00m \e[01;34mgit:(\e[31mmaster\e[34m) \e[33m✗\e[00m \e[K\e[?1h\e=\e[?2004h"
# - delay: 401
# content: "h\e[90mascard\e[39m\b\b\b\b\b\b"
# - delay: 106
# content: "\bh\e[39ma"
# - delay: 54
# content: "\e[39ms"
# - delay: 71
# content: "\e[39mk\e[39m \e[39m \e[39m \b\b\b"
# - delay: 86
# content: e
# - delay: 78
# content: l
# - delay: 326
# content: "\b \b"
# - delay: 122
# content: "\b \b"
# - delay: 126
# content: "\b\e[90mc\e[90mard\e[39m\b\b\b\b"
# - delay: 148
# content: "\e[39mc"
# - delay: 195
# content: "\e[39ma"
# - delay: 40
# content: "\e[39mr"
# - delay: 78
# content: "\e[39md"
# - delay: 106
# content: "\e[?1l\e>\e[?2004l\r\r\n\e]2;hascard\a"
# - delay: 15
# content: "\e[5 q\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 13
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭────────────────────────────────────────╮ \e[8;1H\e(B\e[m │ \e[33m┬ ┬┌─┐┌─┐┌─┐┌─┐┬─┐┌┬┐\e(B\e[m │ \e[9;1H\e(B\e[m │ \e[33m├─┤├─┤└─┐│ ├─┤├┬┘ ││\e(B\e[m │ \e[10;1H\e(B\e[m │ \e[33m┴ ┴┴ ┴└─┘└─┘┴ ┴┴└──┴┘\e(B\e[m │ \e[11;1H\e(B\e[m ├────────────────────────────────────────┤ \e[12;1H\e(B\e[m │ \e[4m\e[37mSelect\e(B\e[m │ \e[13;1H\e(B\e[m │ Info │ \e[14;1H\e(B\e[m │ Settings │ \e[15;1H\e(B\e[m │ Quit │ \e[16;1H\e(B\e[m ╰────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 565
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 19
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Select a deck of flashcards \e(B\e[m│ \e[9;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ \e[4m\e[37mexample\e(B\e[m │ \e[11;1H\e(B\e[m │ test │ \e[12;1H\e(B\e[m │ analysis3 │ \e[13;1H\e(B\e[m │ syntax │ \e[14;1H\e(B\e[m │ \e[34mSelect file from system\e(B\e[m │ \e[15;1H\e(B\e[m │ │ \e[16;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 302
# content: "\e[?25l\e[10;1H\e(B\e[m │ example │ \e[11;1H\e(B\e[m │ \e[4m\e[37mtest\e(B\e[m │ "
# - delay: 163
# content: "\e[?25l\e[11;1H\e(B\e[m │ test │ \e[12;1H\e(B\e[m │ \e[4m\e[37manalysis3\e(B\e[m │ "
# - delay: 158
# content: "\e[?25l\e[12;1H\e(B\e[m │ analysis3 │ \e[13;1H\e(B\e[m │ \e[4m\e[37msyntax\e(B\e[m │ "
# - delay: 1584
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h"
# - delay: 8
# content: "\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 5
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m \e[8;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[9;1H\e(B\e[m │\e[33m Word or question \e(B\e[m│ \e[10;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[11;1H\e(B\e[m │ │ \e[12;1H\e(B\e[m │ │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ 1/4 │ \e[15;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[16;1H\e(B\e[m \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 1181
# content: "\e[?25l\e[6;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[7;1H\e(B\e[m │\e[33m Multiple choice question, (only one answer is \e(B\e[m│ \e[8;1H\e(B\e[m │\e[33m right) \e(B\e[m│ \e[9;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 1 │ \e[11;1H\e(B\e[m │ Choice 2 (this is the correct answer) │ \e[12;1H\e(B\e[m │ Choice 3 │ \e[13;1H\e(B\e[m │ Choice 4 │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ 2/4 │ \e[16;1H\e(B\e[m ╰───────────────────────────────────────────────╯ "
# - delay: 547
# content: "\e[?25l\e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Multiple answer question \e(B\e[m│ \e[10;1H\e(B\e[m │[\e[33m*\e(B\e[m] Option 1 (this is a correct answer) │ \e[11;1H\e(B\e[m │[ ] Option 2 │ \e[12;1H\e(B\e[m │[ ] Option 3 (this is a correct answer) │ \e[13;1H\e(B\e[m │[ ] Option 4 │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ 3/4 │ "
- delay: 1250
content: "\e[?25l\e[7;1H\e(B\e[m \e[8;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[9;1H\e(B\e[m │\e[33m Fill in the gaps \e(B\e[m│ \e[10;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[11;1H\e(B\e[m │ The symbol € is for the currency named , and │ \e[12;1H\e(B\e[m │ is used in the . │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ 4/4 │ \e[15;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[16;1H\e(B\e[m \e[?12l\e[?25h\e[11;57H"
- delay: 7312
content: "\e[?25l\e[11;1H\e(B\e[m │ The symbol € is for the currency named \e[4mE\e[24m, and │ \e[12;1H\e(B\e[m │ is used in the . │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;58H"
- delay: 328
content: "\e[?25l\e[11;1H\e(B\e[m │ The symbol € is for the currency named \e[4mEu\e[24m, │ \e[12;1H\e(B\e[m │ and is used in the . │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;59H"
- delay: 137
content: "\e[?25l\e[11;1H\e(B\e[m │ The symbol € is for the currency named \e[4mEur\e[24m, │ \e[12;1H\e(B\e[m │ and is used in the . │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;60H"
- delay: 208
content: "\e[?25l\e[11;1H\e(B\e[m │ The symbol € is for the currency named \e[4mEuro\e[24m, │ \e[12;1H\e(B\e[m │ and is used in the . │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;61H"
- delay: 352
content: "\e[?25l\e[?12l\e[?25h\e[12;37H"
- delay: 764
content: "\e[?25l\e[12;1H\e(B\e[m │ and is used in the \e[4mU\e[24m. │ \e[?12l\e[?25h\e[12;38H"
- delay: 152
content: "\e[?25l\e[12;1H\e(B\e[m │ and is used in the \e[4mUS\e[24m. │ \e[?12l\e[?25h\e[12;39H"
- delay: 318
content: "\e[?25l\e[11;1H\e(B\e[m │ The symbol € is for the currency named \e[4m\e[32mEuro\e(B\e[m, │ \e[12;1H\e(B\e[m │ and is used in the \e[4m\e[31mUS\e(B\e[m. │ \e[?12l\e[?25h\e[12;39H"
- delay: 1765
content: "\e[?25l\e[12;1H\e(B\e[m │ and is used in the \e[4m\e[31mU\e(B\e[m. │ \e[?12l\e[?25h\e[12;38H"
- delay: 161
content: "\e[?25l\e[12;1H\e(B\e[m │ and is used in the . │ \e[?12l\e[?25h\e[12;37H"
- delay: 538
content: "\e[?25l\e[12;1H\e(B\e[m │ and is used in the \e[4m\e[31mE\e(B\e[m. │ \e[?12l\e[?25h\e[12;38H"
- delay: 278
content: "\e[?25l\e[12;1H\e(B\e[m │ and is used in the \e[4m\e[31mEU\e(B\e[m. │ \e[?12l\e[?25h\e[12;39H"
- delay: 575
content: "\e[?25l\e[12;1H\e(B\e[m │ and is used in the \e[4m\e[32mEU\e(B\e[m. │ \e[?12l\e[?25h\e[12;39H"
# - delay: 1217
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 16
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Select a deck of flashcards \e(B\e[m│ \e[9;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ example │ \e[11;1H\e(B\e[m │ test │ \e[12;1H\e(B\e[m │ analysis3 │ \e[13;1H\e(B\e[m │ \e[4m\e[37msyntax\e(B\e[m │ \e[14;1H\e(B\e[m │ \e[34mSelect file from system\e(B\e[m │ \e[15;1H\e(B\e[m │ │ \e[16;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 811
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 178
# content: "[1] 42421 segmentation fault (core dumped) hascard\r\n\e[1m\e[7m%\e[27m\e[1m\e[0m \r \r\e]2;..skell/hascard\a"
# - delay: 31
# content: "\r\e[0m\e[27m\e[24m\e[J\e[01;31m➜ \e[36mhascard\e[00m \e[01;34mgit:(\e[31mmaster\e[34m) \e[33m✗\e[00m \e[K\e[?1h\e=\e[?2004h"
# - delay: 2216
# content: "\e[?2004l\r\r\n"

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View File

@ -0,0 +1,217 @@
# The configurations that used for the recording, feel free to edit them
config:
# Specify a command to be executed
# like `/bin/bash -l`, `ls`, or any other commands
# the default is bash for Linux
# or powershell.exe for Windows
command: zsh
# Specify the current working directory path
# the default is the current working directory path
cwd: /media/steven/shared/Documents/Coding/Haskell/hascard
# Export additional ENV variables
env:
recording: true
# Explicitly set the number of columns
# or use `auto` to take the current
# number of columns of your shell
cols: 80
# Explicitly set the number of rows
# or use `auto` to take the current
# number of rows of your shell
rows: 22
# Amount of times to repeat GIF
# If value is -1, play once
# If value is 0, loop indefinitely
# If value is a positive number, loop n times
repeat: 0
# Quality
# 1 - 100
quality: 100
# Delay between frames in ms
# If the value is `auto` use the actual recording delays
frameDelay: auto
# Maximum delay between frames in ms
# Ignored if the `frameDelay` isn't set to `auto`
# Set to `auto` to prevent limiting the max idle time
maxIdleTime: 2000
# The surrounding frame box
# The `type` can be null, window, floating, or solid`
# To hide the title use the value null
# Don't forget to add a backgroundColor style with a null as type
frameBox:
type: solid
title: null
style:
border: 0px black solid
# boxShadow: none
# margin: 0px
# Add a watermark image to the rendered gif
# You need to specify an absolute path for
# the image on your machine or a URL, and you can also
# add your own CSS styles
watermark:
imagePath: null
style:
position: absolute
right: 15px
bottom: 15px
width: 100px
opacity: 0.9
# Cursor style can be one of
# `block`, `underline`, or `bar`
cursorStyle: bar
# Font family
# You can use any font that is installed on your machine
# in CSS-like syntax
fontFamily: "Iosevka"
# The size of the font
fontSize: 24
# The height of lines
lineHeight: 0.92
# The spacing between letters
letterSpacing: 0
# Theme
theme:
background: "transparent"
foreground: "#afafaf"
cursor: "#c7c7c7"
black: "#232628"
red: "#fc4384"
green: "#b3e33b"
yellow: "#ffa727"
blue: "#75dff2"
magenta: "#ae89fe"
cyan: "#708387"
white: "#d5d5d0"
brightBlack: "#626566"
brightRed: "#ff7fac"
brightGreen: "#c8ed71"
brightYellow: "#ebdf86"
brightBlue: "#75dff2"
brightMagenta: "#ae89fe"
brightCyan: "#b1c6ca"
brightWhite: "#f9f9f4"
# Records, feel free to edit them
records:
# - delay: 891
# content: "\e[1m\e[7m%\e[27m\e[1m\e[0m \r \r\e]2;..skell/hascard\a"
# - delay: 35
# content: "\r\e[0m\e[27m\e[24m\e[J\e[01;32m➜ \e[36mhascard\e[00m \e[01;34mgit:(\e[31mmaster\e[34m) \e[33m✗\e[00m \e[K\e[?1h\e=\e[?2004h"
# - delay: 311
# content: "h\e[90mascard\e[39m\b\b\b\b\b\b"
# - delay: 84
# content: "\bh\e[39ma"
# - delay: 46
# content: "\e[39ms"
# - delay: 189
# content: "\e[39mc"
# - delay: 122
# content: "\e[39ma"
# - delay: 103
# content: "\e[39mr"
# - delay: 73
# content: "\e[39md"
# - delay: 147
# content: "\e[?1l\e>\e[?2004l\r\r\n\e]2;hascard\a"
# - delay: 9
# content: "\e[5 q\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 16
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭────────────────────────────────────────╮ \e[8;1H\e(B\e[m │ \e[33m┬ ┬┌─┐┌─┐┌─┐┌─┐┬─┐┌┬┐\e(B\e[m │ \e[9;1H\e(B\e[m │ \e[33m├─┤├─┤└─┐│ ├─┤├┬┘ ││\e(B\e[m │ \e[10;1H\e(B\e[m │ \e[33m┴ ┴┴ ┴└─┘└─┘┴ ┴┴└──┴┘\e(B\e[m │ \e[11;1H\e(B\e[m ├────────────────────────────────────────┤ \e[12;1H\e(B\e[m │ \e[4m\e[37mSelect\e(B\e[m │ \e[13;1H\e(B\e[m │ Info │ \e[14;1H\e(B\e[m │ Settings │ \e[15;1H\e(B\e[m │ Quit │ \e[16;1H\e(B\e[m ╰────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 397
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 12
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Select a deck of flashcards \e(B\e[m│ \e[9;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ \e[4m\e[37mexample\e(B\e[m │ \e[11;1H\e(B\e[m │ test │ \e[12;1H\e(B\e[m │ analysis3 │ \e[13;1H\e(B\e[m │ syntax │ \e[14;1H\e(B\e[m │ \e[34mSelect file from system\e(B\e[m │ \e[15;1H\e(B\e[m │ │ \e[16;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 319
# content: "\e[?25l\e[10;1H\e(B\e[m │ example │ \e[11;1H\e(B\e[m │ \e[4m\e[37mtest\e(B\e[m │ "
# - delay: 155
# content: "\e[?25l\e[11;1H\e(B\e[m │ test │ \e[12;1H\e(B\e[m │ \e[4m\e[37manalysis3\e(B\e[m │ "
# - delay: 167
# content: "\e[?25l\e[12;1H\e(B\e[m │ analysis3 │ \e[13;1H\e(B\e[m │ \e[4m\e[37msyntax\e(B\e[m │ "
# - delay: 159
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 14
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m \e[8;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[9;1H\e(B\e[m │\e[33m Word or question \e(B\e[m│ \e[10;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[11;1H\e(B\e[m │ │ \e[12;1H\e(B\e[m │ │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ 1/4 │ \e[15;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[16;1H\e(B\e[m \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 355
# content: "\e[?25l\e[11;1H\e(B\e[m │ Explanation or definition of this word, or │ \e[12;1H\e(B\e[m │ the answer to the question. │ \e[13;1H\e(B\e[m │ │ "
# - delay: 226
# content: "\e[?25l\e[6;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[7;1H\e(B\e[m │\e[33m Multiple choice question, (only one answer is \e(B\e[m│ \e[8;1H\e(B\e[m │\e[33m right) \e(B\e[m│ \e[9;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 1 │ \e[11;1H\e(B\e[m │ Choice 2 (this is the correct answer) │ \e[12;1H\e(B\e[m │ Choice 3 │ \e[13;1H\e(B\e[m │ Choice 4 │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ 2/4 │ \e[16;1H\e(B\e[m ╰───────────────────────────────────────────────╯ "
# - delay: 647
# content: "\e[?25l\e[10;1H\e(B\e[m │ Choice 1 │ \e[11;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 2 (this is the correct answer) │ "
# - delay: 158
# content: "\e[?25l\e[11;1H\e(B\e[m │ \e[33m* \e[32mChoice 2 (this is the correct answer) \e(B\e[m │ "
# - delay: 364
# content: "\e[?25l\e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Multiple answer question \e(B\e[m│ \e[10;1H\e(B\e[m │[\e[33m*\e(B\e[m] Option 1 (this is a correct answer) │ \e[11;1H\e(B\e[m │[ ] Option 2 │ \e[12;1H\e(B\e[m │[ ] Option 3 (this is a correct answer) │ \e[13;1H\e(B\e[m │[ ] Option 4 │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ 3/4 │ "
# - delay: 4723
# content: "\e[?25l\e[10;1H\e(B\e[m │\e[34m[\e[33m*\e[34m] \e(B\e[mOption 1 (this is a correct answer) │ "
# - delay: 256
# content: "\e[?25l\e[10;1H\e(B\e[m │\e[34m[*] \e(B\e[mOption 1 (this is a correct answer) │ \e[11;1H\e(B\e[m │[\e[33m*\e(B\e[m] Option 2 │ "
# - delay: 267
# content: "\e[?25l\e[11;1H\e(B\e[m │[ ] Option 2 │ \e[12;1H\e(B\e[m │[\e[33m*\e(B\e[m] Option 3 (this is a correct answer) │ "
# - delay: 678
# content: "\e[?25l\e[12;1H\e(B\e[m │\e[34m[\e[33m*\e[34m] \e(B\e[mOption 3 (this is a correct answer) │ "
# - delay: 1223
# content: "\e[?25l\e[12;1H\e(B\e[m │[\e[33m*\e(B\e[m] Option 3 (this is a correct answer) │ "
# - delay: 3776
# content: "\e[?25l\e[6;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[7;1H\e(B\e[m │\e[33m Multiple choice question, (only one answer is \e(B\e[m│ \e[8;1H\e(B\e[m │\e[33m right) \e(B\e[m│ \e[10;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 1 │ \e[11;1H\e(B\e[m │ Choice 2 (this is the correct answer) │ \e[12;1H\e(B\e[m │ Choice 3 │ \e[13;1H\e(B\e[m │ Choice 4 │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ 2/4 │ "
# - delay: 1604
# content: "\e[?25l"
# - delay: 242
# content: "\e[?25l\e[10;1H\e(B\e[m │ Choice 1 │ \e[11;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 2 (this is the correct answer) │ "
# - delay: 190
# content: "\e[?25l\e[11;1H\e(B\e[m │ Choice 2 (this is the correct answer) │ \e[12;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 3 │ "
# - delay: 191
# content: "\e[?25l\e[12;1H\e(B\e[m │ \e[33m* \e[31mChoice 3 \e(B\e[m │ "
# - delay: 209
# content: "\e[?25l"
# - delay: 535
# content: "\e[?25l\e[11;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 2 (this is the correct answer) │ \e[12;1H\e(B\e[m │ \e[31mChoice 3 \e(B\e[m │ "
# - delay: 136
# content: "\e[?25l\e[11;1H\e(B\e[m │ \e[33m* \e[32mChoice 2 (this is the correct answer) \e(B\e[m │ "
- delay: 2000
content: "\e[?25l\e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Multiple answer question \e(B\e[m│ \e[9;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │[\e[33m*\e(B\e[m] Option 1 (this is a correct answer) │ \e[11;1H\e(B\e[m │[ ] Option 2 │ \e[12;1H\e(B\e[m │[ ] Option 3 (this is a correct answer) │ \e[13;1H\e(B\e[m │[ ] Option 4 │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ 3/4 │ \e[16;1H\e(B\e[m ╰───────────────────────────────────────────────╯ "
- delay: 1500
content: "\e[?25l\e[10;1H\e(B\e[m │\e[34m[\e[33m*\e[34m] \e(B\e[mOption 1 (this is a correct answer) │ "
- delay: 374
content: "\e[?25l\e[10;1H\e(B\e[m │\e[34m[*] \e(B\e[mOption 1 (this is a correct answer) │ \e[11;1H\e(B\e[m │[\e[33m*\e(B\e[m] Option 2 │ "
- delay: 227
content: "\e[?25l\e[11;1H\e(B\e[m │[ ] Option 2 │ \e[12;1H\e(B\e[m │[\e[33m*\e(B\e[m] Option 3 (this is a correct answer) │ "
- delay: 559
content: "\e[?25l\e[12;1H\e(B\e[m │\e[34m[\e[33m*\e[34m] \e(B\e[mOption 3 (this is a correct answer) │ "
- delay: 725
content: "\e[?25l\e[10;1H\e(B\e[m │\e[32m[*] \e(B\e[mOption 1 (this is a correct answer) │ \e[11;1H\e(B\e[m │\e[32m[ ] \e(B\e[mOption 2 │ \e[12;1H\e(B\e[m │\e[32m[*] \e(B\e[mOption 3 (this is a correct answer) │ \e[13;1H\e(B\e[m │\e[32m[ ] \e(B\e[mOption 4 │ "
# - delay: 2843
# content: "\e[?25l\e[7;1H\e(B\e[m \e[8;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[9;1H\e(B\e[m │\e[33m Fill in the gaps \e(B\e[m│ \e[10;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[11;1H\e(B\e[m │ The symbol € is for the currency named , and │ \e[12;1H\e(B\e[m │ is used in the . │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ 4/4 │ \e[15;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[16;1H\e(B\e[m \e[?12l\e[?25h\e[11;57H"
# - delay: 2806
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 14
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Select a deck of flashcards \e(B\e[m│ \e[9;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ example │ \e[11;1H\e(B\e[m │ test │ \e[12;1H\e(B\e[m │ analysis3 │ \e[13;1H\e(B\e[m │ \e[4m\e[37msyntax\e(B\e[m │ \e[14;1H\e(B\e[m │ \e[34mSelect file from system\e(B\e[m │ \e[15;1H\e(B\e[m │ │ \e[16;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 190
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 5
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭────────────────────────────────────────╮ \e[8;1H\e(B\e[m │ \e[33m┬ ┬┌─┐┌─┐┌─┐┌─┐┬─┐┌┬┐\e(B\e[m │ \e[9;1H\e(B\e[m │ \e[33m├─┤├─┤└─┐│ ├─┤├┬┘ ││\e(B\e[m │ \e[10;1H\e(B\e[m │ \e[33m┴ ┴┴ ┴└─┘└─┘┴ ┴┴└──┴┘\e(B\e[m │ \e[11;1H\e(B\e[m ├────────────────────────────────────────┤ \e[12;1H\e(B\e[m │ \e[4m\e[37mSelect\e(B\e[m │ \e[13;1H\e(B\e[m │ Info │ \e[14;1H\e(B\e[m │ Settings │ \e[15;1H\e(B\e[m │ Quit │ \e[16;1H\e(B\e[m ╰────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 337
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h"
# - delay: 6
# content: "\e[1m\e[7m%\e[27m\e[1m\e[0m \r \r\e]2;..skell/hascard\a"
# - delay: 58
# content: "\r\e[0m\e[27m\e[24m\e[J\e[01;32m➜ \e[36mhascard\e[00m \e[01;34mgit:(\e[31mmaster\e[34m) \e[33m✗\e[00m \e[K\e[?1h\e=\e[?2004h"
# - delay: 677
# content: "\e[?2004l\r\r\n"

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

View File

@ -0,0 +1,181 @@
# The configurations that used for the recording, feel free to edit them
config:
# Specify a command to be executed
# like `/bin/bash -l`, `ls`, or any other commands
# the default is bash for Linux
# or powershell.exe for Windows
command: zsh
# Specify the current working directory path
# the default is the current working directory path
cwd: /media/steven/shared/Documents/Coding/Haskell/hascard
# Export additional ENV variables
env:
recording: true
# Explicitly set the number of columns
# or use `auto` to take the current
# number of columns of your shell
cols: 80
# Explicitly set the number of rows
# or use `auto` to take the current
# number of rows of your shell
rows: 22
# Amount of times to repeat GIF
# If value is -1, play once
# If value is 0, loop indefinitely
# If value is a positive number, loop n times
repeat: 0
# Quality
# 1 - 100
quality: 100
# Delay between frames in ms
# If the value is `auto` use the actual recording delays
frameDelay: auto
# Maximum delay between frames in ms
# Ignored if the `frameDelay` isn't set to `auto`
# Set to `auto` to prevent limiting the max idle time
maxIdleTime: 2000
# The surrounding frame box
# The `type` can be null, window, floating, or solid`
# To hide the title use the value null
# Don't forget to add a backgroundColor style with a null as type
frameBox:
type: solid
title: null
style:
border: 0px black solid
# boxShadow: none
# margin: 0px
# Add a watermark image to the rendered gif
# You need to specify an absolute path for
# the image on your machine or a URL, and you can also
# add your own CSS styles
watermark:
imagePath: null
style:
position: absolute
right: 15px
bottom: 15px
width: 100px
opacity: 0.9
# Cursor style can be one of
# `block`, `underline`, or `bar`
cursorStyle: bar
# Font family
# You can use any font that is installed on your machine
# in CSS-like syntax
fontFamily: "Iosevka"
# The size of the font
fontSize: 24
# The height of lines
lineHeight: 0.92
# The spacing between letters
letterSpacing: 0
# Theme
theme:
background: "transparent"
foreground: "#afafaf"
cursor: "#c7c7c7"
black: "#232628"
red: "#fc4384"
green: "#b3e33b"
yellow: "#ffa727"
blue: "#75dff2"
magenta: "#ae89fe"
cyan: "#708387"
white: "#d5d5d0"
brightBlack: "#626566"
brightRed: "#ff7fac"
brightGreen: "#c8ed71"
brightYellow: "#ebdf86"
brightBlue: "#75dff2"
brightMagenta: "#ae89fe"
brightCyan: "#b1c6ca"
brightWhite: "#f9f9f4"
# Records, feel free to edit them
records:
# - delay: 828
# content: "\e[1m\e[7m%\e[27m\e[1m\e[0m \r \r\e]2;..skell/hascard\a"
# - delay: 35
# content: "\r\e[0m\e[27m\e[24m\e[J\e[01;32m➜ \e[36mhascard\e[00m \e[01;34mgit:(\e[31mmaster\e[34m) \e[33m✗\e[00m \e[K\e[?1h\e=\e[?2004h"
# - delay: 581
# content: "h\e[90mascard\e[39m\b\b\b\b\b\b"
# - delay: 107
# content: "\bh\e[39ma"
# - delay: 64
# content: "\e[39ms"
# - delay: 187
# content: "\e[39mc"
# - delay: 110
# content: "\e[39ma"
# - delay: 109
# content: "\e[39mr"
# - delay: 82
# content: "\e[39md"
# - delay: 141
# content: "\e[?1l\e>\e[?2004l\r\r\n\e]2;hascard\a"
# - delay: 12
# content: "\e[5 q\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 13
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭────────────────────────────────────────╮ \e[8;1H\e(B\e[m │ \e[33m┬ ┬┌─┐┌─┐┌─┐┌─┐┬─┐┌┬┐\e(B\e[m │ \e[9;1H\e(B\e[m │ \e[33m├─┤├─┤└─┐│ ├─┤├┬┘ ││\e(B\e[m │ \e[10;1H\e(B\e[m │ \e[33m┴ ┴┴ ┴└─┘└─┘┴ ┴┴└──┴┘\e(B\e[m │ \e[11;1H\e(B\e[m ├────────────────────────────────────────┤ \e[12;1H\e(B\e[m │ \e[4m\e[37mSelect\e(B\e[m │ \e[13;1H\e(B\e[m │ Info │ \e[14;1H\e(B\e[m │ Settings │ \e[15;1H\e(B\e[m │ Quit │ \e[16;1H\e(B\e[m ╰────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 797
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 14
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Select a deck of flashcards \e(B\e[m│ \e[9;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ \e[4m\e[37mexample\e(B\e[m │ \e[11;1H\e(B\e[m │ test │ \e[12;1H\e(B\e[m │ analysis3 │ \e[13;1H\e(B\e[m │ syntax │ \e[14;1H\e(B\e[m │ \e[34mSelect file from system\e(B\e[m │ \e[15;1H\e(B\e[m │ │ \e[16;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 1242
# content: "\e[?25l\e[10;1H\e(B\e[m │ example │ \e[11;1H\e(B\e[m │ \e[4m\e[37mtest\e(B\e[m │ "
# - delay: 162
# content: "\e[?25l\e[11;1H\e(B\e[m │ test │ \e[12;1H\e(B\e[m │ \e[4m\e[37manalysis3\e(B\e[m │ "
# - delay: 157
# content: "\e[?25l\e[12;1H\e(B\e[m │ analysis3 │ \e[13;1H\e(B\e[m │ \e[4m\e[37msyntax\e(B\e[m │ "
# - delay: 200
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m \e[8;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[9;1H\e(B\e[m │\e[33m Word or question \e(B\e[m│ \e[10;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[11;1H\e(B\e[m │ │ \e[12;1H\e(B\e[m │ │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ 1/4 │ \e[15;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[16;1H\e(B\e[m \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 1706
# content: "\e[?25l\e[11;1H\e(B\e[m │ Explanation or definition of this word, or │ \e[12;1H\e(B\e[m │ the answer to the question. │ \e[13;1H\e(B\e[m │ │ "
- delay: 606
content: "\e[?25l\e[6;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[7;1H\e(B\e[m │\e[33m Multiple choice question, (only one answer is \e(B\e[m│ \e[8;1H\e(B\e[m │\e[33m right) \e(B\e[m│ \e[9;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 1 │ \e[11;1H\e(B\e[m │ Choice 2 (this is the correct answer) │ \e[12;1H\e(B\e[m │ Choice 3 │ \e[13;1H\e(B\e[m │ Choice 4 │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ 2/4 │ \e[16;1H\e(B\e[m ╰───────────────────────────────────────────────╯ "
- delay: 996
content: "\e[?25l\e[10;1H\e(B\e[m │ Choice 1 │ \e[11;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 2 (this is the correct answer) │ "
- delay: 194
content: "\e[?25l\e[11;1H\e(B\e[m │ Choice 2 (this is the correct answer) │ \e[12;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 3 │ "
- delay: 714
content: "\e[?25l\e[12;1H\e(B\e[m │ \e[33m* \e[31mChoice 3 \e(B\e[m │ "
- delay: 990
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[33m* \e(B\e[mChoice 2 (this is the correct answer) │ \e[12;1H\e(B\e[m │ \e[31mChoice 3 \e(B\e[m │ "
- delay: 944
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[33m* \e[32mChoice 2 (this is the correct answer) \e(B\e[m │ "
# - delay: 1308
# content: "\e[?25l\e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Multiple answer question \e(B\e[m│ \e[10;1H\e(B\e[m │[\e[33m*\e(B\e[m] Choice 1 (this is a correct answer) │ \e[11;1H\e(B\e[m │[ ] Choice 2 │ \e[12;1H\e(B\e[m │[ ] Choice 3 (this is a correct answer) │ \e[13;1H\e(B\e[m │[ ] Choice 4 │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ 3/4 │ "
# - delay: 1942
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 5
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭───────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Select a deck of flashcards \e(B\e[m│ \e[9;1H\e(B\e[m ├───────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ example │ \e[11;1H\e(B\e[m │ test │ \e[12;1H\e(B\e[m │ analysis3 │ \e[13;1H\e(B\e[m │ \e[4m\e[37msyntax\e(B\e[m │ \e[14;1H\e(B\e[m │ \e[34mSelect file from system\e(B\e[m │ \e[15;1H\e(B\e[m │ │ \e[16;1H\e(B\e[m ╰───────────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 320
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
# - delay: 11
# content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭────────────────────────────────────────╮ \e[8;1H\e(B\e[m │ \e[33m┬ ┬┌─┐┌─┐┌─┐┌─┐┬─┐┌┬┐\e(B\e[m │ \e[9;1H\e(B\e[m │ \e[33m├─┤├─┤└─┐│ ├─┤├┬┘ ││\e(B\e[m │ \e[10;1H\e(B\e[m │ \e[33m┴ ┴┴ ┴└─┘└─┘┴ ┴┴└──┴┘\e(B\e[m │ \e[11;1H\e(B\e[m ├────────────────────────────────────────┤ \e[12;1H\e(B\e[m │ \e[4m\e[37mSelect\e(B\e[m │ \e[13;1H\e(B\e[m │ Info │ \e[14;1H\e(B\e[m │ Settings │ \e[15;1H\e(B\e[m │ Quit │ \e[16;1H\e(B\e[m ╰────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
# - delay: 512
# content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h"
# - delay: 11
# content: "\e[1m\e[7m%\e[27m\e[1m\e[0m \r \r\e]2;..skell/hascard\a"
# - delay: 59
# content: "\r\e[0m\e[27m\e[24m\e[J\e[01;32m➜ \e[36mhascard\e[00m \e[01;34mgit:(\e[31mmaster\e[34m) \e[33m✗\e[00m \e[K\e[?1h\e=\e[?2004h"
# - delay: 317
# content: "\e[?2004l\r\r\n"

BIN
recordings/recording.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

341
recordings/recording.yml Normal file
View File

@ -0,0 +1,341 @@
# The configurations that used for the recording, feel free to edit them
config:
# Specify a command to be executed
# like `/bin/bash -l`, `ls`, or any other commands
# the default is bash for Linux
# or powershell.exe for Windows
command: zsh
# Specify the current working directory path
# the default is the current working directory path
cwd: /home/steven
# Export additional ENV variables
env:
recording: true
# Explicitly set the number of columns
# or use `auto` to take the current
# number of columns of your shell
cols: 85
# Explicitly set the number of rows
# or use `auto` to take the current
# number of rows of your shell
rows: 22
# Amount of times to repeat GIF
# If value is -1, play once
# If value is 0, loop indefinitely
# If value is a positive number, loop n times
repeat: 0
# Quality
# 1 - 100
quality: 100
# Delay between frames in ms
# If the value is `auto` use the actual recording delays
frameDelay: auto
# Maximum delay between frames in ms
# Ignored if the `frameDelay` isn't set to `auto`
# Set to `auto` to prevent limiting the max idle time
maxIdleTime: 2000
# The surrounding frame box
# The `type` can be null, window, floating, or solid`
# To hide the title use the value null
# Don't forget to add a backgroundColor style with a null as type
frameBox:
type: solid
title: null
style:
border: 0px black solid
# boxShadow: none
# margin: 0px
# Add a watermark image to the rendered gif
# You need to specify an absolute path for
# the image on your machine or a URL, and you can also
# add your own CSS styles
watermark:
imagePath: null
style:
position: absolute
right: 15px
bottom: 15px
width: 100px
opacity: 0.9
# Cursor style can be one of
# `block`, `underline`, or `bar`
cursorStyle: bar
# Font family
# You can use any font that is installed on your machine
# in CSS-like syntax
fontFamily: "Iosevka"
# The size of the font
fontSize: 24
# The height of lines
lineHeight: 0.92
# The spacing between letters
letterSpacing: 0
# Theme
theme:
background: "transparent"
foreground: "#afafaf"
cursor: "#c7c7c7"
black: "#232628"
red: "#fc4384"
green: "#b3e33b"
yellow: "#ffa727"
blue: "#75dff2"
magenta: "#ae89fe"
cyan: "#708387"
white: "#d5d5d0"
brightBlack: "#626566"
brightRed: "#ff7fac"
brightGreen: "#c8ed71"
brightYellow: "#ebdf86"
brightBlue: "#75dff2"
brightMagenta: "#ae89fe"
brightCyan: "#b1c6ca"
brightWhite: "#f9f9f4"
# Records, feel free to edit them
records:
- delay: 1128
content: "\e[1m\e[7m%\e[27m\e[1m\e[0m \r \r\e]2;~\a"
- delay: 28
content: "\r\e[0m\e[27m\e[24m\e[J\e[01;32m➜ \e[36m~\e[00m \e[01;34mgit:(\e[31mlinux\e[34m) \e[33m✗\e[00m \e[K\e[?1h\e=\e[?2004h"
- delay: 1911
content: "h\e[90mascard\e[39m\b\b\b\b\b\b"
- delay: 124
content: "\bh\e[39ma"
- delay: 50
content: "\e[39ms"
- delay: 218
content: "\e[39mc"
- delay: 159
content: "\e[39ma"
- delay: 103
content: "\e[39mr"
- delay: 93
content: "\e[39md"
- delay: 167
content: "\e[?1l\e>\e[?2004l\r\r\n\e]2;hascard\a"
- delay: 8
content: "\e[5 q\e[?1049h\e[22;0;0t\e[H\e[2J\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭────────────────────────────────────────╮ \e[8;1H\e(B\e[m │ \e[33m┬ ┬┌─┐┌─┐┌─┐┌─┐┬─┐┌┬┐\e(B\e[m │ \e[9;1H\e(B\e[m │ \e[33m├─┤├─┤└─┐│ ├─┤├┬┘ ││\e(B\e[m │ \e[10;1H\e(B\e[m │ \e[33m┴ ┴┴ ┴└─┘└─┘┴ ┴┴└──┴┘\e(B\e[m │ \e[11;1H\e(B\e[m ├────────────────────────────────────────┤ \e[12;1H\e(B\e[m │ \e[4m\e[37mSelect\e(B\e[m │ \e[13;1H\e(B\e[m │ Info │ \e[14;1H\e(B\e[m │ Settings │ \e[15;1H\e(B\e[m │ Quit │ \e[16;1H\e(B\e[m ╰────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
- delay: 1080
content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
- delay: 7
content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭──────────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Select a deck of flashcards \e(B\e[m│ \e[9;1H\e(B\e[m ├──────────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ \e[4m\e[37mlight\e(B\e[m │ \e[11;1H\e(B\e[m │ \e[34mSelect file from system\e(B\e[m │ \e[12;1H\e(B\e[m │ │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ │ \e[16;1H\e(B\e[m ╰──────────────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
- delay: 1071
content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h"
- delay: 6
content: "\e[?1049h\e[22;0;0t\e[H\e[2J"
- delay: 7
content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m \e[8;1H\e(B\e[m ╭──────────────────────────────────────────────────╮ \e[9;1H\e(B\e[m │\e[33m ipRGC \e(B\e[m│ \e[10;1H\e(B\e[m ├──────────────────────────────────────────────────┤ \e[11;1H\e(B\e[m │ │ \e[12;1H\e(B\e[m │ │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ 1/13 │ \e[15;1H\e(B\e[m ╰──────────────────────────────────────────────────╯ \e[16;1H\e(B\e[m \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
- delay: 1327
content: "\e[?25l\e[11;1H\e(B\e[m │ intrinsically photosensitive Retinal Ganglion │ \e[12;1H\e(B\e[m │ Cell │ \e[13;1H\e(B\e[m │ │ "
- delay: 1669
content: "\e[?25l\e[6;1H\e(B\e[m ╭──────────────────────────────────────────────────╮ \e[7;1H\e(B\e[m │\e[33m Peak intensity of motopic vision is at a \e(B\e[m│ \e[8;1H\e(B\e[m │\e[33m wavelength of around \e(B\e[m│ \e[9;1H\e(B\e[m ├──────────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ \e[33m* \e(B\e[m400 nm │ \e[11;1H\e(B\e[m │ 450 nm │ \e[12;1H\e(B\e[m │ 500 nm │ \e[13;1H\e(B\e[m │ 550 nm │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ 2/13 │ \e[16;1H\e(B\e[m ╰──────────────────────────────────────────────────╯ "
- delay: 1075
content: "\e[?25l\e[10;1H\e(B\e[m │ 400 nm │ \e[11;1H\e(B\e[m │ \e[33m* \e(B\e[m450 nm │ "
- delay: 162
content: "\e[?25l\e[11;1H\e(B\e[m │ 450 nm │ \e[12;1H\e(B\e[m │ \e[33m* \e(B\e[m500 nm │ "
- delay: 146
content: "\e[?25l\e[12;1H\e(B\e[m │ 500 nm │ \e[13;1H\e(B\e[m │ \e[33m* \e(B\e[m550 nm │ "
- delay: 389
content: "\e[?25l\e[12;1H\e(B\e[m │ \e[33m* \e(B\e[m500 nm │ \e[13;1H\e(B\e[m │ 550 nm │ "
- delay: 517
content: "\e[?25l\e[12;1H\e(B\e[m │ \e[33m* \e[31m500 nm \e(B\e[m │ "
- delay: 395
content: "\e[?25l\e[12;1H\e(B\e[m │ \e[31m500 nm \e(B\e[m │ \e[13;1H\e(B\e[m │ \e[33m* \e(B\e[m550 nm │ "
- delay: 595
content: "\e[?25l\e[13;1H\e(B\e[m │ \e[33m* \e[32m550 nm \e(B\e[m │ "
- delay: 600
content: "\e[?25l\e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭──────────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Layers of the eye 1 \e(B\e[m│ \e[10;1H\e(B\e[m │ Light falls onto the which is covered by the │ \e[11;1H\e(B\e[m │ filter which protects against UV and low │ \e[12;1H\e(B\e[m │ wavelengths. │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ 3/13 │ \e[15;1H\e(B\e[m ╰──────────────────────────────────────────────────╯ \e[16;1H\e(B\e[m \e[?12l\e[?25h\e[10;40H"
- delay: 1490
content: "\e[?25l\e[10;1H\e(B\e[m │ Light falls onto the \e[4mr\e[24m which is covered by the │ \e[11;1H\e(B\e[m │ filter which protects against UV and low │ \e[12;1H\e(B\e[m │ wavelengths. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[10;41H"
- delay: 59
content: "\e[?25l\e[10;1H\e(B\e[m │ Light falls onto the \e[4mre\e[24m which is covered by the │ \e[11;1H\e(B\e[m │ filter which protects against UV and low │ \e[12;1H\e(B\e[m │ wavelengths. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[10;42H"
- delay: 152
content: "\e[?25l\e[10;1H\e(B\e[m │ Light falls onto the \e[4mret\e[24m which is covered by the │ \e[11;1H\e(B\e[m │ filter which protects against UV and low │ \e[?12l\e[?25h\e[10;43H"
- delay: 109
content: "\e[?25l\e[10;1H\e(B\e[m │ Light falls onto the \e[4mreti\e[24m which is covered by │ \e[11;1H\e(B\e[m │ the filter which protects against UV and low │ \e[12;1H\e(B\e[m │ wavelengths. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[10;44H"
- delay: 57
content: "\e[?25l\e[10;1H\e(B\e[m │ Light falls onto the \e[4mretin\e[24m which is covered by │ \e[11;1H\e(B\e[m │ the filter which protects against UV and low │ \e[12;1H\e(B\e[m │ wavelengths. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[10;45H"
- delay: 106
content: "\e[?25l\e[10;1H\e(B\e[m │ Light falls onto the \e[4mretina\e[24m which is covered by │ \e[11;1H\e(B\e[m │ the filter which protects against UV and low │ \e[12;1H\e(B\e[m │ wavelengths. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[10;46H"
- delay: 1369
content: "\e[?25l\e[?12l\e[?25h\e[11;23H"
- delay: 934
content: "\e[?25l\e[11;1H\e(B\e[m │ the \e[4mm\e[24m filter which protects against UV and low │ \e[?12l\e[?25h\e[11;24H"
- delay: 133
content: "\e[?25l\e[11;1H\e(B\e[m │ the \e[4mma\e[24m filter which protects against UV and low │ \e[?12l\e[?25h\e[11;25H"
- delay: 94
content: "\e[?25l\e[11;1H\e(B\e[m │ the \e[4mmac\e[24m filter which protects against UV and low │ \e[12;1H\e(B\e[m │ wavelengths. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;26H"
- delay: 92
content: "\e[?25l\e[11;1H\e(B\e[m │ the \e[4mmacu\e[24m filter which protects against UV and │ \e[12;1H\e(B\e[m │ low wavelengths. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;27H"
- delay: 84
content: "\e[?25l\e[11;1H\e(B\e[m │ the \e[4mmacul\e[24m filter which protects against UV and │ \e[?12l\e[?25h\e[11;28H"
- delay: 118
content: "\e[?25l\e[11;1H\e(B\e[m │ the \e[4mmacula\e[24m filter which protects against UV and │ \e[?12l\e[?25h\e[11;29H"
- delay: 381
content: "\e[?25l\e[10;1H\e(B\e[m │ Light falls onto the \e[4m\e[32mretina\e(B\e[m which is covered by │ \e[11;1H\e(B\e[m │ the \e[4m\e[32mmacula\e(B\e[m filter which protects against UV and │ \e[?12l\e[?25h\e[11;29H"
- delay: 703
content: "\e[?25l\e[7;1H\e(B\e[m \e[8;1H\e(B\e[m \e[9;1H\e(B\e[m ╭──────────────────────────────────────────────────╮ \e[10;1H\e(B\e[m │\e[33m LGN \e(B\e[m│ \e[11;1H\e(B\e[m ├──────────────────────────────────────────────────┤ \e[12;1H\e(B\e[m │ │ \e[13;1H\e(B\e[m │ 4/13 │ \e[14;1H\e(B\e[m ╰──────────────────────────────────────────────────╯ \e[15;1H\e(B\e[m \e[?12l\e[?25h\e[12;19H"
- delay: 943
content: "\e[?25l\e[8;1H\e(B\e[m ╭──────────────────────────────────────────────────╮ \e[9;1H\e(B\e[m │\e[33m LGN \e(B\e[m│ \e[10;1H\e(B\e[m ├──────────────────────────────────────────────────┤ \e[11;1H\e(B\e[m │ \e[4ml\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;20H"
- delay: 196
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mla\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;21H"
- delay: 81
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlat\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;22H"
- delay: 157
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlate\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;23H"
- delay: 86
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlater\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;24H"
- delay: 94
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlatera\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;25H"
- delay: 73
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;26H"
- delay: 70
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral \e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;27H"
- delay: 130
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral g\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;28H"
- delay: 66
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral ge\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;29H"
- delay: 57
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral gen\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;30H"
- delay: 72
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral geni\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;31H"
- delay: 141
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral genic\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;32H"
- delay: 92
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral genicu\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;33H"
- delay: 48
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral genicul\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;34H"
- delay: 71
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral genicula\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;35H"
- delay: 71
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral geniculat\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;36H"
- delay: 102
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral geniculate\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;37H"
- delay: 27
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral geniculate \e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;38H"
- delay: 122
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral geniculate n\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;39H"
- delay: 331
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral geniculate nu\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;40H"
- delay: 171
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral geniculate nuc\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;41H"
- delay: 123
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral geniculate nucl\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;42H"
- delay: 132
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral geniculate nucle\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;43H"
- delay: 87
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4mlateral geniculate nuclei\e[24m │ \e[12;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;44H"
- delay: 206
content: "\e[?25l\e[11;1H\e(B\e[m │ \e[4m\e[32mlateral geniculate nuclei\e(B\e[m │ \e[?12l\e[?25h\e[11;44H"
- delay: 573
content: "\e[?25l\e[7;1H\e(B\e[m ╭──────────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Check the elements that are part of the primary \e(B\e[m│ \e[9;1H\e(B\e[m │\e[33m visual path \e(B\e[m│ \e[11;1H\e(B\e[m │[\e[33m*\e(B\e[m] Optic nerve │ \e[12;1H\e(B\e[m │[ ] RHP axis │ \e[13;1H\e(B\e[m │[ ] LGN │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ 5/13 │ \e[16;1H\e(B\e[m ╰──────────────────────────────────────────────────╯ "
- delay: 2902
content: "\e[?25l\e[11;1H\e(B\e[m │\e[34m[\e[33m*\e[34m] \e(B\e[mOptic nerve │ "
- delay: 467
content: "\e[?25l\e[11;1H\e(B\e[m │\e[34m[*] \e(B\e[mOptic nerve │ \e[12;1H\e(B\e[m │[\e[33m*\e(B\e[m] RHP axis │ "
- delay: 170
content: "\e[?25l\e[12;1H\e(B\e[m │[ ] RHP axis │ \e[13;1H\e(B\e[m │[\e[33m*\e(B\e[m] LGN │ "
- delay: 570
content: "\e[?25l\e[13;1H\e(B\e[m │\e[34m[\e[33m*\e[34m] \e(B\e[mLGN │ "
- delay: 868
content: "\e[?25l\e[11;1H\e(B\e[m │\e[32m[*] \e(B\e[mOptic nerve │ \e[12;1H\e(B\e[m │\e[32m[ ] \e(B\e[mRHP axis │ \e[13;1H\e(B\e[m │\e[32m[*] \e(B\e[mLGN │ "
- delay: 780
content: "\e[?25l\e[7;1H\e(B\e[m \e[8;1H\e(B\e[m ╭──────────────────────────────────────────────────╮ \e[9;1H\e(B\e[m │\e[33m Layers of the eye 2 \e(B\e[m│ \e[11;1H\e(B\e[m │ Below the retina is the containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ 6/13 │ \e[15;1H\e(B\e[m ╰──────────────────────────────────────────────────╯ \e[16;1H\e(B\e[m \e[?12l\e[?25h\e[11;43H"
- delay: 3377
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4ms\e[24m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;44H"
- delay: 165
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4msc\e[24m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;45H"
- delay: 175
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4mscl\e[24m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;46H"
- delay: 77
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4mscle\e[24m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;47H"
- delay: 64
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4mscler\e[24m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;48H"
- delay: 59
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4msclera\e[24m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;49H"
- delay: 139
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31msclera\e(B\e[m containing blood │ \e[?12l\e[?25h\e[11;49H"
- delay: 915
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31mscler\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;48H"
- delay: 132
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31mscle\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;47H"
- delay: 122
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31mscl\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;46H"
- delay: 125
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31msc\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;45H"
- delay: 140
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31ms\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;44H"
- delay: 135
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;43H"
- delay: 282
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31mc\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;44H"
- delay: 247
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31mch\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;45H"
- delay: 81
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31mcho\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;46H"
- delay: 183
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31mchor\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;47H"
- delay: 96
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31mchoro\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;48H"
- delay: 60
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31mchoroi\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;49H"
- delay: 108
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[31mchoroid\e(B\e[m containing blood │ \e[12;1H\e(B\e[m │ vessels. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;50H"
- delay: 167
content: "\e[?25l\e[11;1H\e(B\e[m │ Below the retina is the \e[4m\e[32mchoroid\e(B\e[m containing blood │ \e[?12l\e[?25h\e[11;50H"
- delay: 1171
content: "\e[?25l\e[9;1H\e(B\e[m │\e[33m Layers of the eye 3 \e(B\e[m│ \e[11;1H\e(B\e[m │ The last layer is the . It is white, except in │ \e[12;1H\e(B\e[m │ front where it is transparent. │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ 7/13 │ \e[?12l\e[?25h\e[11;41H"
- delay: 1003
content: "\e[?25l\e[11;1H\e(B\e[m │ The last layer is the \e[4ms\e[24m. It is white, except in │ \e[12;1H\e(B\e[m │ front where it is transparent. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;42H"
- delay: 184
content: "\e[?25l\e[11;1H\e(B\e[m │ The last layer is the \e[4msc\e[24m. It is white, except in │ \e[12;1H\e(B\e[m │ front where it is transparent. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;43H"
- delay: 149
content: "\e[?25l\e[11;1H\e(B\e[m │ The last layer is the \e[4mscl\e[24m. It is white, except │ \e[12;1H\e(B\e[m │ in front where it is transparent. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;44H"
- delay: 108
content: "\e[?25l\e[11;1H\e(B\e[m │ The last layer is the \e[4mscle\e[24m. It is white, except │ \e[12;1H\e(B\e[m │ in front where it is transparent. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;45H"
- delay: 76
content: "\e[?25l\e[11;1H\e(B\e[m │ The last layer is the \e[4mscler\e[24m. It is white, except │ \e[12;1H\e(B\e[m │ in front where it is transparent. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;46H"
- delay: 55
content: "\e[?25l\e[11;1H\e(B\e[m │ The last layer is the \e[4msclera\e[24m. It is white, │ \e[12;1H\e(B\e[m │ except in front where it is transparent. │ \e[13;1H\e(B\e[m │ │ \e[?12l\e[?25h\e[11;47H"
- delay: 143
content: "\e[?25l\e[11;1H\e(B\e[m │ The last layer is the \e[4m\e[32msclera\e(B\e[m. It is white, │ \e[?12l\e[?25h\e[11;47H"
- delay: 1850
content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
- delay: 8
content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭──────────────────────────────────────────────────╮ \e[8;1H\e(B\e[m │\e[33m Select a deck of flashcards \e(B\e[m│ \e[9;1H\e(B\e[m ├──────────────────────────────────────────────────┤ \e[10;1H\e(B\e[m │ \e[4m\e[37mlight\e(B\e[m │ \e[11;1H\e(B\e[m │ \e[34mSelect file from system\e(B\e[m │ \e[12;1H\e(B\e[m │ │ \e[13;1H\e(B\e[m │ │ \e[14;1H\e(B\e[m │ │ \e[15;1H\e(B\e[m │ │ \e[16;1H\e(B\e[m ╰──────────────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
- delay: 434
content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h\e[?1049h\e[22;0;0t\e[H\e[2J"
- delay: 11
content: "\e[?25l\e[1;1H\e(B\e[m \e[2;1H\e(B\e[m \e[3;1H\e(B\e[m \e[4;1H\e(B\e[m \e[5;1H\e(B\e[m \e[6;1H\e(B\e[m \e[7;1H\e(B\e[m ╭────────────────────────────────────────╮ \e[8;1H\e(B\e[m │ \e[33m┬ ┬┌─┐┌─┐┌─┐┌─┐┬─┐┌┬┐\e(B\e[m │ \e[9;1H\e(B\e[m │ \e[33m├─┤├─┤└─┐│ ├─┤├┬┘ ││\e(B\e[m │ \e[10;1H\e(B\e[m │ \e[33m┴ ┴┴ ┴└─┘└─┘┴ ┴┴└──┴┘\e(B\e[m │ \e[11;1H\e(B\e[m ├────────────────────────────────────────┤ \e[12;1H\e(B\e[m │ \e[4m\e[37mSelect\e(B\e[m │ \e[13;1H\e(B\e[m │ Info │ \e[14;1H\e(B\e[m │ Settings │ \e[15;1H\e(B\e[m │ Quit │ \e[16;1H\e(B\e[m ╰────────────────────────────────────────╯ \e[17;1H\e(B\e[m \e[18;1H\e(B\e[m \e[19;1H\e(B\e[m \e[20;1H\e(B\e[m \e[21;1H\e(B\e[m \e[22;1H\e(B\e[m "
- delay: 1297
content: "\e[?25l\e[12;1H\e(B\e[m │ Select │ \e[13;1H\e(B\e[m │ \e[4m\e[37mInfo\e(B\e[m │ "
- delay: 170
content: "\e[?25l\e[13;1H\e(B\e[m │ Info │ \e[14;1H\e(B\e[m │ \e[4m\e[37mSettings\e(B\e[m │ "
- delay: 160
content: "\e[?25l\e[14;1H\e(B\e[m │ Settings │ \e[15;1H\e(B\e[m │ \e[4m\e[37mQuit\e(B\e[m │ "
- delay: 945
content: "\e[?1049l\e[23;0;0t\e[?12l\e[?25h\e(B\e[m\e[?12l\e[?25h"
- delay: 13
content: "\e[1m\e[7m%\e[27m\e[1m\e[0m \r \r\e]2;~\a"
- delay: 48
content: "\r\e[0m\e[27m\e[24m\e[J\e[01;32m➜ \e[36m~\e[00m \e[01;34mgit:(\e[31mlinux\e[34m) \e[33m✗\e[00m \e[K\e[?1h\e=\e[?2004h"
- delay: 1361
content: "\e[?2004l\r\r\n"

BIN
scrot.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -70,7 +70,7 @@ drawListElement l i selected = hCenteredStrWrapWithAttr (wAttr1 . wAttr2)
drawException :: State -> Widget Name
drawException s = case s ^. exception of
Nothing -> emptyWidget
Just s -> withAttr exceptionAttr $ str s
Just s -> withAttr exceptionAttr $ strWrap s
titleAttr :: AttrName
titleAttr = attrName "title"

View File

@ -12,7 +12,6 @@ import Data.List.NonEmpty (NonEmpty)
import Data.Map.Strict (Map)
import Text.Wrap
import Data.Text (pack)
import Debug.Trace (trace)
import SettingsUI (getShowHints, getShowControls)
import System.IO.Unsafe (unsafePerformIO)
import qualified Data.List.NonEmpty as NE
@ -108,6 +107,7 @@ drawHeader title = withAttr titleAttr $
padLeftRight 1 $
hCenteredStrWrap title
wrapSettings :: WrapSettings
wrapSettings = WrapSettings {preserveIndentation=False, breakLongWords=True}
drawDescr :: String -> Widget Name
@ -137,13 +137,7 @@ drawCardUI s = let p = 1 in
OpenQuestion title perforated -> drawHeader title <=> B.hBorder <=> padLeftRight p (drawPerforated s perforated <=> str " ")
MultipleAnswer question options -> drawHeader question <=> B.hBorder <=> padLeftRight p (drawOptions s options <=> str " ")
applyWhen :: Bool -> (a -> a) -> a -> a
applyWhen predicate action = if predicate then action else id
applyUnless :: Bool -> (a -> a) -> a -> a
applyUnless p = applyWhen (not p)
MultipleAnswer question options -> drawHeader question <=> B.hBorder <=> padRight (Pad p) (drawOptions s options <=> str " ")
drawDef :: State -> String -> Widget Name
drawDef s def = if s ^. showHints then drawHintedDef s def else drawNormalDef s def
@ -169,9 +163,10 @@ drawChoices s options = case (s ^. cardState, s ^. currentCard) of
(MultipleChoiceState {_highlighted=i, _tried=kvs}, MultipleChoice _ (CorrectOption k _) _) -> vBox formattedOptions
where formattedOptions :: [Widget Name]
formattedOptions = [ coloring $ drawDescr (if i==j then "* " ++ opt else opt) |
formattedOptions = [ prefix <+> coloring (drawDescr opt) |
(j, opt) <- zip [0..] options,
let chosen = M.findWithDefault False j kvs
let prefix = if i == j then withAttr highlightedChoiceAttr (str "* ") else str " "
chosen = M.findWithDefault False j kvs
coloring = case (chosen, j==k) of
(False, _) -> id
(True, False) -> withAttr incorrectChoiceAttr
@ -211,7 +206,7 @@ makeSentenceWidget w state = vBox . fst . makeSentenceWidget' 0 0
where
makeSentenceWidget' :: Int -> Int -> Sentence -> ([Widget Name], Bool)
makeSentenceWidget' padding _ (Normal s) = let (ws, _, fit) = wrapStringWithPadding padding w s in (ws, fit)
makeSentenceWidget' padding i (Perforated pre gapSolution post) = case state ^. cardState of
makeSentenceWidget' padding i (Perforated pre _ post) = case state ^. cardState of
OpenQuestionState {_gapInput = kvs, _highlighted=j, _entered=submitted, _correctGaps=cgs} ->
let (ws, n, fit') = wrapStringWithPadding padding w pre
gap = M.findWithDefault "" i kvs
@ -272,7 +267,7 @@ drawCardBox w = C.center $
hLimitPercent 60 w
handleEvent :: State -> BrickEvent Name Event -> EventM Name (Next State)
handleEvent s (VtyEvent ev) = case ev of
handleEvent s (VtyEvent e) = case e of
V.EvKey V.KEsc [] -> halt s
V.EvKey (V.KChar 'c') [V.MCtrl] -> halt s
V.EvKey V.KRight [V.MCtrl] -> next s
@ -288,7 +283,7 @@ handleEvent s (VtyEvent ev) = case ev of
else continue $ s & cardState.flipped %~ not
_ -> continue s
(MultipleChoiceState {_highlighted = i, _nChoices = nChoices, _tried = kvs}, MultipleChoice _ (CorrectOption j _) _) ->
(MultipleChoiceState {_highlighted = i, _nChoices = n, _tried = kvs}, MultipleChoice _ (CorrectOption j _) _) ->
case ev of
V.EvKey V.KUp [] -> continue up
V.EvKey (V.KChar 'k') [] -> continue up
@ -304,7 +299,7 @@ handleEvent s (VtyEvent ev) = case ev of
where frozen = M.findWithDefault False j kvs
down = if i < nChoices - 1 && not frozen
down = if i < n - 1 && not frozen
then s & (cardState.highlighted) +~ 1
else s
@ -312,7 +307,7 @@ handleEvent s (VtyEvent ev) = case ev of
then s & (cardState.highlighted) -~ 1
else s
(MultipleAnswerState {_highlighted = i, _nChoices = nChoices, _entered = submitted}, MultipleAnswer question options) ->
(MultipleAnswerState {_highlighted = i, _nChoices = n, _entered = submitted}, MultipleAnswer {}) ->
case ev of
V.EvKey V.KUp [] -> continue up
V.EvKey (V.KChar 'k') [] -> continue up
@ -331,7 +326,7 @@ handleEvent s (VtyEvent ev) = case ev of
where frozen = submitted
down = if i < nChoices - 1 && not frozen
down = if i < n - 1 && not frozen
then s & (cardState.highlighted) +~ 1
else s
@ -340,40 +335,37 @@ handleEvent s (VtyEvent ev) = case ev of
else s
(OpenQuestionState {_highlighted = i, _nGaps = n, _gapInput = kvs, _correctGaps = cGaps}, OpenQuestion _ perforated) ->
case ev of
V.EvKey (V.KChar '\t') [] -> continue $
if i < n - 1
then s & (cardState.highlighted) +~ 1
else s & (cardState.highlighted) .~ 0
V.EvKey V.KRight [] -> continue $
if i < n - 1
then s & (cardState.highlighted) +~ 1
else s
let correct = M.foldr (&&) True cGaps in
case ev of
V.EvKey (V.KChar '\t') [] -> continue $
if i < n - 1 && not correct
then s & (cardState.highlighted) +~ 1
else s & (cardState.highlighted) .~ 0
V.EvKey V.KRight [] -> continue $
if i < n - 1 && not correct
then s & (cardState.highlighted) +~ 1
else s
V.EvKey V.KLeft [] -> continue $
if i > 0
then s & (cardState.highlighted) -~ 1
else s
V.EvKey V.KLeft [] -> continue $
if i > 0 && not correct
then s & (cardState.highlighted) -~ 1
else s
V.EvKey (V.KChar c) [] -> continue $
if correct then s else s & cardState.gapInput.at i.non "" %~ (++[c])
where correct = M.foldr (&&) True cGaps
V.EvKey (V.KChar c) [] -> continue $
if correct then s else s & cardState.gapInput.at i.non "" %~ (++[c])
V.EvKey V.KEnter [] -> if correct then next s else continue s'
where correct :: Bool
sentence = perforatedToSentence perforated
gaps = sentenceToGaps sentence
V.EvKey V.KEnter [] -> if correct then next s else continue s'
where sentence = perforatedToSentence perforated
gaps = sentenceToGaps sentence
s' = s & (cardState.correctGaps) %~ M.mapWithKey (\i _ -> M.findWithDefault "" i kvs `elem` gaps !! i) & (cardState.entered) .~ True
-- correct = M.foldr (&&) True (s' ^. (cardState.correctGaps))
-- use above if you want to go to next card directly, if gaps were filled in correctly
correct = M.foldr (&&) True cGaps
s' = s & (cardState.correctGaps) %~ M.mapWithKey (\j _ -> M.findWithDefault "" j kvs `elem` gaps !! j) & (cardState.entered) .~ True
V.EvKey V.KBS [] -> continue $ s & cardState.gapInput.ix i %~ backspace
where backspace "" = ""
backspace xs = init xs
_ -> continue s
V.EvKey V.KBS [] -> continue $
if correct then s else s & cardState.gapInput.ix i %~ backspace
where backspace "" = ""
backspace xs = init xs
_ -> continue s
_ -> error "impossible"
handleEvent s _ = continue s
@ -384,6 +376,9 @@ titleAttr = attrName "title"
textboxAttr :: AttrName
textboxAttr = attrName "textbox"
highlightedChoiceAttr :: AttrName
highlightedChoiceAttr = attrName "highlighted choice"
incorrectChoiceAttr :: AttrName
incorrectChoiceAttr = attrName "incorrect choice"
@ -418,6 +413,7 @@ theMap :: AttrMap
theMap = attrMap V.defAttr
[ (titleAttr, fg V.yellow)
, (textboxAttr, V.defAttr)
, (highlightedChoiceAttr, fg V.yellow)
, (incorrectChoiceAttr, fg V.red)
, (correctChoiceAttr, fg V.green)
, (incorrectGapAttr, fg V.red `V.withStyle` V.underline)
@ -431,15 +427,15 @@ theMap = attrMap V.defAttr
]
runCardUI :: [Card] -> IO State
runCardUI cards = do
runCardUI deck = do
hints <- getShowHints
controls <- getShowControls
let initialState = State { _cards = cards
let initialState = State { _cards = deck
, _index = 0
, _currentCard = head cards
, _cardState = defaultCardState (head cards)
, _nCards = length cards
, _currentCard = head deck
, _cardState = defaultCardState (head deck)
, _nCards = length deck
, _showHints = hints
, _showControls = controls }
defaultMain app initialState