1
1
mirror of https://github.com/github/semantic.git synced 2024-12-24 23:42:31 +03:00
Commit Graph

314 Commits

Author SHA1 Message Date
Rob Rix
5c1b0809ec Shrink BranchElement by crosswalking. 2016-05-25 10:54:41 -04:00
Rob Rix
5237c7ccc5 Revert "Add a BranchAlignment type."
This reverts commit c85b9fcca08b147c8f2c7bae573f7b30c08f14f4.
2016-05-25 10:43:24 -04:00
Rob Rix
3663cc612b Revert "Add an Arbitrary instance over BranchAlignment."
This reverts commit 17e215b1aec6fdb80212133fe362a9c5120e0b8f.
2016-05-25 10:43:20 -04:00
Rob Rix
e524b4e0fe Revert "Add a Show instance over BranchAlignment."
This reverts commit afd605d4e80d759c8d75b3d912e2e5f36bcc217c.
2016-05-25 10:43:15 -04:00
Rob Rix
d42c071a08 Add a Show instance over BranchAlignment. 2016-05-25 10:42:44 -04:00
Rob Rix
366dba33b3 Add an Arbitrary instance over BranchAlignment. 2016-05-25 10:42:35 -04:00
Rob Rix
03ec660dbc Add a BranchAlignment type. 2016-05-25 10:41:17 -04:00
Rob Rix
13aaee7526 Correct branch element alignment to use crosswalk. 2016-05-25 10:34:22 -04:00
Rob Rix
dbd1030a34 Derive the Show instance for BranchElement. 2016-05-25 10:26:44 -04:00
Rob Rix
1f0d0eb714 Test that alignBranch covers every child in the input. 2016-05-25 09:54:42 -04:00
Rob Rix
c1198065e2 Correct the assignment of ranges to lines. 2016-05-25 09:54:21 -04:00
Rob Rix
6fb9383fb1 Rewrite keysOfAlignedChildren in tacit style in hopes of finding an infinite loop. 2016-05-24 16:21:12 -04:00
Rob Rix
79ef67e6e3 Find the keys of aligned children. 2016-05-24 13:36:12 -04:00
Rob Rix
10a689090b Implement a function to find the key in branch elements that have any. 2016-05-24 13:36:04 -04:00
Rob Rix
a594f54279 Implement construction of arbitrary PrettyDiffs. 2016-05-24 13:04:28 -04:00
Rob Rix
e0e7f0fa4a Add a toPrettyDiff function to abstract the construction of pretty diffs away. 2016-05-24 13:04:10 -04:00
Rob Rix
24a732322c Forgot to commit the import of Control.Monad.State. 2016-05-24 12:00:03 -04:00
Rob Rix
f3f7b5e6b9 Aligned children contain ranges. 2016-05-21 00:08:01 -04:00
Rob Rix
f720901dbc Compute the aligned children from a list of branch elements. 2016-05-20 23:51:24 -04:00
Rob Rix
e4dd1e7cd8 Compute the sources and ranges in a single step. 2016-05-20 23:49:17 -04:00
Rob Rix
bdb02a4bf4 Compute the ranges for a list of elements. 2016-05-20 23:46:14 -04:00
Rob Rix
db6f2b6430 Arbitrary BranchElements’ contents contain their key, not a fresh key. 2016-05-20 23:19:44 -04:00
Rob Rix
96f94c9bdb Shrink Child contents respecting their prefixes/suffixes. 2016-05-20 23:13:36 -04:00
Rob Rix
ff3691eac4 🔥 showThese. 2016-05-20 23:13:17 -04:00
Rob Rix
9acdb24243 🔥 toSource. 2016-05-20 22:42:46 -04:00
Rob Rix
5d9de67ecc Use the Applicative instance to generate BranchElements. 2016-05-20 22:41:48 -04:00
Rob Rix
ea79ce4f04 Rewrite BranchElement/Source computations correctly. 2016-05-20 22:41:38 -04:00
Rob Rix
61c2bf0ccc Simplify the Show instance for BranchElement. 2016-05-20 22:33:06 -04:00
Rob Rix
111b12846a Arbitrary BranchElements have their contents set appropriately up front. 2016-05-20 22:32:00 -04:00
Rob Rix
bfcd3193da Add a convenience to extract the contents from a branch element. 2016-05-20 22:25:41 -04:00
Rob Rix
26d31fa12a Remove the comments describing the contents of Margin & Child since we no longer guarantee them. 2016-05-20 22:19:35 -04:00
Rob Rix
24af4c4af5 Add a function to align branch elements into their lines. 2016-05-20 22:17:39 -04:00
Rob Rix
30bfae37aa Child, not Child'. 2016-05-20 22:13:36 -04:00
Rob Rix
e1110869e3 🔥 Child. 2016-05-20 22:11:48 -04:00
Rob Rix
2eba6e726e toSource(s)/toChildLists operate over BranchElements. 2016-05-20 22:11:22 -04:00
Rob Rix
ed00a34bee Shrink BranchElements. 2016-05-20 22:08:22 -04:00
Rob Rix
c7ed296e8b Don’t re-quote the contents of branch elements. 2016-05-20 22:04:09 -04:00
Rob Rix
f830256a5c Pretty-print Margin elements. 2016-05-20 22:03:39 -04:00
Rob Rix
f09f9cf3a2 Extract showThese to the top. 2016-05-20 22:03:13 -04:00
Rob Rix
097220a454 Pretty-print Child elements differently. 2016-05-20 22:02:29 -04:00
Rob Rix
919f32a650 Spike out an Arbitrary instance for BranchElement. 2016-05-20 21:59:46 -04:00
Rob Rix
419bcfe776 Add a Show instance over BranchElement. 2016-05-20 21:54:33 -04:00
Rob Rix
3aaa9f79ca Stub in a type representing the elements of branches. 2016-05-20 21:50:52 -04:00
Rob Rix
6eabdd06eb Compute a pair of Sources from a list of child lines. 2016-05-20 21:50:41 -04:00
Rob Rix
048c9d34c2 Add a function to compute lists of children. 2016-05-20 21:50:08 -04:00
Rob Rix
2541405fdc Compute a Source from a list of children. 2016-05-20 21:49:29 -04:00
Rob Rix
aff7fbbc47 Ensure that we do not shrink when both childContents and childMargin are empty. 2016-05-20 16:40:25 -04:00
Rob Rix
0e86c8149a Ensure that we can shrink when either childContents or childMargin is empty. 2016-05-20 16:39:58 -04:00
Rob Rix
21fac60bf1 Shrink contents and margins string-wise but not character-wise.
🎩 @rewinfrey
2016-05-20 16:32:28 -04:00
Rob Rix
bd286bfbce Implement shrink over Child. 2016-05-20 16:29:09 -04:00
Rob Rix
97f6183a55 Destructure the child using RecordWildcards. 2016-05-20 16:13:15 -04:00
Rob Rix
2b65c06ffc Add a Show instance for Child.
🎩 @rewinfrey
2016-05-20 16:07:13 -04:00
Rob Rix
1ae30309b4 Newlines are less common than other padding characters. 2016-05-20 16:06:49 -04:00
Rob Rix
f8e007bb46 Children contain asterisks and newlines. 2016-05-20 15:50:31 -04:00
Rob Rix
b0c0f13b61 Children have a string of contents. 2016-05-20 15:50:15 -04:00
Rob Rix
765ac74532 Generate arbitrary margins of spaces and newlines. 2016-05-20 15:44:47 -04:00
Rob Rix
5efb5d8987 Write the childMargin type as String to silence hlint. 2016-05-20 15:44:24 -04:00
Rob Rix
391b1da75e Arbitrary child keys are alphanumeric. 2016-05-20 15:41:20 -04:00
Rob Rix
f2835ac7a6 Child keys are strings. 2016-05-20 15:40:40 -04:00
Rob Rix
13a90624de Stub in a quick Arbitrary instance for Child. 2016-05-20 15:34:20 -04:00
Rob Rix
72455cdecd Add a datatype to represent children for alignBranch property tests. 2016-05-20 15:34:11 -04:00
Rob Rix
5355143395 Add some pending properties. 2016-05-20 13:05:38 -04:00
Rob Rix
018f289fb5 Abstract PrettyDiff over a type parameter. 2016-05-20 12:39:56 -04:00
Rob Rix
cb2ffd188c Add a test case of ungreedy asymmetrical node alignment. 2016-05-19 16:16:35 -04:00
Rob Rix
20627f764f Test alignBranch instead of alignChildrenInRanges. 2016-05-19 13:40:10 -04:00
Rob Rix
ac17a13167 Test that context-only lines are paired up before the asymmetrical halves of split-up symmetrical children. 2016-05-19 12:52:51 -04:00
Rob Rix
d25f7ddc7f Test that we align deletions on a line before insertions. 2016-05-19 12:22:48 -04:00
Rob Rix
1979f4e32f Make it convenient to show the raw structures for strange failure cases. 2016-05-19 12:22:33 -04:00
Rob Rix
80f58f01e3 Do some gymnastics to allow our DSL to construct terms/diffs uniformly. 2016-05-19 12:12:11 -04:00
Rob Rix
198304d45d Use the insert/delete constructors in the test fixtures. 2016-05-19 11:10:48 -04:00
Rob Rix
7bc9a358a5 Add PatchConstructible instances to Patch/SplitPatch. 2016-05-19 11:04:19 -04:00
Rob Rix
04ef584b6c Add a typeclass to make patches/split patches. 2016-05-19 11:03:45 -04:00
Rob Rix
3e63b464f7 Test that symmetrical nodes are split if forced by earlier symmetrical nodes. 2016-05-19 09:01:15 -04:00
Rob Rix
c50493175b Remove the redundant tests of asymmetrical nodes preceding/following symmetrical ones. 2016-05-19 00:21:41 -04:00
Rob Rix
24f98f7db9 Test that symmetrical nodes force alignment on both sides. 2016-05-19 00:19:08 -04:00
Rob Rix
17403fc2b2 Fix up the test of symmetrical nodes and following asymmetrical ones. 2016-05-19 00:18:49 -04:00
Rob Rix
b86ce458b0 Test that symmetrical nodes force alignment of later asymmetrical nodes on the same line. 2016-05-19 00:15:03 -04:00
Rob Rix
7d591e737f Test that symmetrical nodes force alignment of earlier asymmetrical nodes on the same line. 2016-05-19 00:13:49 -04:00
Rob Rix
5c2d9b6b01 Change a test name. 2016-05-19 00:13:26 -04:00
Rob Rix
dc8d0d4fdf Add punctuation characters to a test case to clarify the failure. 2016-05-18 17:22:16 -04:00
Rob Rix
7cfdeff5e5 Intersections with empty children have the same shape as the ranges. 2016-05-17 15:04:09 -04:00
Rob Rix
e40434f476 Test that we align insertions into empty branches without losing nodes. 2016-05-16 12:37:13 -04:00
Rob Rix
6f819341ab Test that we align insertions which span the entirety of the thing. 2016-05-16 10:54:56 -04:00
Rob Rix
8f05beb023 Spacing for alignment. 2016-05-16 10:41:10 -04:00
Rob Rix
2008b63c17 Compute the maximum value in each element correctly. 2016-05-13 18:44:27 -04:00
Rob Rix
9567c44c57 Guarantee non-empty by prepending. 2016-05-13 18:38:19 -04:00
Rob Rix
c02e6c80a5 Pretty all the diffs. 2016-05-13 18:27:38 -04:00
Rob Rix
a5e11db66d Pull align out to the top level. 2016-05-13 18:25:42 -04:00
Rob Rix
bdd03bb122 For now, children should be aligned at a higher priority than their parents.
This came out of https://github.com/github/semantic-diff/pull/558.
2016-05-13 10:51:52 -04:00
joshvera
170110ee8e Fix up tests 2016-05-04 15:15:25 -04:00
Rob Rix
e70a50720c alignChildrenInRanges always exhausts its inputs, so call it instead. 2016-04-27 17:44:15 -04:00
Rob Rix
9c008f1116 Add a (failing) test that numberedRows produces the correct counts. 2016-04-26 15:44:11 -04:00
Rob Rix
64dd8d93da Add a function to get the counts of numbered rows. 2016-04-26 14:54:24 -04:00
Rob Rix
3ad8fb3b8a Sort the imports. 2016-04-26 14:53:50 -04:00
Rob Rix
3366b94b5a Simplify showLine a little further. 2016-04-25 15:08:20 -04:00
Rob Rix
ce9be615a6 Turn the bind around. 2016-04-25 15:04:55 -04:00
Rob Rix
632d2cf86b Simplify padding. 2016-04-25 15:03:49 -04:00
Rob Rix
55af6c2001 Strip newlines inline. 2016-04-25 15:00:46 -04:00
Rob Rix
3a3458684d Derive the Eq instance. 2016-04-25 14:59:20 -04:00
Rob Rix
237558fbed Simplify showLine. 2016-04-25 14:59:00 -04:00