packages feed

jacinda 2.0.0.0 → 2.0.1.0

raw patch · 8 files changed

+55/−31 lines, 8 filesdep ~optparse-applicativedep ~vector

Dependency ranges changed: optparse-applicative, vector

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@+# 2.0.1.0++  * Add `mapMaybe`, `dedup`, `filter`, `fold`, `fold1`, `scan`, `dedupOn`,+    `catMaybes` synonyms.+ # 2.0.0.0    * Scrap `HasField` typeclass; add row types
doc/guide.pdf view

binary file changed (205361 → 205361 bytes)

jacinda.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.0 name:               jacinda-version:            2.0.0.0+version:            2.0.1.0 license:            AGPL-3 license-file:       COPYING maintainer:         vamchale@gmail.com@@ -77,7 +77,7 @@         directory,         filepath,         microlens-mtl >=0.1.8.0,-        vector,+        vector >=0.12.2.0,         recursion >=1.0.0.0,         split @@ -108,7 +108,7 @@     build-depends:         base,         jacinda-lib,-        optparse-applicative >=0.13.0.0,+        optparse-applicative >=0.14.1.0,         text      if impl(ghc >=8.0)
man/ja.1 view
@@ -1,26 +1,9 @@-.\" Automatically generated by Pandoc 3.1.6.1+.\" Automatically generated by Pandoc 3.1.7 .\"-.\" Define V font for inline verbatim, using C font in formats-.\" that render this, and otherwise B font.-.ie "\f[CB]x\f[]"x" \{\-. ftr V B-. ftr VI BI-. ftr VB B-. ftr VBI BI-.\}-.el \{\-. ftr V CR-. ftr VI CI-. ftr VB CB-. ftr VBI CBI-.\} .TH "ja (1)" "" "" "" ""-.hy .SH NAME-.PP ja - Jacinda: data filtering, processing, reporting .SH SYNOPSIS-.PP ja run src.jac -i data.txt .PP cat FILE1 FILE2 | ja \[aq]#\[dq]$0\[cq]@@ -29,10 +12,8 @@ .PP ja e \[aq]11.67*1.2\[cq] .SH DESCRIPTION-.PP \f[B]Jacinda\f[R] is a data stream processing language à la AWK. .SH SUBCOMMANDS-.PP \f[B]run\f[R] - Run a program from file .PP \f[B]tc\f[R] - Typecheck a program@@ -50,11 +31,9 @@ Include directory for imports .SH LANGUAGE .SS REGEX-.PP Regular expressions follow Rust\[cq]s regex library: https://docs.rs/regex/ .SS BUILTINS-.PP \f[B]:i\f[R] Postfix operator: parse integer .PP \f[B]:f\f[R] Postfix operator: parse float@@ -159,7 +138,6 @@ .PP \f[B]nf\f[R] Number of fields .SS SYNTAX-.PP \f[B]\[ga]n\f[R] nth field .PP \f[B]\[ga]*\f[R] last field@@ -187,13 +165,11 @@ .PP \f[B]\[at]include\[aq]/path/file.jac\[cq]\f[R] File include .SS DECLARATIONS-.PP \f[B]:set fs=/REGEX/;\f[R] Set field separator .PP \f[B]:flush;\f[R] Flush stdout for every line .SH INFLUENTIAL ENVIRONMENT VARIABLES-.PP-\f[V]JAC_PATH\f[R] - colon-separated list of directories to search+\f[CR]JAC_PATH\f[R] - colon-separated list of directories to search .SH EXAMPLES .TP [#x>72] #. $0@@ -238,11 +214,9 @@ \&.?{|\[ga]1 \[ti]* 1 /([\[ha]\[rs]?]*)/} Trim URL .SH BUGS-.PP Please report any bugs you may come across to https://github.com/vmchale/jacinda/issues .SH COPYRIGHT-.PP Copyright 2021-2022. Vanessa McHale. All Rights Reserved.
src/A.hs view
@@ -237,6 +237,7 @@          | OptionVal { eLoc :: a, eMaybe :: Maybe (E a) }          | Cond { eLoc :: a, eIf :: E a, eThen :: E a, eElse :: E a }          | In { oop :: E a, ip :: Maybe (E a), mm :: Maybe (E a), istream :: E a }+         | RwB { eLoc :: a, eBin :: BBin } | RwT { eLoc :: a, eTer :: BTer }          deriving (Functor, Generic)  instance Recursive (E a) where@@ -276,6 +277,7 @@             | OptionValF a (Maybe x)             | CondF a x x x             | InF x (Maybe x) (Maybe x) x+            | RwBF a BBin | RwTF a BTer             deriving (Generic, Functor, Foldable, Traversable)  type instance Base (E a) = (EF a)@@ -340,6 +342,12 @@     pretty (OptionVal _ (Just e))                                 = "Some" <+> pretty e     pretty (OptionVal _ Nothing)                                  = "None"     pretty (Cond _ e0 e1 e2)                                      = "if" <+> pretty e0 <+> "then" <+> pretty e1 <+> "else" <+> pretty e2+    pretty (RwB _ MapMaybe)                                       = "mapMaybe"+    pretty (RwB _ DedupOn)                                        = "dedupOn"+    pretty (RwB _ Filter)                                         = "filter"+    pretty (RwT _ Fold)                                           = "fold"+    pretty (RwT _ Scan)                                           = "scan"+    pretty (RwB _ Fold1)                                          = "fold1"  instance Show (E a) where show=show.pretty @@ -374,6 +382,8 @@     (==) _ RC{}                                 = error "Cannot compare compiled regex!"     (==) (Paren _ e) e'                         = e == e'     (==) e (Paren _ e')                         = e == e'+    (==) (RwB _ b) (RwB _ b')                   = b == b'+    (==) (RwT _ b) (RwT _ b')                   = b == b'     (==) _ _                                    = False  data C = IsNum | IsEq | IsOrd
src/L.x view
@@ -116,8 +116,10 @@         "|."                     { mkSym FloorSym }         ⌊                        { mkSym FloorSym }         "~."                     { mkSym DedupTok }+        dedup                    { mkSym DedupTok }         "~.*"                    { mkSym DedupOnTok }         ".?"                     { mkSym CatMaybesTok }+        catMaybes                { mkSym CatMaybesTok }         ":?"                     { mkSym MapMaybeTok }         "~*"                     { mkSym CapTok }         "-."                     { mkSym NegTok }@@ -155,6 +157,12 @@         Some                     { mkBuiltin BuiltinSome }         None                     { mkBuiltin BuiltinNone }         fp                       { mkBuiltin BuiltinFp }+        mapMaybe                 { mkBuiltin BuiltinMapMaybe }+        dedupOn                  { mkBuiltin BuiltinDedupOn }+        filter                   { mkBuiltin BuiltinFilt }+        fold                     { mkBuiltin BuiltinFold }+        fold1                    { mkBuiltin BuiltinFold1 }+        scan                     { mkBuiltin BuiltinScan }          ":i"                     { mkBuiltin BuiltinIParse }         ":f"                     { mkBuiltin BuiltinFParse }@@ -394,6 +402,12 @@              | BuiltinSome              | BuiltinNone              | BuiltinFp+             | BuiltinMapMaybe+             | BuiltinDedupOn+             | BuiltinFilt+             | BuiltinFold+             | BuiltinFold1+             | BuiltinScan  instance Pretty Builtin where     pretty BuiltinIParse   = ":i"@@ -410,6 +424,12 @@     pretty BuiltinNone     = "None"     pretty BuiltinFp       = "fp"     pretty BuiltinCaptures = "captures"+    pretty BuiltinMapMaybe = "mapMaybe"+    pretty BuiltinDedupOn  = "dedupOn"+    pretty BuiltinFilt     = "filter"+    pretty BuiltinFold     = "fold"+    pretty BuiltinFold1    = "fold1"+    pretty BuiltinScan     = "scan"  data Token a = EOF { loc :: a }              | TokSym { loc :: a, _sym :: Sym }
src/Parser.y view
@@ -137,6 +137,12 @@     none { TokBuiltin $$ BuiltinNone }     fp { TokBuiltin $$ BuiltinFp }     captures { TokBuiltin $$ BuiltinCaptures }+    mapMaybeL { TokBuiltin $$ BuiltinMapMaybe }+    dedupOnL { TokBuiltin $$ BuiltinDedupOn }+    filterL { TokBuiltin $$ BuiltinFilt }+    foldL { TokBuiltin $$ BuiltinFold }+    fold1L { TokBuiltin $$ BuiltinFold1 }+    scanL { TokBuiltin $$ BuiltinScan }      iParse { TokBuiltin $$ BuiltinIParse }     fParse { TokBuiltin $$ BuiltinFParse }@@ -273,6 +279,12 @@   | rr { RegexLit (loc $1) (encodeUtf8 $ rr $1) }   | min { BB $1 Min }   | max { BB $1 Max }+  | mapMaybeL { RwB $1 MapMaybe }+  | dedupOnL { RwB $1 DedupOn }+  | filterL { RwB $1 Filter }+  | foldL { RwT $1 Fold }+  | fold1L { RwB $1 Fold1 }+  | scanL { RwT $1 Scan }   | split { BB $1 Split }   | match { BB $1 Match }   | splitc { BB $1 Splitc }
src/Parser/Rw.hs view
@@ -56,4 +56,7 @@     a (EAppF l e0@(TB _ Option) (EApp lϵ e1 e2))                                        = EApp l (EApp lϵ e0 e1) e2     a (EAppF l e0@(TB _ AllCaptures) (EApp lϵ (EApp lϵϵ e1 e2) e3))                     = EApp l (EApp lϵ (EApp lϵϵ e0 e1) e2) e3     a (EAppF l e0@(TB _ AllCaptures) (EApp lϵ e1 (EApp lϵϵ e2 e3)))                     = EApp l (EApp lϵ (EApp lϵϵ e0 e1) e2) e3+    a (EAppF l (RwB l0 b) (EApp lϵ e1 e2))                                              = EApp l (EApp lϵ (BB l0 b) e1) e2+    a (EAppF l (RwT l0 t) (EApp lϵ (EApp lϵϵ e1 e2) e3))                                = EApp l (EApp lϵ (EApp lϵϵ (TB l0 t) e1) e2) e3+    a (EAppF l (RwT l0 t) (EApp lϵ e1 (EApp lϵϵ e2 e3)))                                = EApp l (EApp lϵ (EApp lϵϵ (TB l0 t) e1) e2) e3     a x                                                                                 = embed x