diff options
| author | David Schlachter <t480-debian-git@schlachter.ca> | 2026-01-09 01:53:19 -0500 |
|---|---|---|
| committer | David Schlachter <t480-debian-git@schlachter.ca> | 2026-01-09 01:53:19 -0500 |
| commit | e5e4f420726cd67c89ee92498d9e5f20c64063ee (patch) | |
| tree | c15f12795ff220fd2717a82fb163e4db4b16063e | |
| parent | d49203deaaf1a52115ac6aeb1da15ec9f4c9081d (diff) | |
Show all senses for each word
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | ui.go | 20 |
2 files changed, 20 insertions, 6 deletions
@@ -83,8 +83,6 @@ Usage of french-wiktionary-flashcards: # TODO -- combine definitions for identical words (e.g. accroire, n & v). Or, we could - expose them through the UI and, e.g. allow the user to tab between them. - allow setting the language for initial processing, so that we could support languages other than French - general code cleanup & organization @@ -99,6 +97,10 @@ Usage of french-wiktionary-flashcards: with interactive options to choose the language and such. - provide history (scrollback) of words looked up, to make it easier to switch between definitions +- definitions for different parts of speech could be more clearly separated in + the preview window. I think it's best to have all the different senses + combined onto one card, but it could still be interesting to allow the user to + scroll between them. - store data in sqlite with more structure to make it easier to customize the format of definitions on cards - figure out some way to customize the names of the fields on the flashcards
\ No newline at end of file @@ -87,16 +87,28 @@ func (m model) Init() tea.Cmd { func lookupWord(db *sql.DB, word string) tea.Cmd { return func() tea.Msg { word = strings.TrimSpace(word) // remove leading / trailing whitespace - row := db.QueryRow(`select definition from words where word = ? limit 1`, word) - var definition string - err := row.Scan(&definition) + rows, err := db.Query(`select definition from words where word = ?`, word) if err != nil { if errors.Is(err, sql.ErrNoRows) { return definitionMsg("") } return errMsg(fmt.Errorf("looking up '%s': %s", word, err)) } - return definitionMsg(definition) + defer rows.Close() + var combinedDefinition []string + for rows.Next() { + var definition string + err = rows.Scan(&definition) + if err != nil { + return errMsg(fmt.Errorf("looking up '%s': %s", word, err)) + } + combinedDefinition = append(combinedDefinition, definition) + } + if err := rows.Err(); err != nil { + return errMsg(fmt.Errorf("looking up '%s': %s", word, err)) + } + + return definitionMsg(strings.Join(combinedDefinition, "\n\n")) } } |
