Skip to content

Commit

Permalink
fixes to line length estimation, provide preformat with some (still i…
Browse files Browse the repository at this point in the history
…ncomplete) info on how long the output already is
  • Loading branch information
tom95 committed Dec 16, 2024
1 parent ddad7a3 commit 26982ec
Show file tree
Hide file tree
Showing 8 changed files with 16 additions and 21 deletions.
5 changes: 0 additions & 5 deletions packages/PoppyPrint-Core.package/.squot-contents

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
helper
currentLineLength

^ stream contents size - (stream contents lastIndexOf: Character cr)
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
helper
isMultiLineMessage: aNode

| relevantParts |
| relevantParts partsWithReceiver |
relevantParts := aNode originalArguments.
" if our last argument spreads over multiple lines, we don't consider it "
(self willBeMultiLine: relevantParts last) ifTrue: [relevantParts := relevantParts allButLast].
partsWithReceiver := aNode originalReceiver ifNotNil: [relevantParts copyWithFirst: aNode originalReceiver] ifNil: [relevantParts].

aNode originalReceiver ifNotNil: [relevantParts := relevantParts copyWithFirst: aNode originalReceiver].

^ aNode originalArguments size > 1 and: [(relevantParts anySatisfy: [:arg | self willBeMultiLine: arg]) or: [aNode originalSelector size + (relevantParts inject: 0 into: [:sum :arg | sum + (self preFormat: arg) size]) > self remainingLineLength]]
^ (aNode originalArguments size > 1 and: [partsWithReceiver anySatisfy: [:arg | self willBeMultiLine: arg]]) or: [aNode originalSelector size + (relevantParts inject: 0 into: [:sum :arg | sum + (self preFormat: arg) size]) > self remainingLineLength]
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ preFormat: aNode
formatter := self class new.
formatter parents: parents.
formatter indent: indent.
self currentLineLength timesRepeat: [formatter stream nextPut: $ ].
formatter preFormatCache: preFormatCache copy.
aNode accept: formatter.
{formatter rawContents. indent}]) first
{formatter rawContents allButFirst: self currentLineLength. indent}]) first
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ printing
printKeywordMessage: aNode inCascade: isInCascade multiLine: multiLine

| newLineAfterReceiver |
newLineAfterReceiver := multiLine and: [aNode originalSelector keywords size > 1].
newLineAfterReceiver := multiLine and: [aNode originalArguments size > 1].

^ self indent: (newLineAfterReceiver ifTrue: [1] ifFalse: [0]) around: [
isInCascade ifFalse: [newLineAfterReceiver ifTrue: [self newLine] ifFalse: [stream space]].
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
helper
remainingLineLength

^ self maxLineLength - (stream contents size - (stream contents lastIndexOf: Character cr))
^ self maxLineLength - self currentLineLength
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"config" : "Alexander Ungefug 6/1/2022 16:02",
"config:" : "KD 6/15/2022 15:57",
"contents" : "tobe 3/10/2021 14:58",
"currentLineLength" : "tobe 12/13/2024 16:15",
"example:receiver:args:" : "tobe 3/10/2021 14:58",
"formatTemporariesOf:isMethod:" : "KD 6/15/2022 16:11",
"indent" : "Alexander Ungefug 5/30/2022 19:04",
Expand All @@ -27,14 +28,14 @@
"initialize" : "KD 6/15/2022 16:11",
"isCaseOf:" : "KD 6/15/2022 16:11",
"isEmptyLineMarker:" : "tobe 3/11/2021 10:46",
"isMultiLineMessage:" : "KD 6/15/2022 16:11",
"isMultiLineMessage:" : "tobe 12/16/2024 13:39",
"maxLineLength" : "tobe 3/10/2021 15:10",
"needsParenthesisFor:" : "KD 6/15/2022 16:11",
"newLine" : "tobe 3/10/2021 14:58",
"parentFor:" : "tobe 3/10/2021 14:58",
"parents" : "Alexander Ungefug 5/30/2022 19:04",
"parents:" : "tobe 3/10/2021 14:58",
"preFormat:" : "tobe 3/11/2021 09:55",
"preFormat:" : "tobe 12/13/2024 16:15",
"preFormatCache" : "Alexander Ungefug 5/30/2022 19:04",
"preFormatCache:" : "tobe 3/10/2021 14:58",
"precedenceOf:" : "tobe 3/10/2021 14:58",
Expand All @@ -44,12 +45,12 @@
"printBinaryMessage:multiLine:" : "KD 6/15/2022 16:11",
"printBlockComment:" : "tobe 3/11/2021 09:53",
"printBlockStart:startWithNewLine:" : "tobe 3/10/2021 14:58",
"printKeywordMessage:inCascade:multiLine:" : "tobe 3/10/2021 15:51",
"printKeywordMessage:inCascade:multiLine:" : "tobe 12/13/2024 16:13",
"printMethodComment:" : "tobe 3/11/2021 09:10",
"printPragmas:" : "tobe 3/10/2021 14:58",
"rawContents" : "tobe 3/10/2021 14:58",
"reindent:" : "tobe 3/10/2021 15:51",
"remainingLineLength" : "tobe 3/10/2021 15:27",
"remainingLineLength" : "tobe 12/13/2024 16:15",
"stream" : "tobe 3/10/2021 14:58",
"stream:" : "KD 6/15/2022 16:00",
"visitAssignmentNode:" : "tobe 3/10/2021 14:58",
Expand Down
5 changes: 0 additions & 5 deletions packages/PoppyPrint-Tests.package/.squot-contents

This file was deleted.

0 comments on commit 26982ec

Please sign in to comment.