Chromium Code Reviews| Index: service/datastore/index.go |
| diff --git a/service/datastore/index.go b/service/datastore/index.go |
| index d06bd9067f2a9f06991ca6559c3a4745896c7f15..9b7aef02e98a438d921a702768514ed1982dd085 100644 |
| --- a/service/datastore/index.go |
| +++ b/service/datastore/index.go |
| @@ -228,6 +228,48 @@ func (id *IndexDefinition) Compound() bool { |
| return true |
| } |
| +// YAMLString returns the YAML representation of this IndexDefinition. |
| +// |
| +// If the index definition is Builtin() or not Compound(), this will return |
| +// an error. |
| +func (id *IndexDefinition) YAMLString() (string, error) { |
| + if id.Builtin() || !id.Compound() { |
| + return "", fmt.Errorf("cannot generate YAML for this IndexDefinition") |
| + } |
| + |
| + ret := &bytes.Buffer{} |
|
Vadim Sh.
2015/09/24 19:17:29
nit: just bytes.Buffer{}, no need for dynamic allo
iannucci
2015/09/24 19:52:34
Common misconception: there's no actual difference
Vadim Sh.
2015/09/24 19:57:50
"""In the current compilers, if a variable has its
iannucci
2015/09/24 20:12:59
it made more sense before I had the ws function. t
|
| + indent := 0 |
| + |
| + first := true |
| + ws := func(s string) { |
| + nl := "\n" |
| + if first { |
| + nl = "" |
| + first = false |
| + } |
| + _, err := fmt.Fprintf(ret, "%s%s%s", nl, strings.Repeat(" ", indent), s) |
| + if err != nil { |
|
Vadim Sh.
2015/09/24 19:17:29
just remove errcheck from pre-commit-go.yml >_< Ch
iannucci
2015/09/24 19:52:34
lol ok
|
| + panic(err) |
| + } |
| + } |
| + |
| + ws(fmt.Sprintf("- kind: %s", id.Kind)) |
| + indent++ |
| + if id.Ancestor { |
| + ws("ancestor: yes") |
| + } |
| + ws("properties:") |
| + for _, o := range id.SortBy { |
| + ws(fmt.Sprintf("- name: %s", o.Property)) |
| + if o.Descending { |
| + indent++ |
|
Vadim Sh.
2015/09/24 19:17:29
:) just pass indent explicitly, e.g.
ws("properti
iannucci
2015/09/24 19:52:35
done :)
|
| + ws("direction: desc") |
| + indent-- |
| + } |
| + } |
| + return ret.String(), nil |
| +} |
| + |
| func (id *IndexDefinition) String() string { |
| ret := &bytes.Buffer{} |
| wr := func(r rune) { |