goplay: github.com/haya14busa/goplay Index | Examples | Files | Directories

package goplay

import "github.com/haya14busa/goplay"

Package goplay provides The Go Playground (https://play.golang.org/) client

Index

Examples

Package Files

goplay.go

Variables

var DefaultClient = &Client{}

DefaultClient is default Go Playground client.

type Client Uses

type Client struct {
    // The base URL of The Go Playground. Default is `https://play.golang.org/`.
    BaseURL string

    // The HTTP client to use when sending requests. Defaults to
    // `http.DefaultClient`.
    HTTPClient *http.Client
}

Client represensts The Go Playground client.

func (*Client) Compile Uses

func (c *Client) Compile(code io.Reader) (*Response, error)

Compile compiles code on The Go Playground.

Code:

code := `
package main

import (
	"fmt"
	"time"
)

func main() {
	for i := 3; i > 0; i-- {
		fmt.Printf("%d...\n", i)
		time.Sleep(1 * time.Second)
	}
	fmt.Println("GO!")
}
`
// You can use `DefaultClient` instead of creating `Client` if you want
cli := &Client{HTTPClient: mockCompileClient}
resp, err := cli.Compile(strings.NewReader(code))
if err != nil {
    log.Fatal(err)
}
for _, e := range resp.Events {
    // do not emulate delay.
    // time.Sleep(e.Delay)
    fmt.Print(e.Message)
}

Output:

3...
2...
1...
GO!

func (*Client) Run Uses

func (c *Client) Run(code io.Reader, stdout io.Writer, stderr io.Writer) error

Run runs code which compiled in The Go Playground.

Code:

code := `
package main

import "fmt"

func main() {
	fmt.Println("Hello, 世界!")
}
`
// You can use `DefaultClient` instead of creating `Client` if you want
cli := &Client{HTTPClient: mockRunClient}
if err := cli.Run(strings.NewReader(code), os.Stdout, os.Stderr); err != nil {
    log.Fatal(err)
}

Output:

Hello, 世界!

func (*Client) Share Uses

func (c *Client) Share(code io.Reader) (string, error)

Share creates go playground share link.

Code:

const code = `
package main

import "fmt"

func main() {
	fmt.Println("Hello, 世界!")
}
`
// You can use `DefaultClient` instead of creating `Client` if you want
cli := &Client{HTTPClient: mockShareClient}
url, err := cli.Share(strings.NewReader(code))
if err != nil {
    log.Fatal(err)
}
fmt.Println(url)

Output:

https://play.golang.org/p/OclbDkg7kv

type Event Uses

type Event struct {
    Message string
    Kind    string        // "stdout" or "stderr"
    Delay   time.Duration // time to wait before printing Message

}

Event represensts event of /compile result.

type Response Uses

type Response struct {
    Errors string
    Events []*Event
}

Response represensts response type of /compile.

Directories

PathSynopsis
socketPackage socket is client of `golang.org/x/tools/playground/socket`.

Package goplay imports 8 packages (graph). Updated 2016-09-09. Refresh now. Tools for package owners.