Skip to content

Commit 33b1e40

Browse files
committed
Seperate range __repr__ for version constraint
strings.Builder is supported since v1.10, so split files for older versions
1 parent c4de1c8 commit 33b1e40

File tree

3 files changed

+76
-32
lines changed

3 files changed

+76
-32
lines changed

py/range.go

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66

77
package py
88

9-
import (
10-
"strings"
11-
)
12-
139
// A python Range object
1410
// FIXME one day support BigInts too!
1511
type Range struct {
@@ -112,34 +108,6 @@ func (r *Range) M__str__() (Object, error) {
112108
return r.M__repr__()
113109
}
114110

115-
func (r *Range) repr() (Object, error) {
116-
var b strings.Builder
117-
b.WriteString("range(")
118-
start, err := ReprAsString(r.Start)
119-
if err != nil {
120-
return nil, err
121-
}
122-
stop, err := ReprAsString(r.Stop)
123-
if err != nil {
124-
return nil, err
125-
}
126-
b.WriteString(start)
127-
b.WriteString(", ")
128-
b.WriteString(stop)
129-
130-
if r.Step != 1 {
131-
step, err := ReprAsString(r.Step)
132-
if err != nil {
133-
return nil, err
134-
}
135-
b.WriteString(", ")
136-
b.WriteString(step)
137-
}
138-
b.WriteString(")")
139-
140-
return String(b.String()), nil
141-
}
142-
143111
func (r *Range) M__repr__() (Object, error) {
144112
return r.repr()
145113
}

py/range_repr110.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright 2018 The go-python Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
5+
// +build go1.10
6+
// Range object
7+
8+
package py
9+
10+
import "strings"
11+
12+
func (r *Range) repr() (Object, error) {
13+
var b strings.Builder
14+
b.WriteString("range(")
15+
start, err := ReprAsString(r.Start)
16+
if err != nil {
17+
return nil, err
18+
}
19+
stop, err := ReprAsString(r.Stop)
20+
if err != nil {
21+
return nil, err
22+
}
23+
b.WriteString(start)
24+
b.WriteString(", ")
25+
b.WriteString(stop)
26+
27+
if r.Step != 1 {
28+
step, err := ReprAsString(r.Step)
29+
if err != nil {
30+
return nil, err
31+
}
32+
b.WriteString(", ")
33+
b.WriteString(step)
34+
}
35+
b.WriteString(")")
36+
37+
return String(b.String()), nil
38+
}

py/range_repr19.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright 2018 The go-python Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
5+
// +build !go1.10
6+
// Range object
7+
8+
package py
9+
10+
import "bytes"
11+
12+
func (r *Range) repr() (Object, error) {
13+
var b bytes.Buffer
14+
b.WriteString("range(")
15+
start, err := ReprAsString(r.Start)
16+
if err != nil {
17+
return nil, err
18+
}
19+
stop, err := ReprAsString(r.Stop)
20+
if err != nil {
21+
return nil, err
22+
}
23+
b.WriteString(start)
24+
b.WriteString(", ")
25+
b.WriteString(stop)
26+
27+
if r.Step != 1 {
28+
step, err := ReprAsString(r.Step)
29+
if err != nil {
30+
return nil, err
31+
}
32+
b.WriteString(", ")
33+
b.WriteString(step)
34+
}
35+
b.WriteString(")")
36+
37+
return String(b.String()), nil
38+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy