From 69ab7578c375d8cfb34277a9819be0d90751a94a Mon Sep 17 00:00:00 2001 From: Everton da Rosa Date: Mon, 18 Nov 2024 05:48:45 -0300 Subject: [PATCH] docs: Added documentation for Spinner. (#207) --- img/spinner.gif | Bin 0 -> 14499 bytes terminal-objects/spinner.md | 66 ++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 img/spinner.gif create mode 100644 terminal-objects/spinner.md diff --git a/img/spinner.gif b/img/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..c48a5eaab00f3a4e1db5cf823075c57f570614a1 GIT binary patch literal 14499 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 OwI0he`#%y_mi!-L7wmHY literal 0 HcmV?d00001 diff --git a/terminal-objects/spinner.md b/terminal-objects/spinner.md new file mode 100644 index 00000000..9e83f71e --- /dev/null +++ b/terminal-objects/spinner.md @@ -0,0 +1,66 @@ +--- +layout: default +title: Spinner +permalink: /terminal-objects/spinner/ +--- + +Spinner +============== + +Spinner displays a running indicator to indicate that a task is being performed. + +~~~php +$spinner = $climate->spinner('Running task...'); + +for ($i = 0; $i < 12; $i++) { + $spinner->advance(); + sleep(1); +} +~~~ + +Which will result in: + +![Spinner](/img/spinner.gif) + +Spinner can be started with a label and with custom characters to display: + +~~~php +$spinner = $climate->spinner('My custom label', '[> ]', '[ > ]', '[ >]', '[ <]', '[ < ]', '[ < ]', '[< ]'); + +for ($i = 0; $i < 12; $i++) { + $spinner->advance(); + sleep(1); +} +~~~ + +$label and $characters are optional. If $label is not provided, no label will be + displayed. If $characters is not provided, the default characters will be used. + +You can also set the spinner characters after creating the instance: + +~~~php +$spinner->characters('[> ]', '[ > ]', '[ >]', '[ <]', '[ < ]', '[ < ]', '[< ]'); +~~~ + +It is also possible to set a waiting time between drawing each stage. +This is useful to avoid frequent redrawing of the screen. + +~~~php +$spinner = $climate->spinner(); +$spinner->timeLimit(2);// Redraws the screen every 2 seconds. +for ($i = 0; $i < 12; $i++) { + $spinner->advance(); + sleep(1); +} +~~~ + +The `Spinner::advance()` method can be given a label: + +~~~php +$spinner = $climate->spinner(); +for ($i = 0; $i < 12; $i++) { + $step = $i + 1; + $spinner->advance("Step $step..."); + sleep(1); +} +~~~