Thu 1 Aug 14:15:35 CEST 2024
This commit is contained in:
parent
97bce27750
commit
3cf5fca630
26
data.go
26
data.go
|
@ -4,21 +4,41 @@ import (
|
|||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"sort"
|
||||
|
||||
"github.com/charmbracelet/bubbles/list"
|
||||
)
|
||||
|
||||
type Ranking struct {
|
||||
items []list.Item
|
||||
items []string
|
||||
indexes []int
|
||||
filter string
|
||||
}
|
||||
|
||||
func (a Ranking) Len() int { return len(a.items) }
|
||||
func (a Ranking) Swap(i, j int) { a.items[i], a.items[j] = a.items[j], a.items[i] }
|
||||
func (a Ranking) Swap(i, j int) {
|
||||
a.indexes[i], a.indexes[j] = a.indexes[j], a.indexes[i]
|
||||
}
|
||||
func (a Ranking) Less(i, j int) bool {
|
||||
return len(a.items[i].FilterValue()) < len(a.items[j].FilterValue())
|
||||
return len(a.items[a.indexes[i]]) < len(a.items[a.indexes[j]])
|
||||
}
|
||||
|
||||
func Filter(term string, targets []string) []list.Rank {
|
||||
indexes := make([]int, len(targets))
|
||||
for i := range targets {
|
||||
indexes[i] = i
|
||||
}
|
||||
ranking := Ranking{targets, indexes, term}
|
||||
sort.Stable(ranking)
|
||||
result := make([]list.Rank, len(targets))
|
||||
for i := range targets {
|
||||
result[i] = list.Rank{
|
||||
Index: indexes[i],
|
||||
MatchedIndexes: []int{i},
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func getPaths() []string {
|
||||
paths := []string{}
|
||||
|
|
17
tui.go
17
tui.go
|
@ -77,19 +77,16 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||
if ignoreInput {
|
||||
return m, cmd
|
||||
}
|
||||
cmds := []tea.Cmd{
|
||||
textinput.Blink,
|
||||
}
|
||||
cmds := []tea.Cmd{}
|
||||
|
||||
// m.textInput, cmd = m.textInput.Update(msg)
|
||||
// cmds = append(cmds, cmd)
|
||||
m.textInput, cmd = m.textInput.Update(msg)
|
||||
cmds = append(cmds, cmd)
|
||||
|
||||
|
||||
if !m.list.SettingFilter() {
|
||||
m.list, cmd = m.list.Update(tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune("/")})
|
||||
cmds = append(cmds, cmd)
|
||||
}
|
||||
|
||||
m.list, cmd = m.list.Update(msg)
|
||||
cmds = append(cmds, cmd)
|
||||
|
||||
|
@ -103,8 +100,7 @@ func (m model) View() string {
|
|||
if m.quitting {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("%s\n%s\n",
|
||||
m.textInput.View(),
|
||||
return fmt.Sprintf("%s\n",
|
||||
m.list.View(),
|
||||
)
|
||||
}
|
||||
|
@ -132,14 +128,15 @@ func initialModel(items []list.Item) model {
|
|||
l.SetShowHelp(false)
|
||||
l.SetShowTitle(false)
|
||||
l.SetShowPagination(false)
|
||||
l.Styles.TitleBar = lipgloss.NewStyle()
|
||||
ti := textinput.New()
|
||||
ti.Focus()
|
||||
ti.CharLimit = 156
|
||||
ti.CharLimit = 4096
|
||||
ti.Width = 20
|
||||
l.FilterInput = ti
|
||||
l.Filter = Filter
|
||||
|
||||
return model{
|
||||
textInput: ti,
|
||||
list: l,
|
||||
err: nil,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue