init
This commit is contained in:
parent
a27b0e1e63
commit
a7b2e9a6f3
8 changed files with 129 additions and 10 deletions
20
README.md
20
README.md
|
@ -1,10 +1,11 @@
|
||||||
# spinner
|
# Spinner
|
||||||
|
|
||||||
TODO: Write a description here
|
Terminal Spinner for Crystal Programming Language
|
||||||
|
|
||||||
|
![All](/images/all.gif)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|
||||||
Add this to your application's `shard.yml`:
|
Add this to your application's `shard.yml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -13,20 +14,23 @@ dependencies:
|
||||||
github: askn/spinner
|
github: askn/spinner
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|
||||||
```crystal
|
```crystal
|
||||||
require "spinner"
|
require "spinner"
|
||||||
|
|
||||||
|
sp = Spin.new
|
||||||
|
sp.start
|
||||||
|
sleep 3
|
||||||
|
sp.stop
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
TODO: Write usage instructions here
|
`delay`: `default = 0.1`
|
||||||
|
|
||||||
## Development
|
`chars`: you can choose charset from [CHARSET](src/spinner/charset.cr) `default = CHARSET[:pipe]`
|
||||||
|
|
||||||
TODO: Write development instructions here
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|
8
examples/all.cr
Normal file
8
examples/all.cr
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
require "../src/spinner"
|
||||||
|
|
||||||
|
CHARSET.values.each do |chars|
|
||||||
|
sp = Spin.new(0.1, chars)
|
||||||
|
sp.start
|
||||||
|
sleep 2
|
||||||
|
sp.stop
|
||||||
|
end
|
11
examples/color.cr
Normal file
11
examples/color.cr
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
require "../src/spinner"
|
||||||
|
require "colorize"
|
||||||
|
|
||||||
|
chars = CHARSET[:arrow].map do |c|
|
||||||
|
c.colorize(:light_green)
|
||||||
|
end
|
||||||
|
|
||||||
|
spin = Spin.new(0.2, chars)
|
||||||
|
spin.start
|
||||||
|
sleep 3
|
||||||
|
spin.stop
|
12
examples/pavyon.cr
Normal file
12
examples/pavyon.cr
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
require "../src/spinner"
|
||||||
|
require "colorize"
|
||||||
|
|
||||||
|
colors = {:red, :light_red, :yellow, :green, :light_blue, :blue, :magenta}
|
||||||
|
chars = colors.map do |color|
|
||||||
|
".xXx.".colorize(color)
|
||||||
|
end
|
||||||
|
|
||||||
|
spin = Spin.new(0.01, chars)
|
||||||
|
spin.start
|
||||||
|
sleep 3
|
||||||
|
spin.stop
|
19
examples/simple.cr
Normal file
19
examples/simple.cr
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
require "../src/spinner"
|
||||||
|
|
||||||
|
puts "starting..."
|
||||||
|
sp = Spin.new(0.1)
|
||||||
|
sp.start
|
||||||
|
sleep 3
|
||||||
|
sp.stop
|
||||||
|
puts "end!"
|
||||||
|
|
||||||
|
sp1 = Spin.new(0.1, CHARSET[:three_dots])
|
||||||
|
sp1.start
|
||||||
|
sleep 3
|
||||||
|
sp1.stop
|
||||||
|
|
||||||
|
sp1 = Spin.new(0.1)
|
||||||
|
sp1.chars = CHARSET[:arrow]
|
||||||
|
sp1.start
|
||||||
|
sleep 3
|
||||||
|
sp1.stop
|
BIN
images/all.gif
Normal file
BIN
images/all.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
|
@ -1,5 +1,38 @@
|
||||||
require "./spinner/*"
|
require "./spinner/*"
|
||||||
|
|
||||||
module Spinner
|
class Spin
|
||||||
# TODO Put your code here
|
property delay, chars
|
||||||
|
|
||||||
|
CL = STDOUT.tty? ? "\u001b[0G" : "\u000d \u000d"
|
||||||
|
CLEAR = STDOUT.tty? ? "\u001b[2K" : "\u000d"
|
||||||
|
|
||||||
|
def initialize(@delay = 0.1, @chars = CHARSET[:pipe])
|
||||||
|
@state = true
|
||||||
|
end
|
||||||
|
|
||||||
|
def stop
|
||||||
|
@state = false
|
||||||
|
print CLEAR
|
||||||
|
end
|
||||||
|
|
||||||
|
private def clear(count)
|
||||||
|
print CL * count
|
||||||
|
end
|
||||||
|
|
||||||
|
def start
|
||||||
|
spawn do
|
||||||
|
i = 0
|
||||||
|
while @state
|
||||||
|
chars = @chars[i % @chars.size]
|
||||||
|
|
||||||
|
print "#{chars}"
|
||||||
|
# to_s for colorize
|
||||||
|
clear(chars.to_s.size)
|
||||||
|
|
||||||
|
sleep @delay
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
32
src/spinner/charset.cr
Normal file
32
src/spinner/charset.cr
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
CHARSET = {
|
||||||
|
arrow: {"←", "↖", "↑", "↗", "→", "↘", "↓", "↙"},
|
||||||
|
fan: {"┤", "┘", "┴", "└", "├", "┌", "┬", "┐"},
|
||||||
|
fan1: {"+", "x"},
|
||||||
|
fan2: {"v", "<", "^", ">"},
|
||||||
|
triangle: {"◢", "◣", "◤", "◥"},
|
||||||
|
square: {"◰", "◳", "◲", "◱"},
|
||||||
|
circle: {"◴", "◷", "◶", "◵"},
|
||||||
|
big_circle: {"◐", "◓", "◑", "◒"},
|
||||||
|
boom: {".", "o", "O", "@", "*"},
|
||||||
|
pipe: {"|", "/", "-", "\\"},
|
||||||
|
alphabet: {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"},
|
||||||
|
three_dots: {". ", ".. ", "..."},
|
||||||
|
eyes: {"◡◡", "⊙⊙", "◠◠"},
|
||||||
|
dots: {"⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"},
|
||||||
|
snake: {"⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷"},
|
||||||
|
snake1: {"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"},
|
||||||
|
snake2: {"⠋", "⠙", "⠚", "⠒", "⠂", "⠂", "⠒", "⠲", "⠴", "⠦", "⠖", "⠒", "⠐", "⠐", "⠒", "⠓", "⠋"},
|
||||||
|
square1: {"■", "□", "▪", "▫"},
|
||||||
|
square2: {"▖", "▘", "▝", "▗"},
|
||||||
|
square3: {"▁", "▃", "▄", "▅", "▆", "▇", "█", "▇", "▆", "▅", "▄", "▃", "▁"},
|
||||||
|
square4: {"▉", "▊", "▋", "▌", "▍", "▎", "▏", "▎", "▍", "▌", "▋", "▊", "▉"},
|
||||||
|
square5: {"▁", "▂", "▃", "▄", "▅", "▆", "▇", "█", "▉", "▊", "▋", "▌", "▍", "▎", "▏", "▏", "▎", "▍", "▌", "▋", "▊", "▉", "█", "▇", "▆", "▅", "▄", "▃", "▂", "▁"},
|
||||||
|
thin_arrow: {"←", "↑", "→", "↓"},
|
||||||
|
big_arraw: {"⇐", "⇖", "⇑", "⇗", "⇒", "⇘", "⇓", "⇙"},
|
||||||
|
baloon: {".", "o", "O", "°", "O", "o", "."},
|
||||||
|
progress: {"[ ]", "[= ]", "[== ]", "[=== ]", "[==== ]", "[===== ]", "[====== ]", "[======= ]", "[======== ]", "[========= ]", "[==========]"},
|
||||||
|
progress1: {"(*---------)", "(-*--------)", "(--*-------)", "(---*------)", "(----*-----)", "(-----*----)", "(------*---)", "(-------*--)", "(--------*-)", "(---------*)"},
|
||||||
|
progress2: {"█▒▒▒▒▒▒▒▒▒", "███▒▒▒▒▒▒▒", "█████▒▒▒▒▒", "███████▒▒▒", "██████████"},
|
||||||
|
progress3: {"[ ]", "[=> ]", "[===> ]", "[=====> ]", "[======> ]", "[========> ]", "[==========> ]", "[============> ]", "[==============> ]", "[================> ]", "[==================> ]", "[===================>]"},
|
||||||
|
fish: {">))'> ", " >))'> ", " >))'> ", " >))'> ", " >))'>", " <'((<", " <'((< ", " <'((< ", " <'((< ", "<'((< "},
|
||||||
|
}
|
Loading…
Reference in a new issue