Skip to content

Commit 435bbb6

Browse files
committed
fix: Object when src is not interface{}
1 parent 93c1f81 commit 435bbb6

File tree

7 files changed

+32
-13
lines changed

7 files changed

+32
-13
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
\_/__/
1010
```
1111

12-
# Underscore.go [![GoDoc](https://godoc.org/github.com/ahl5esoft/golang-underscore?status.svg)](https://godoc.org/github.com/ahl5esoft/golang-underscore) [![Go Report Card](https://goreportcard.com/badge/github.com/ahl5esoft/golang-underscore)](https://goreportcard.com/report/github.com/ahl5esoft/golang-underscore) ![Version](https://img.shields.io/badge/version-2.2.0-green.svg)
12+
# Underscore.go [![GoDoc](https://godoc.org/github.com/ahl5esoft/golang-underscore?status.svg)](https://godoc.org/github.com/ahl5esoft/golang-underscore) [![Go Report Card](https://goreportcard.com/badge/github.com/ahl5esoft/golang-underscore)](https://goreportcard.com/report/github.com/ahl5esoft/golang-underscore) ![Version](https://img.shields.io/badge/version-2.2.1-green.svg)
1313
like <a href="http://underscorejs.org/">underscore.js</a> and C# LINQ, but for Go
1414

1515
## Installation

go.mod

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ go 1.15
44

55
require (
66
github.com/davecgh/go-spew v1.1.1 // indirect
7-
github.com/go-playground/assert/v2 v2.0.1
87
github.com/stretchr/testify v1.6.1
98
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect
109
)

go.sum

-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8
22
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
33
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
44
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
5-
github.com/go-playground/assert v1.2.1 h1:ad06XqC+TOv0nJWnbULSlh3ehp5uLuQEojZY5Tq8RgI=
6-
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
7-
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
85
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
96
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
107
github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=

group_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ func Test_Group(t *testing.T) {
4242
t,
4343
res,
4444
map[string][]int{
45-
"odd": []int{1, 3, 5},
46-
"even": []int{2, 4},
45+
"odd": {1, 3, 5},
46+
"even": {2, 4},
4747
},
4848
)
4949
}

object.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package underscore
22

3-
import "reflect"
3+
import (
4+
"reflect"
5+
)
46

57
func (m enumerable) Object() IEnumerable {
68
iterator := m.GetEnumerator()
@@ -9,8 +11,12 @@ func (m enumerable) Object() IEnumerable {
911
return &enumerator{
1012
MoveNextFunc: func() (valueRV reflect.Value, keyRV reflect.Value, ok bool) {
1113
if ok = iterator.MoveNext(); ok {
12-
keyRV = iterator.GetValue().Index(0).Elem()
13-
valueRV = iterator.GetValue().Index(1).Elem()
14+
keyRV = iterator.GetValue().Index(0)
15+
valueRV = iterator.GetValue().Index(1)
16+
if keyRV.Kind() == reflect.Interface {
17+
keyRV = keyRV.Elem()
18+
valueRV = valueRV.Elem()
19+
}
1420
}
1521

1622
return

object_test.go

+18-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"github.com/stretchr/testify/assert"
77
)
88

9-
func Test_Object(t *testing.T) {
9+
func Test_Object_interface(t *testing.T) {
1010
src := [][]interface{}{
1111
{"a", 1},
1212
{"b", 2},
@@ -22,3 +22,20 @@ func Test_Object(t *testing.T) {
2222
},
2323
)
2424
}
25+
26+
func Test_Object_string(t *testing.T) {
27+
src := [][]string{
28+
{"a", "a1"},
29+
{"b", "b1"},
30+
}
31+
res := make(map[string]string)
32+
Chain(src).Object().Value(&res)
33+
assert.EqualValues(
34+
t,
35+
res,
36+
map[string]string{
37+
"a": src[0][1],
38+
"b": src[1][1],
39+
},
40+
)
41+
}

value_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ func Test_Value(t *testing.T) {
1919
t,
2020
res,
2121
map[string][]int{
22-
"odd": []int{1, 3},
23-
"even": []int{2, 4},
22+
"odd": {1, 3},
23+
"even": {2, 4},
2424
},
2525
)
2626
}

0 commit comments

Comments
 (0)