Small fixes and added gifs and explantion of cards
59
README.md
@ -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).
|
@ -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
|
@ -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
|
||||
|
||||
---
|
||||
|
@ -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_.
|
||||
|
||||
---
|
BIN
old_scrot.png
Before Width: | Height: | Size: 18 KiB |
BIN
recording.gif
Before Width: | Height: | Size: 1.4 MiB |
107
recordings/config.yml
Normal 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"
|
BIN
recordings/definition-big.gif
Normal file
After Width: | Height: | Size: 33 KiB |
117
recordings/definition-big.yml
Normal 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
After Width: | Height: | Size: 28 KiB |
117
recordings/definition.yml
Normal 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 │ │ "
|
BIN
recordings/gapped-question.gif
Normal file
After Width: | Height: | Size: 222 KiB |
209
recordings/gapped-question.yml
Normal 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"
|
BIN
recordings/multiple-answer.gif
Normal file
After Width: | Height: | Size: 122 KiB |
217
recordings/multiple-answer.yml
Normal 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"
|
BIN
recordings/multiple-choice-old.gif
Normal file
After Width: | Height: | Size: 120 KiB |
BIN
recordings/multiple-choice.gif
Normal file
After Width: | Height: | Size: 119 KiB |
181
recordings/multiple-choice.yml
Normal 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
After Width: | Height: | Size: 1.7 MiB |
341
recordings/recording.yml
Normal 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"
|
@ -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"
|
||||
|
@ -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
|
||||
|