...

Source file src/github.com/common-nighthawk/go-figure/public_methods.go

Documentation: github.com/common-nighthawk/go-figure

     1  package figure
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  	"strings"
     7  	"time"
     8  )
     9  
    10  //stdout
    11  func (fig figure) Print() {
    12  	for _, printRow := range fig.Slicify() {
    13  		if fig.color != "" {
    14  			printRow = colors[fig.color] + printRow + colors["reset"]
    15  		}
    16  		fmt.Println(printRow)
    17  	}
    18  }
    19  
    20  // returns a colored string
    21  func (fig figure) ColorString() string {
    22  	s := ""
    23  	for _, printRow := range fig.Slicify() {
    24  		if fig.color != "" {
    25  			printRow = colors[fig.color] + printRow + colors["reset"]
    26  		}
    27  		s += fmt.Sprintf("%s\n", printRow)
    28  	}
    29  	return s
    30  }
    31  
    32  func (fig figure) String() string {
    33  	s := ""
    34  	for _, printRow := range fig.Slicify() {
    35  		s += fmt.Sprintf("%s\n", printRow)
    36  	}
    37  	return s
    38  }
    39  
    40  func (fig figure) Scroll(duration, stillness int, direction string) {
    41  	endTime := time.Now().Add(time.Duration(duration) * time.Millisecond)
    42  	fig.phrase = fig.phrase + "   "
    43  	clearScreen()
    44  	for time.Now().Before(endTime) {
    45  		var shiftedPhrase string
    46  		chars := []byte(fig.phrase)
    47  		if strings.HasPrefix(strings.ToLower(direction), "r") {
    48  			shiftedPhrase = string(append(chars[len(chars)-1:], chars[0:len(chars)-1]...))
    49  		} else {
    50  			shiftedPhrase = string(append(chars[1:len(chars)], chars[0]))
    51  		}
    52  		fig.phrase = shiftedPhrase
    53  		fig.Print()
    54  		sleep(stillness)
    55  		clearScreen()
    56  	}
    57  }
    58  
    59  func (fig figure) Blink(duration, timeOn, timeOff int) {
    60  	if timeOff < 0 {
    61  		timeOff = timeOn
    62  	}
    63  	endTime := time.Now().Add(time.Duration(duration) * time.Millisecond)
    64  	clearScreen()
    65  	for time.Now().Before(endTime) {
    66  		fig.Print()
    67  		sleep(timeOn)
    68  		clearScreen()
    69  		sleep(timeOff)
    70  	}
    71  }
    72  
    73  func (fig figure) Dance(duration, freeze int) {
    74  	endTime := time.Now().Add(time.Duration(duration) * time.Millisecond)
    75  	font := fig.font //TODO: change to deep copy
    76  	font.evenLetters()
    77  	figures := []figure{figure{font: font}, figure{font: font}}
    78  	clearScreen()
    79  	for i, c := range fig.phrase {
    80  		appenders := []string{" ", " "}
    81  		appenders[i%2] = string(c)
    82  		for f, _ := range figures {
    83  			figures[f].phrase = figures[f].phrase + appenders[f]
    84  		}
    85  	}
    86  	for p := 0; time.Now().Before(endTime); p ^= 1 {
    87  		figures[p].Print()
    88  		figures[1-p].Print()
    89  		sleep(freeze)
    90  		clearScreen()
    91  	}
    92  }
    93  
    94  //writers
    95  func Write(w io.Writer, fig figure) {
    96  	for _, printRow := range fig.Slicify() {
    97  		fmt.Fprintf(w, "%v\n", printRow)
    98  	}
    99  }
   100  
   101  //helpers
   102  func clearScreen() {
   103  	fmt.Print("\033[H\033[2J")
   104  }
   105  
   106  func sleep(milliseconds int) {
   107  	time.Sleep(time.Duration(milliseconds) * time.Millisecond)
   108  }
   109  

View as plain text