Rob Rix
2d21661c85
📝 parseWith/parsePairWith.
2019-10-02 14:47:11 -04:00
Rob Rix
a7c366cde2
Use Map instead of lists of pairs for the parsers.
2019-10-02 14:45:16 -04:00
Rob Rix
ecd283ac43
Rename precisePythonParser to pythonParserPrecise.
2019-10-02 14:10:59 -04:00
Rob Rix
1a1cdc9acb
🔥 the export of precisePythonParser.
2019-10-02 14:10:05 -04:00
Rob Rix
2a8d57fa6d
Merge branch 'master' into list-parsers-independently
2019-10-02 14:08:26 -04:00
Rob Rix
9c981030b9
🔥 ApplyAll.
2019-10-02 14:05:57 -04:00
Rob Rix
66801bf4f6
SomeAnalysisParser uses a single constraint.
2019-10-02 14:05:04 -04:00
Rob Rix
ce3fe3fbe7
Eliminate a few uses of Join.
2019-10-02 13:57:46 -04:00
Rob Rix
4a6da6903d
🔥 redundant language extensions.
2019-10-02 13:53:08 -04:00
Rob Rix
49fe06d576
🔥 the & typeclass.
2019-10-02 13:51:35 -04:00
Patrick Thomson
cf7f403c0d
Merge branch 'master' into safer-exceptions-over-tree-sitter-ffi
2019-10-02 13:48:14 -04:00
Rob Rix
56f8f5f666
Define an analogue of diffWith which does no decoration.
2019-10-02 13:43:41 -04:00
Rob Rix
6b77558d69
Rename diffWith to decoratingDiffWith.
2019-10-02 13:42:15 -04:00
Rob Rix
21f36e1161
Weaken from GADTs to MonoLocalBinds.
2019-10-02 13:35:32 -04:00
Rob Rix
3ec0981e47
🔥 DiffActions.
2019-10-02 13:30:44 -04:00
Rob Rix
f98471a614
🔥 SomeTermPair.
2019-10-02 13:30:39 -04:00
Rob Rix
fdc0fb6dcc
🔥 Decorate.
2019-10-02 13:29:15 -04:00
Rob Rix
2fb8a77ef2
🔥 doParse.
2019-10-02 13:28:56 -04:00
Rob Rix
a5307843c6
🔥 doDiff.
2019-10-02 13:28:08 -04:00
Rob Rix
99f9edf65f
Use diffWith for summaries.
2019-10-02 13:26:52 -04:00
Rob Rix
dd01c89463
Use diffWith for legacy summaries.
2019-10-02 13:25:42 -04:00
Rob Rix
2be893baf0
🔥 diffParsers.
2019-10-02 13:24:56 -04:00
Rob Rix
af17fb489b
Use diffWith for JSON trees.
2019-10-02 13:24:26 -04:00
Rob Rix
e7013d8c90
Use diffWith for JSON graphs.
2019-10-02 13:23:56 -04:00
Rob Rix
e3734e4165
Use diffWith for DOT.
2019-10-02 13:22:59 -04:00
Rob Rix
a6466b86a2
Use diffWith for show.
2019-10-02 13:22:18 -04:00
Rob Rix
4f50381c4c
Use diffWith to diff s-expressions.
2019-10-02 13:21:21 -04:00
Rob Rix
85509fa339
Explicitly list the type parameters for diffWith.
2019-10-02 13:21:08 -04:00
Rob Rix
5cee2da207
Prove DiffTerms for each of the sets of parsers.
2019-10-02 13:20:56 -04:00
Rob Rix
cf37d082d1
Define sets of parsers for each diff output format.
2019-10-02 13:18:02 -04:00
Rob Rix
589a567e60
Export diffWith.
2019-10-02 13:17:49 -04:00
Rob Rix
4036affcf2
Define a helper to run a diff with a specific set of parsers.
2019-10-02 13:15:07 -04:00
Rob Rix
052c99ec12
Define a typeclass for joining constraints together.
2019-10-02 13:14:25 -04:00
Rob Rix
a888d6722e
Generalize diffTerms to require only DiffTerms.
2019-10-02 13:04:46 -04:00
Rob Rix
4d2fd76b2d
Bifoldable (DiffFor term) is a superclass of DiffTerms.
2019-10-02 13:03:59 -04:00
Rob Rix
2c9349087c
Construct the canonical list of diff parsers.
2019-10-02 12:38:14 -04:00
Rob Rix
e8a89bfddc
Use a class for diff actions.
2019-10-02 12:38:01 -04:00
Rob Rix
8418813e5b
Define all of the diffing actions using HasDiffFor.
2019-10-02 12:32:47 -04:00
Rob Rix
678d586ec5
Define a HasDiffFor class with a type family for the diff.
2019-10-02 12:32:07 -04:00
Patrick Thomson
bbf3554bd7
Move and export the exception type.
2019-10-02 12:23:59 -04:00
Patrick Thomson
4c4329f295
Use Exception.try and throw to handle errors from tree-sitter FFI.
...
The crossing into IO and across the FFI boundary is a dangerous
journey. A `try` call handles all possible dynamic/IO-bound
exceptions, and enables the use of a more precise error type on our
end (rather than `String`) and makes downstream code simpler (we just
pass on the thrown `SomeException` rather than throwing a new one
based on a `Left String`).
2019-10-02 12:12:05 -04:00
Rob Rix
e8279b9081
Define an action to parse BlobPairs with a single parser.
2019-10-02 12:11:20 -04:00
Patrick Thomson
ca2f8a65a8
Merge branch 'master' into abstract-actions-over-terms
2019-10-02 12:07:35 -04:00
Rob Rix
f07c8a0c98
Use parseWith to produce tags.
2019-10-02 12:05:02 -04:00
Rob Rix
7454477ecc
Compute tags via a more general interface.
...
This allows us to 🔥 ALaCarteTerm.
2019-10-02 12:01:06 -04:00
Rob Rix
9f97649a33
Swap the order of the source & symbols to summarize params.
2019-10-02 11:57:26 -04:00
Rob Rix
b285e612d9
Move parseWith into Control.Effect.Parse.
2019-10-02 11:46:54 -04:00
Rob Rix
fc9a579085
🔥 doParse.
2019-10-02 11:44:29 -04:00
Rob Rix
837916e922
Use parseWith for JSONGraphTerm.
2019-10-02 11:43:40 -04:00
Rob Rix
41652c96ab
Use parseWith for JSONTreeTerm.
2019-10-02 11:41:21 -04:00
Rob Rix
b0b419bf6e
Use parseWith for DOTGraphTerm.
2019-10-02 11:39:48 -04:00
Rob Rix
5013f3bfca
Define showTermParsers using allParsers.
2019-10-02 11:37:35 -04:00
Rob Rix
f32c25b01a
Define showTermParsers as a function, rather than in a monad.
2019-10-02 11:36:14 -04:00
Rob Rix
d8b99b9cb1
Use the canonical listing of à la carte parsers for sexprTermParsers.
2019-10-02 11:27:13 -04:00
Rob Rix
035f26725f
List the canonical precise parsers.
2019-10-02 11:26:11 -04:00
Rob Rix
7aee07b3ec
List all the canonical parsers.
2019-10-02 11:24:37 -04:00
Rob Rix
1b46f40e8f
List the canonical à la carte parsers.
2019-10-02 11:23:27 -04:00
Rob Rix
0307f7e536
Alphabetize.
2019-10-02 11:22:43 -04:00
Rob Rix
2e9213bfda
Use parseWith for SExprTerm.
2019-10-02 11:19:48 -04:00
Rob Rix
d7d71f2ba5
List the SExprTerm parsers.
2019-10-02 11:18:51 -04:00
Rob Rix
316e6ad0aa
Replace annotations with () in Python terms.
2019-10-02 11:13:53 -04:00
Patrick Thomson
ab2f30cf6e
List comprehensions are nicer here.
2019-10-02 10:57:29 -04:00
Rob Rix
d168e391ef
Rename doParse' to parseWith.
2019-10-02 10:49:32 -04:00
Rob Rix
5309eed607
Move showTermParsers adjacent to ShowTerm.
2019-10-02 10:48:41 -04:00
Rob Rix
3e137ae384
Use the abstracted parsers to define showTermParsers.
2019-10-02 10:47:53 -04:00
Rob Rix
7fdeb90f6b
Define abstracted parsers.
2019-10-02 10:46:15 -04:00
Rob Rix
e3e14a666b
Move SomeParser to Parsing.Parser.
2019-10-02 10:45:53 -04:00
Rob Rix
3026e6210b
Add separators to the haddocks.
2019-10-02 10:32:57 -04:00
Rob Rix
e71e1fcca1
Show terms using showTermParsers/doParse'.
2019-10-02 09:56:57 -04:00
Rob Rix
fe13a6c560
Define a helper to parse using a given list of parsers.
2019-10-02 09:56:42 -04:00
Rob Rix
1e35fcf8e8
Define the list of parsers for the ShowTerm feature.
2019-10-02 09:56:30 -04:00
Rob Rix
a1511f2a4d
Define a SomeParser type abstracting a parser over a given constraint on its terms.
2019-10-02 09:56:10 -04:00
Rob Rix
9f68d5b6c5
Redefine DiffActions as a constraint synonym.
2019-10-02 09:21:08 -04:00
Rob Rix
1fdecb0abb
Redefine TermActions as a constraint synonym since we’re specialized to it.
2019-10-02 09:19:47 -04:00
Rob Rix
764710260c
🔥 yet more redundant language extensions.
2019-10-02 09:14:43 -04:00
Rob Rix
8af41587e4
🔥 more redundant language extensions.
2019-10-02 09:13:41 -04:00
Rob Rix
9b1c99f159
🔥 redundant language extensions.
2019-10-02 08:47:59 -04:00
Patrick Thomson
79e47aaeaf
No need for ProjectException.
2019-10-02 00:54:55 -04:00
Rob Rix
c847990bd6
🔥 a redundant language pragma.
2019-10-01 23:33:11 -04:00
Rob Rix
bc62f324df
Diff using an abstract interface.
2019-10-01 23:32:48 -04:00
Rob Rix
08247c7444
Summarize diffs legacy-wise using an abstract interface.
2019-10-01 22:56:41 -04:00
Rob Rix
fea2338eae
🔥 renderToCTerm.
2019-10-01 22:43:43 -04:00
Rob Rix
f08ac25116
Summarize diffs using an abstract interface.
2019-10-01 22:29:29 -04:00
Rob Rix
e5685f9f5c
🔥 redundant parens.
2019-10-01 22:26:05 -04:00
Rob Rix
5fe4b1da74
🔥 withSomeTermPair.
2019-10-01 22:23:15 -04:00
Rob Rix
68ea7e147d
The diff & term types are mutually supporting.
2019-10-01 22:14:12 -04:00
Rob Rix
0c5342a030
Diff via an abstract interface.
2019-10-01 22:12:18 -04:00
Rob Rix
377d824898
Use distinct type parameters for the annotations on either side.
...
This allows us to ensure that they’re handled soundly.
2019-10-01 22:10:42 -04:00
Rob Rix
7aa36de3f9
Spacing.
2019-10-01 22:05:29 -04:00
Rob Rix
8fc85e8f2b
Render diffs to JSON graphs using an abstract interface.
2019-10-01 22:02:50 -04:00
Rob Rix
b401da6c1f
Render diffs to JSON trees using an abstract interface.
2019-10-01 21:58:15 -04:00
Rob Rix
bf14a4f464
Rename jsonTerm' to jsonTreeTerm.
2019-10-01 21:54:29 -04:00
Rob Rix
c0278a970b
Factor the JSON renderer into jsonDiff.
2019-10-01 21:53:30 -04:00
Rob Rix
bda1269c76
Render diffs to DOT graphs using an abstract interface.
2019-10-01 21:50:47 -04:00
Rob Rix
cc77d7bf17
Render diffs to s-expressions using an abstracted interface.
2019-10-01 21:48:22 -04:00
Rob Rix
868bde86c1
🔥 the CanDiff constraint synonym in favour of DiffActions.
2019-10-01 21:45:37 -04:00
Rob Rix
972653aef2
Show diffs via an abstracted interface.
2019-10-01 21:44:25 -04:00
Rob Rix
bc13823887
Don’t pass the BlobPair to the render function.
2019-10-01 21:43:00 -04:00
Rob Rix
64c2287874
Move the BlobPair to the final position.
2019-10-01 21:35:45 -04:00
Rob Rix
05103d8324
Reformat the doDiff signature.
2019-10-01 21:33:43 -04:00
Rob Rix
6050f10ecf
🔥 redundant parens.
2019-10-01 21:29:42 -04:00
Rob Rix
fdb6d96ab5
Use a class to constrain diffable terms.
2019-10-01 21:23:44 -04:00
Timothy Clem
6488e6e5b1
Thanks @patrickt
2019-10-01 15:46:35 -07:00
Patrick Thomson
99683992cf
Remove Data.Project.readFile and 🔥 error handling in Graph.
...
Because `Data.Project.readFile` could throw an `FileNotFound` error
when looking up `Blob` values in a project for a given `File`, the
code that kicks off graphing required an error constraint. Turns out
we don't even need it: if we have a project, we can access its blobs
directly, since `Blob`s contain `File`s. This allows us to obviate
`Project.readFile` in the first place, which allows us to entirely
sidestep the need to handle errors.
2019-10-01 18:05:47 -04:00
Rob Rix
81847425fa
Rename JSONTerm to JSONTreeTerm.
2019-10-01 17:20:37 -04:00
Timothy Clem
fccbe6aa58
Write out custom To/FromJSON instances
2019-10-01 14:17:18 -07:00
Rob Rix
2034359841
Resume grouping the constraints up.
2019-10-01 17:15:27 -04:00
Rob Rix
f644a452b2
Export less.
2019-10-01 17:04:51 -04:00
Rob Rix
f9e05fc234
🔥 a redundant language extension.
2019-10-01 16:11:19 -04:00
Rob Rix
7b256bffef
Define a ShowTerm instance for precise Python terms.
2019-10-01 16:03:41 -04:00
Rob Rix
235b2e868b
Abstract doParse over the constraints.
2019-10-01 16:03:26 -04:00
Rob Rix
aab52d5e36
🔥 redundant parens.
2019-10-01 15:43:36 -04:00
Rob Rix
3c37459f31
Spacing.
2019-10-01 15:41:50 -04:00
Rob Rix
50105fd525
Express all the necessary constraints over terms, not syntax.
2019-10-01 15:39:50 -04:00
Rob Rix
51dbc97226
Abstract rendering terms to JSON graphs.
2019-10-01 15:36:36 -04:00
Rob Rix
9d4b7cec29
Use the abstract interface for timing.
2019-10-01 15:33:58 -04:00
Rob Rix
bf26428ac0
Abstract JSON term serialization.
2019-10-01 15:33:15 -04:00
Rob Rix
897304ce03
Use the abstract definitions directly.
2019-10-01 15:27:45 -04:00
Rob Rix
c6cfa944d4
Use the abstracted definitions.
2019-10-01 15:25:01 -04:00
Rob Rix
97400fba94
Define a class abstracting DOT graphing.
2019-10-01 15:24:21 -04:00
Rob Rix
0cc79bb866
Define a class abstract s-expression serialization.
2019-10-01 15:23:13 -04:00
Rob Rix
2f77374b9b
Define a class abstracting term showing.
2019-10-01 15:21:58 -04:00
Rob Rix
12a07c252b
Factor the parse out of dotGraphTerm.
2019-10-01 15:15:53 -04:00
Rob Rix
8c6bf14d8f
Factor the parse out of showTerm.
2019-10-01 15:13:34 -04:00
Rob Rix
41a61e37ad
Specialize sexpTerm to Term.
2019-10-01 15:11:49 -04:00
Rob Rix
197ffdd404
Refactor sexpTerm to eliminate the parse.
2019-10-01 15:09:22 -04:00
Rob Rix
e727b3c81b
Eliminate the terms directly in doParse.
2019-10-01 15:05:19 -04:00
Rob Rix
19ac4d2c9a
Align the blobs.
2019-10-01 15:02:09 -04:00
Rob Rix
6f5e2ff8e4
Eliminate the term directly in doParse.
2019-10-01 15:00:33 -04:00
Rob Rix
a060a15d43
Align all the blobs.
2019-10-01 14:56:36 -04:00
Rob Rix
710173303e
Reformat the doParse signature.
2019-10-01 14:54:49 -04:00
Timothy Clem
cba98ae288
Try out manually defining json instances
2019-10-01 10:43:37 -07:00
Rob Rix
5e1b21c773
Export ToSExpression.
2019-10-01 13:00:38 -04:00
Rob Rix
13e3788422
Reformat the signature for doParse.
2019-10-01 12:53:47 -04:00
Rob Rix
02f46c650d
Define TermConstraints as a class.
2019-10-01 12:52:42 -04:00
Rob Rix
7aaaa6433c
🔥 redundant parens.
2019-10-01 12:47:40 -04:00
Rob Rix
cca474b0e9
🔥 the Declarations1 obligation.
2019-10-01 12:46:43 -04:00
Rob Rix
5c6df16782
Move SomeTerm/withSomeTerm into Semantic.Api.Terms.
2019-10-01 12:45:01 -04:00
Rob Rix
a97e42a19e
Simplify the Traversable obligation down to just Foldable/Functor.
2019-10-01 12:42:56 -04:00
Rob Rix
5de3d14bcc
🔥 the HasTextElement & Taggable obligations from TermConstraints.
2019-10-01 12:39:55 -04:00
Rob Rix
05e0086c82
Factor out the term construction.
2019-10-01 12:38:59 -04:00
Rob Rix
598dce7fc8
🔥 ParseEffects.
2019-10-01 12:35:06 -04:00
Rob Rix
0f8da488b0
Don’t specialize parseSymbols for the PerLanguageModes.
2019-10-01 12:33:26 -04:00
Rob Rix
152e94a844
doParse handles the PerLanguageModes.
2019-10-01 12:32:13 -04:00
Rob Rix
785d52314a
Copy in our own version of doParse & SomeTerm.
2019-10-01 12:29:56 -04:00
Rob Rix
11091cf249
Generalize renderToSymbols for legacy tagging.
2019-10-01 12:14:40 -04:00
Rob Rix
371e0c0945
renderToSymbols is pure.
2019-10-01 12:11:52 -04:00
Rob Rix
f9c20bc462
Use ToTags for the legacy tagging API as well.
2019-10-01 12:10:51 -04:00
Rob Rix
f092a3017c
Parameterize ALaCarteTerm by the symbols to summarize.
2019-10-01 12:10:38 -04:00
Rob Rix
7259059b51
Combine the code paths.
2019-10-01 12:01:04 -04:00