module Operations.Query where import Data.Query import Control.Monad.Buuka import Control.Monad.Reader import Data.Foldable (traverse_) import Data.Buuka (Buuka) import qualified Data.Buuka as B import Operations.Format import Data.Text (Text) import qualified Data.Text.IO as T query :: Field Text -> Text -> BuukaM () query field q = buukaQ (asks go) >>= traverse_ (liftIO . T.putStrLn) where go :: Buuka -> [Text] go b = formatEntries b (filter (predicate (regex field q)) . B.elements $ b)