Skip to content

Commit a4d8dc4

Browse files
committed
Implemented __repr__ of set
1 parent 7bc4005 commit a4d8dc4

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@ require (
44
github.com/gopherjs/gopherwasm v1.0.0 // indirect
55
github.com/peterh/liner v1.1.0
66
)
7+
8+
go 1.13

py/set.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
package py
1010

11+
import "bytes"
12+
1113
var SetType = NewTypeX("set", "set() -> new empty set object\nset(iterable) -> new set object\n\nBuild an unordered collection of unique elements.", SetNew, nil)
1214

1315
type SetValue struct{}
@@ -103,6 +105,25 @@ func (s *Set) M__bool__() (Object, error) {
103105
return NewBool(len(s.items) > 0), nil
104106
}
105107

108+
func (s * Set) M__repr__() (Object, error) {
109+
var out bytes.Buffer
110+
out.WriteRune('{')
111+
spacer := false
112+
for item := range s.items {
113+
if spacer {
114+
out.WriteString(", ")
115+
}
116+
str, err := ReprAsString(item)
117+
if err != nil {
118+
return nil, err
119+
}
120+
out.WriteString(str)
121+
spacer = true
122+
}
123+
out.WriteRune('}')
124+
return String(out.String()), nil
125+
}
126+
106127
func (s *Set) M__iter__() (Object, error) {
107128
items := make(Tuple, 0, len(s.items))
108129
for item := range s.items {

py/tests/set.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
doc="repr"
2+
assert repr({1,2,3}) == "{1, 2, 3}"
3+
4+
doc="finished"

0 commit comments

Comments
 (0)