goyaml

Differences between revisions 14 and 15
Revision 14 as of 2013-05-29 17:43:18
Size: 2815
Editor: niemeyer
Comment:
Revision 15 as of 2014-03-05 20:15:56
Size: 119
Editor: niemeyer
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
<<TableOfContents>> Details about the Go yaml package were moved to the GitHub project page:
Line 3: Line 3:
== What is it? ==

The goyaml package enables [[http://golang.org|Go]] programs to very comfortably
encode and decode YAML values. It was developed within Canonical as part of the [[https://juju.ubuntu.com|juju]] project, and is based on a pure Go port of
the well-known [[http://pyyaml.org/wiki/LibYAML|libyaml]] C library to parse and
generate YAML data quickly and reliably.

== Compatibility ==

goyaml is almost compatible with YAML 1.1, including support for anchors, tags, etc.
There are still a few missing bits, such as document merging, base-60 floats (huh?),
and multi-document unmarshalling. These features are not hard to add, and will be
introduced as necessary.

== API documentation ==

The API documentation is currently available at:

    http://godoc.org/launchpad.net/goyaml

== Example ==

Here is a simple example:
{{{
package main

import (
    "launchpad.net/goyaml"
    "fmt"
)

var data = `
a: Easy!
b:
  c: 2
  d: [3, 4]
`

type T struct {
    A string
    B struct{C int; D []int ",flow"}
}

func main() {
    t := T{}

    err := goyaml.Unmarshal([]byte(data), &t)
    if err != nil {
        panic(err)
    }
    fmt.Printf("--- t:\n%v\n\n", t)

    d, err := goyaml.Marshal(&t)
    if err != nil {
        panic(err)
    }
    fmt.Printf("--- t dump:\n%s\n\n", string(d))

    m := make(map[interface{}]interface{})

    err = goyaml.Unmarshal([]byte(data), &m)
    if err != nil {
        panic(err)
    }
    fmt.Printf("--- m:\n%v\n\n", m)

    d, err = goyaml.Marshal(&m)
    if err != nil {
        panic(err)
    }
    fmt.Printf("--- m dump:\n%s\n\n", string(d))
}
}}}

This example will generate the following output:

{{{
--- t:
{Easy! {2 [3 4]}}

--- t dump:
a: Easy!
b:
  c: 2
  d: [3, 4]


--- m:
map[a:Easy! b:map[c:2 d:[3 4]]]

--- m dump:
a: Easy!
b:
  c: 2
  d:
  - 3
  - 4
}}}

== Source code ==

To obtain the source code, use [[http://bazaar.canonical.com|Bazaar]] to download it from Launchpad:
{{{
$ bzr branch lp:goyaml
}}}

== Reporting bugs ==

Please report bugs at:

    https://launchpad.net/goyaml

== How to build and install goyaml ==

To make use of goyaml, just run the following command:
{{{
$ go get launchpad.net/goyaml
}}}

== Running tests ==

To run tests, first install [[http://labix.org/gocheck|gocheck]] with:
{{{
$ go get launchpad.net/gocheck
}}}

Then run gotest as usual:

{{{
$ go test
}}}

== License ==

goyaml is licensed under the LGPL.

== Contact ==

This project is being developed under the [[https://juju.ubuntu.com|juju]] project at [[http://www.canonical.com|Canonical]].

To get in touch, send a message to the juju mailing list at: <juju-dev@lists.ubuntu.com>
    https://github.com/go-yaml/go-yaml-v1

Details about the Go yaml package were moved to the GitHub project page:

goyaml (last edited 2014-12-09 23:25:57 by foka)