Git Product home page Git Product logo

Comments (7)

kylelemons avatar kylelemons commented on August 26, 2024

It's pretty straightforward:

handlers, err := yaml.Child(config.Root, "handlers")
// handle err
lst, ok := handlers.(yaml.List)
// handle !ok
for i := 0; i < lst.Len(); i++ {
  node := lst.Item(i);
  // use node
}

from go-gypsy.

vtolstov avatar vtolstov commented on August 26, 2024

Hmm. i can't do this:

       config, err := yaml.ReadFile(dst+"/app.yaml")
       if err != nil {
               fmt.Printf("readfile(%q): %s", dst+"/app.yaml", err)
       }
       handlers, err := config.Get("handlers")
        lst, ok := handlers.(yaml.List)
        if !ok {
                return
        }
        for i := 0; i < lst.Len(); i++ {
                node := lst.Item(i)
                vals := node.(yaml.Map)
                fmt.Printf("%+v\n%+T\n", vals, vals)
        }

go builds says:

invalid type assertion: handlers.(yaml.List) (non-interface type string on left)

from go-gypsy.

kylelemons avatar kylelemons commented on August 26, 2024

oh, you probably have to use yaml.Child to get the Node out.

from go-gypsy.

vtolstov avatar vtolstov commented on August 26, 2024

Code:

        handlers, err := yaml.Child(config.Root, "handlers")
        if err != nil {
                return
        }
        lst, ok := handlers.(yaml.List)
        if !ok {
                return
        }
        for i := 0; i < lst.Len(); i++ {
                node := lst.Item(i)
                vals := node.(yaml.Map)
                fmt.Printf("%+v\n%+T\n", vals, vals)
        }

Produces:

interface conversion: interface is nil, not yaml.Map

from go-gypsy.

vtolstov avatar vtolstov commented on August 26, 2024

types.go needs changing:

diff --git a/yaml/types.go b/yaml/types.go
index c28ed61..ceaf4c6 100644
--- a/yaml/types.go
+++ b/yaml/types.go
@@ -69,7 +69,7 @@ func (node List) Len() int {

 // Get the idx'th item from the List.
 func (node List) Item(idx int) Node {
-       if idx < 0 || idx > len(node) {
+       if idx >= 0 && idx < node.Len() {
                return node[idx]
        }
        return nil

After that all works fine.

from go-gypsy.

kylelemons avatar kylelemons commented on August 26, 2024

Oh dear! If you want to submit a pull request, I'd be happy to pull it and credit you for the fix :).

from go-gypsy.

vtolstov avatar vtolstov commented on August 26, 2024

done

from go-gypsy.

Related Issues (10)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.