diff options
| author | JP Appel <jeanpierre.appel01@gmail.com> | 2025-06-30 19:23:20 -0400 |
|---|---|---|
| committer | JP Appel <jeanpierre.appel01@gmail.com> | 2025-06-30 19:23:20 -0400 |
| commit | 4582265de0c0472755880652dc7b390b342cf3e0 (patch) | |
| tree | aa9938795065eb0feb8b0515ce560c1ff4b941e1 /pkg/query/lexer.go | |
| parent | d339148c514896bb4a1c49e9320091c0c5a4934b (diff) | |
Add filepath to searchable categories
Diffstat (limited to 'pkg/query/lexer.go')
| -rw-r--r-- | pkg/query/lexer.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/pkg/query/lexer.go b/pkg/query/lexer.go index 9e64b82..a421fbc 100644 --- a/pkg/query/lexer.go +++ b/pkg/query/lexer.go @@ -33,6 +33,7 @@ const ( TOK_OP_PIPE // external pipe TOK_OP_ARG // external arg // categories + TOK_CAT_PATH TOK_CAT_TITLE TOK_CAT_AUTHOR TOK_CAT_DATE @@ -82,6 +83,8 @@ func (tokType queryTokenType) String() string { return "Pipe External Command" case TOK_OP_ARG: return "Argument External Command" + case TOK_CAT_PATH: + return "Filepath Category" case TOK_CAT_TITLE: return "Title Category" case TOK_CAT_AUTHOR: @@ -126,7 +129,7 @@ func (t queryTokenType) isClause() bool { } func (t queryTokenType) isCategory() bool { - return t.Any(TOK_CAT_TITLE, TOK_CAT_AUTHOR, TOK_CAT_DATE, TOK_CAT_FILETIME, TOK_CAT_TAGS, TOK_CAT_LINKS, TOK_CAT_META) + return t.Any(TOK_CAT_PATH, TOK_CAT_TITLE, TOK_CAT_AUTHOR, TOK_CAT_DATE, TOK_CAT_FILETIME, TOK_CAT_TAGS, TOK_CAT_LINKS, TOK_CAT_META) } func (t queryTokenType) isOperation() bool { return t.Any(TOK_OP_EQ, TOK_OP_AP, TOK_OP_NE, TOK_OP_LT, TOK_OP_LE, TOK_OP_GE, TOK_OP_GT, TOK_OP_PIPE, TOK_OP_ARG) @@ -248,6 +251,8 @@ func tokenizeOperation(s string) Token { func tokenizeCategory(s string) Token { t := Token{Value: s} switch s { + case "p", "path": + t.Type = TOK_CAT_PATH case "T", "title": t.Type = TOK_CAT_TITLE case "a", "author": @@ -276,7 +281,7 @@ func tokenizeValue(s string, catType queryTokenType) Token { switch catType { case TOK_CAT_DATE, TOK_CAT_FILETIME: t.Type = TOK_VAL_DATETIME - case TOK_CAT_TITLE, TOK_CAT_AUTHOR, TOK_CAT_TAGS, TOK_CAT_LINKS, TOK_CAT_META: + case TOK_CAT_PATH, TOK_CAT_TITLE, TOK_CAT_AUTHOR, TOK_CAT_TAGS, TOK_CAT_LINKS, TOK_CAT_META: t.Type = TOK_VAL_STR } return t @@ -307,7 +312,7 @@ func TokensStringify(tokens []Token) string { case TOK_CLAUSE_AND: b.WriteString("and\n") indentLvl += 1 - case TOK_CAT_TITLE, TOK_CAT_AUTHOR, TOK_CAT_DATE, TOK_CAT_FILETIME, TOK_CAT_TAGS, TOK_CAT_LINKS, TOK_CAT_META, TOK_OP_NEG: + case TOK_CAT_PATH, TOK_CAT_TITLE, TOK_CAT_AUTHOR, TOK_CAT_DATE, TOK_CAT_FILETIME, TOK_CAT_TAGS, TOK_CAT_LINKS, TOK_CAT_META, TOK_OP_NEG: if i == 0 || tokens[i-1].Type != TOK_OP_NEG { writeIndent(&b, indentLvl) } @@ -325,7 +330,7 @@ func TokensStringify(tokens []Token) string { func init() { negPattern := `(?<negation>-?)` - categoryPattern := `(?<category>T|a(?:uthor)?|d(?:ate)?|f(?:iletime)?|t(?:ags|itle)?|l(?:inks)?|m(?:eta)?)` + categoryPattern := `(?<category>T|p(?:ath)?|a(?:uthor)?|d(?:ate)?|f(?:iletime)?|t(?:ags|itle)?|l(?:inks)?|m(?:eta)?)` opPattern := `(?<operator>!=|!+|<=|>=|=|:|~|<|>|!)` valPattern := `(?<value>".*?"|\S*[^\s\)])` statementPattern := `(?<statement>` + negPattern + categoryPattern + opPattern + valPattern + `)` |
