From d76f568a43824e1310b617e069612014a7171f5a Mon Sep 17 00:00:00 2001 From: Chris Novakovic Date: Mon, 23 Mar 2026 16:33:48 +0000 Subject: [PATCH] Fix padding direction in `str.ljust` and `str.rjust` `str.ljust` should left-justify `str` in the return value, and `str.rjust` should right-justify `str` in the return value - in other words, `str.ljust` should right-pad `str`, and `str.rjust` should left-pad `str`. --- docs/lexicon.html | 4 ++-- src/parse/asp/builtins.go | 4 ++-- src/parse/asp/interpreter_test.go | 16 ++++++++-------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/lexicon.html b/docs/lexicon.html index ba838f200..d49528faa 100644 --- a/docs/lexicon.html +++ b/docs/lexicon.html @@ -418,7 +418,7 @@

>width[, fillchar]) - - returns a copy of this string left-padded with the character given + - returns a copy of this string right-padded with the character given in fillchar (or the default ' ' if no value is given) until it is width characters long. @@ -431,7 +431,7 @@

>width[, fillchar]) - - returns a copy of this string right-padded with the character given + - returns a copy of this string left-padded with the character given in fillchar (or the default ' ' if no value is given) until it is width characters long. diff --git a/src/parse/asp/builtins.go b/src/parse/asp/builtins.go index 67f3d5cea..f6c2a2ef3 100644 --- a/src/parse/asp/builtins.go +++ b/src/parse/asp/builtins.go @@ -569,9 +569,9 @@ func strJust(s *scope, args []pyObject, left bool) pyObject { return pyString(self) } if left { - return pyString(strings.Repeat(fillchar, count) + self) + return pyString(self + strings.Repeat(fillchar, count)) } - return pyString(self + strings.Repeat(fillchar, count)) + return pyString(strings.Repeat(fillchar, count) + self) } func strLStrip(s *scope, args []pyObject) pyObject { diff --git a/src/parse/asp/interpreter_test.go b/src/parse/asp/interpreter_test.go index aed64561c..511f00b05 100644 --- a/src/parse/asp/interpreter_test.go +++ b/src/parse/asp/interpreter_test.go @@ -734,16 +734,16 @@ func TestBreakLoop(t *testing.T) { func TestStrLjust(t *testing.T) { s, err := parseFile("src/parse/asp/test_data/interpreter/str/ljust.build") assert.NoError(t, err) - assert.EqualValues(t, pyString(" kittens"), s.Lookup("s1")) - assert.EqualValues(t, pyString("+++kittens"), s.Lookup("s2")) + assert.EqualValues(t, pyString("kittens "), s.Lookup("s1")) + assert.EqualValues(t, pyString("kittens+++"), s.Lookup("s2")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s3")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s4")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s5")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s6")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s7")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s8")) - assert.EqualValues(t, pyString("£££kittens"), s.Lookup("s9")) - assert.EqualValues(t, pyString("++++££kittens££"), s.Lookup("s10")) + assert.EqualValues(t, pyString("kittens£££"), s.Lookup("s9")) + assert.EqualValues(t, pyString("££kittens££++++"), s.Lookup("s10")) // Make sure the original string wasn't modified: assert.EqualValues(t, pyString("kittens"), s.Lookup("orig")) @@ -754,16 +754,16 @@ func TestStrLjust(t *testing.T) { func TestStrRjust(t *testing.T) { s, err := parseFile("src/parse/asp/test_data/interpreter/str/rjust.build") assert.NoError(t, err) - assert.EqualValues(t, pyString("kittens "), s.Lookup("s1")) - assert.EqualValues(t, pyString("kittens+++"), s.Lookup("s2")) + assert.EqualValues(t, pyString(" kittens"), s.Lookup("s1")) + assert.EqualValues(t, pyString("+++kittens"), s.Lookup("s2")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s3")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s4")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s5")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s6")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s7")) assert.EqualValues(t, pyString("kittens"), s.Lookup("s8")) - assert.EqualValues(t, pyString("kittens£££"), s.Lookup("s9")) - assert.EqualValues(t, pyString("££kittens££++++"), s.Lookup("s10")) + assert.EqualValues(t, pyString("£££kittens"), s.Lookup("s9")) + assert.EqualValues(t, pyString("++++££kittens££"), s.Lookup("s10")) // Make sure the original string wasn't modified: assert.EqualValues(t, pyString("kittens"), s.Lookup("orig"))