Add some doc comments

This commit is contained in:
c-bata 2017-08-22 00:47:15 +09:00
parent a8daf831aa
commit f8cde79229
4 changed files with 26 additions and 0 deletions

@ -16,11 +16,13 @@ const (
completionMargin = leftMargin + rightMargin completionMargin = leftMargin + rightMargin
) )
// Suggest is printed when completing.
type Suggest struct { type Suggest struct {
Text string Text string
Description string Description string
} }
// CompletionManager manages which suggestion is now selected.
type CompletionManager struct { type CompletionManager struct {
selected int // -1 means nothing one is selected. selected int // -1 means nothing one is selected.
tmp []Suggest tmp []Suggest
@ -28,6 +30,7 @@ type CompletionManager struct {
completer Completer completer Completer
} }
// GetSelectedSuggestion returns the selected item.
func (c *CompletionManager) GetSelectedSuggestion() (s Suggest, ok bool) { func (c *CompletionManager) GetSelectedSuggestion() (s Suggest, ok bool) {
if c.selected == -1 { if c.selected == -1 {
return Suggest{}, false return Suggest{}, false
@ -39,33 +42,39 @@ func (c *CompletionManager) GetSelectedSuggestion() (s Suggest, ok bool) {
return c.tmp[c.selected], true return c.tmp[c.selected], true
} }
// GetSelectedSuggestion returns the list of suggestion.
func (c *CompletionManager) GetSuggestions() []Suggest { func (c *CompletionManager) GetSuggestions() []Suggest {
return c.tmp return c.tmp
} }
// Reset to select nothing.
func (c *CompletionManager) Reset() { func (c *CompletionManager) Reset() {
c.selected = -1 c.selected = -1
c.Update(*NewDocument()) c.Update(*NewDocument())
return return
} }
// Update to update the suggestions.
func (c *CompletionManager) Update(in Document) { func (c *CompletionManager) Update(in Document) {
c.tmp = c.completer(in) c.tmp = c.completer(in)
return return
} }
// Previous to select the previous suggestion item.
func (c *CompletionManager) Previous() { func (c *CompletionManager) Previous() {
c.selected-- c.selected--
c.update() c.update()
return return
} }
// Next to select the next suggestion item.
func (c *CompletionManager) Next() { func (c *CompletionManager) Next() {
c.selected++ c.selected++
c.update() c.update()
return return
} }
// Completing returns whether the CompletionManager selects something one.
func (c *CompletionManager) Completing() bool { func (c *CompletionManager) Completing() bool {
return c.selected != -1 return c.selected != -1
} }
@ -145,6 +154,7 @@ func formatSuggestions(suggests []Suggest, max int) (new []Suggest, width int) {
return new, leftWidth + rightWidth return new, leftWidth + rightWidth
} }
// NewCompletionManager returns initialized CompletionManager object.
func NewCompletionManager(completer Completer, max uint16) *CompletionManager { func NewCompletionManager(completer Completer, max uint16) *CompletionManager {
return &CompletionManager{ return &CompletionManager{
selected: -1, selected: -1,

3
key.go

@ -1,6 +1,9 @@
package prompt package prompt
// Key is the type express the key inserted from user.
type Key int type Key int
// ASCIICode is the type contains Key and it's ascii byte array.
type ASCIICode struct { type ASCIICode struct {
Key Key Key Key
ASCIICode []byte ASCIICode []byte

@ -14,9 +14,13 @@ const (
envEnableLog = "GO_PROMPT_ENABLE_LOG" envEnableLog = "GO_PROMPT_ENABLE_LOG"
) )
// Executor is called when user input something text.
type Executor func(string) type Executor func(string)
// Completer should return the suggest item from Document.
type Completer func(Document) []Suggest type Completer func(Document) []Suggest
// Prompt is core struct of go-prompt.
type Prompt struct { type Prompt struct {
in ConsoleParser in ConsoleParser
buf *Buffer buf *Buffer
@ -28,10 +32,12 @@ type Prompt struct {
keyBindMode KeyBindMode keyBindMode KeyBindMode
} }
// Exec is the struct contains user input context.
type Exec struct { type Exec struct {
input string input string
} }
// Run starts prompt.
func (p *Prompt) Run() { func (p *Prompt) Run() {
// Logging // Logging
if os.Getenv(envEnableLog) != "true" { if os.Getenv(envEnableLog) != "true" {
@ -187,6 +193,7 @@ func (p *Prompt) feed(b []byte) (shouldExit bool, exec *Exec) {
return return
} }
// Input just returns user input text.
func (p *Prompt) Input() string { func (p *Prompt) Input() string {
// Logging // Logging
if os.Getenv(envEnableLog) != "true" { if os.Getenv(envEnableLog) != "true" {

@ -1,5 +1,6 @@
package prompt package prompt
// Render to render prompt information from state of Buffer.
type Render struct { type Render struct {
out ConsoleWriter out ConsoleWriter
prefix string prefix string
@ -23,6 +24,7 @@ type Render struct {
selectedDescriptionBGColor Color selectedDescriptionBGColor Color
} }
// Setup to initialize console output.
func (r *Render) Setup() { func (r *Render) Setup() {
if r.title != "" { if r.title != "" {
r.out.SetTitle(r.title) r.out.SetTitle(r.title)
@ -36,6 +38,7 @@ func (r *Render) renderPrefix() {
r.out.SetColor(DefaultColor, DefaultColor, false) r.out.SetColor(DefaultColor, DefaultColor, false)
} }
// TearDown to clear title and erasing.
func (r *Render) TearDown() { func (r *Render) TearDown() {
r.out.ClearTitle() r.out.ClearTitle()
r.out.EraseDown() r.out.EraseDown()
@ -52,6 +55,7 @@ func (r *Render) prepareArea(lines int) {
return return
} }
// UpdateWinSize called when window size is changed.
func (r *Render) UpdateWinSize(ws *WinSize) { func (r *Render) UpdateWinSize(ws *WinSize) {
r.row = ws.Row r.row = ws.Row
r.col = ws.Col r.col = ws.Col
@ -124,6 +128,7 @@ func (r *Render) renderCompletion(buf *Buffer, completions *CompletionManager) {
return return
} }
// Render renders to the console.
func (r *Render) Render(buffer *Buffer, completion *CompletionManager) { func (r *Render) Render(buffer *Buffer, completion *CompletionManager) {
// Erasing // Erasing
r.out.CursorBackward(int(r.col) + len(buffer.Text()) + len(r.prefix)) r.out.CursorBackward(int(r.col) + len(buffer.Text()) + len(r.prefix))
@ -154,6 +159,7 @@ func (r *Render) Render(buffer *Buffer, completion *CompletionManager) {
r.out.Flush() r.out.Flush()
} }
// BreakLine to break line.
func (r *Render) BreakLine(buffer *Buffer) { func (r *Render) BreakLine(buffer *Buffer) {
// CR // CR
r.out.CursorBackward(int(r.col) + len(buffer.Text()) + len(r.prefix)) r.out.CursorBackward(int(r.col) + len(buffer.Text()) + len(r.prefix))