Add regex to the query language
This commit is contained in:
parent
7bae9ca92e
commit
527cc0a34c
@ -59,6 +59,7 @@ library
|
|||||||
, text
|
, text
|
||||||
, lens
|
, lens
|
||||||
, hashable
|
, hashable
|
||||||
|
, regex-tdfa
|
||||||
hs-source-dirs: src
|
hs-source-dirs: src
|
||||||
|
|
||||||
executable buuka
|
executable buuka
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
{ mkDerivation, aeson, base, bytestring, containers
|
{ mkDerivation, aeson, base, bytestring, containers
|
||||||
, deriving-compat, exceptions, filepath, hashable, hashids
|
, deriving-compat, exceptions, filepath, hashable, hashids
|
||||||
, hedgehog, hedgehog-corpus, lens, mtl, optparse-applicative
|
, hedgehog, hedgehog-corpus, lens, mtl, optparse-applicative
|
||||||
, stdenv, tasty, tasty-hedgehog, tasty-hunit, text, transformers
|
, regex-tdfa, stdenv, tasty, tasty-hedgehog, tasty-hunit, text
|
||||||
, unliftio, vector, yaml
|
, transformers, unliftio, vector, yaml
|
||||||
}:
|
}:
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
pname = "buuka";
|
pname = "buuka";
|
||||||
@ -12,7 +12,7 @@ mkDerivation {
|
|||||||
isExecutable = true;
|
isExecutable = true;
|
||||||
libraryHaskellDepends = [
|
libraryHaskellDepends = [
|
||||||
aeson base bytestring containers exceptions filepath hashable
|
aeson base bytestring containers exceptions filepath hashable
|
||||||
hashids lens mtl text transformers unliftio vector yaml
|
hashids lens mtl regex-tdfa text transformers unliftio vector yaml
|
||||||
];
|
];
|
||||||
executableHaskellDepends = [ base optparse-applicative unliftio ];
|
executableHaskellDepends = [ base optparse-applicative unliftio ];
|
||||||
testHaskellDepends = [
|
testHaskellDepends = [
|
||||||
|
@ -21,6 +21,9 @@ import Data.Buuka
|
|||||||
import Data.List
|
import Data.List
|
||||||
(isPrefixOf, isSuffixOf)
|
(isPrefixOf, isSuffixOf)
|
||||||
|
|
||||||
|
import Text.Regex.TDFA
|
||||||
|
((=~))
|
||||||
|
|
||||||
import Data.Functor.Foldable
|
import Data.Functor.Foldable
|
||||||
(Fix(..))
|
(Fix(..))
|
||||||
|
|
||||||
@ -31,6 +34,7 @@ data Field a where
|
|||||||
data QueryF f where
|
data QueryF f where
|
||||||
StartsWith :: Field String -> String -> QueryF f
|
StartsWith :: Field String -> String -> QueryF f
|
||||||
EndsWith :: Field String -> String -> QueryF f
|
EndsWith :: Field String -> String -> QueryF f
|
||||||
|
Regex :: Field String -> String -> QueryF f
|
||||||
And :: f -> f -> QueryF f
|
And :: f -> f -> QueryF f
|
||||||
|
|
||||||
deriving instance Functor QueryF
|
deriving instance Functor QueryF
|
||||||
@ -52,4 +56,6 @@ evaluate = \case
|
|||||||
EndsWith Url x -> \BuukaEntry{url=URL u} -> x `isSuffixOf` u
|
EndsWith Url x -> \BuukaEntry{url=URL u} -> x `isSuffixOf` u
|
||||||
StartsWith Title x -> \BuukaEntry{title=t} -> maybe False (x `isPrefixOf`) t
|
StartsWith Title x -> \BuukaEntry{title=t} -> maybe False (x `isPrefixOf`) t
|
||||||
EndsWith Title x -> \BuukaEntry{title=t} -> maybe False (x `isSuffixOf`) t
|
EndsWith Title x -> \BuukaEntry{title=t} -> maybe False (x `isSuffixOf`) t
|
||||||
|
Regex Url x -> \BuukaEntry{url=URL u} -> u =~ x
|
||||||
|
Regex Title x -> \BuukaEntry{title=t} -> maybe False (=~ x) t
|
||||||
And a b -> \e -> a e && b e
|
And a b -> \e -> a e && b e
|
||||||
|
Loading…
Reference in New Issue
Block a user