This repository has been archived by the owner on Feb 4, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtalash.cabal
104 lines (92 loc) · 5.21 KB
/
talash.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
cabal-version: 2.4
name: talash
version: 0.3.1
Homepage: https://github.com/aikrahguzar/talash
Bug-reports: https://github.com/aikrahguzar/talash/issues
-- A short (one-line) description of the package.
synopsis: Line oriented fast enough text search
-- A longer description of the package.
description: .
This library provides searching a large number of candidates against a query using a given style. Two styles are provided. The default
is orderless style in which a match occurs if the words in the query all occur in the candidate regardless of the order of their occurrence.
A fuzzy style is also provided in which a candidate matches if all the characters of the query occur in it in order.
.
There is also a TUI searcher\/selector interface provided using a [brick](https:\/\/hackage.haskell.org\/package\/brick) app. Like an extremely
barebones version of @fzf@ and mostly intended to be a starting point that has to be configured according to the needs or else it can be embedded into other
applications to provide a selection interface.
.
There is also a piped searcher\/seeker provided in which searcher runs in the background and can be used by a seeker communicating with it using named
pipes.
.
The is also a demo executable for both the brick app and piped version that gets the candidates for the @stdin@. Use @talash help@ for usage information.
.
Some care has been taken to make the searcher performant. The nice string matching interface provided by [alfred-margaret](https:\/\/hackage.haskell.org\/package\/alfred-margaret) is responsible for a
big part of the performance. While [vector-sized](https:\/\/hackage.haskell.org\/package\/vector-sized) is responsible for most of memory
efficieny. Performance can potentially be further improved by using all the cores but it is good enough for my typical use cases of searching among
a few thousand or at most a few tens of thousands of candidates. As a result parallel matching is unlikely to be implemented.
.
The package is lightly maintained, bugs reports are welcome but any action on them will be slow. Patches are welcome for 1. bugfixes
2. simple performance improvements 3. Adding mouse bindings to tui 4. New search styles, especially a better fuzzy one, that matches each word in
the query fuzzily but the words themselves can be matched in any order (I am not sure what is a sensible implementation of this).
-- A URL where users can report bugs.
-- bug-reports:
-- The license under which the package is released.
license: GPL-3.0-only
-- The package author(s).
author: Rahguzar
-- An email address to which users can send suggestions, bug reports, and patches.
maintainer: [email protected]
-- A copyright notice.
-- copyright:
category: search, tui
extra-source-files: CHANGELOG.md
library
exposed-modules:
Talash.Brick
Talash.Brick.Columns
Talash.Chunked
Talash.Core
Talash.Files
Talash.SimpleSearcher
Talash.Piped
-- Modules included in this library but not exported.
other-modules: Talash.Brick.Internal Talash.ScoredMatch Talash.Intro
default-extensions: DeriveGeneric OverloadedStrings NoImplicitPrelude BangPatterns TupleSections ScopedTypeVariables DeriveFunctor DataKinds KindSignatures
other-extensions: TemplateHaskell ExistentialQuantification RankNTypes GeneralizedNewtypeDeriving
build-depends:base >= 4.10.1 && < 5,
alfred-margaret ^>= 2.0,
bitvec,
brick >= 1.0 && < 2.0,
bytestring >= 0.10.8 && < 0.12,
colorful-monoids >= 0.2.1 && < 0.3,
containers,
directory,
extra,
ghc-compact >= 0.1.0 && < 0.3,
io-streams,
microlens >= 0.4.0 && < 0.5,
microlens-th >= 0.4.0 && < 0.5,
mtl,
primitive,
safe,
text ^>= 2.0,
unix >= 2.7.2 && < 2.8,
unordered-containers >= 0.2.9 && < 0.3,
vector >= 0.12.1 && < 0.13.1,
vector-algorithms >= 0.8.0.3 && < 0.9.1,
vector-sized >= 1.4.0 && < 1.5,
vty >= 5.36
ghc-options:
hs-source-dirs: src
default-language: Haskell2010
executable talash
main-is: Main.hs
default-extensions: OverloadedStrings NoImplicitPrelude
-- Modules included in this executable, other than Main.
-- other-modules:
build-depends:
base >= 4.10.1 && < 5,
talash
ghc-options: -threaded -rtsopts
hs-source-dirs: app
default-language: Haskell2010