funcs

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2020 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ColOfFunc = func(tiles map[string]jumble.Tile) function.Function {

	return function.New(&function.Spec{
		Params: []function.Parameter{
			{
				Name: "origin",
				Type: cty.String,
			},
		},
		Type: function.StaticReturnType(cty.Number),
		Impl: func(args []cty.Value, retType cty.Type) (ret cty.Value, err error) {
			var origin string
			if err := gocty.FromCtyValue(args[0], &origin); err != nil {
				return cty.NumberIntVal(-1), err
			}

			t, ok := tiles[origin]
			if !ok {
				return cty.NumberIntVal(-1), fmt.Errorf("tile (ID: %s) not found", origin)
			}

			_, col := t.Location()
			return cty.NumberIntVal(int64(col)), nil
		},
	})
}
View Source
var MakeURIFunc = function.New(&function.Spec{
	Params: []function.Parameter{
		{
			Name: "elem1",
			Type: cty.String,
		},
		{
			Name: "elem2",
			Type: cty.String,
		},
	},
	Type: function.StaticReturnType(cty.String),
	Impl: func(args []cty.Value, retType cty.Type) (ret cty.Value, err error) {
		var elem1, elem2 string
		if err := gocty.FromCtyValue(args[0], &elem1); err != nil {
			return cty.UnknownVal(cty.String), err
		}
		if err := gocty.FromCtyValue(args[1], &elem2); err != nil {
			return cty.UnknownVal(cty.String), err
		}

		if strings.HasPrefix(elem1, "http") {
			u, err := url.Parse(elem1)
			if err != nil {
				return cty.UnknownVal(cty.String), err
			}
			u.Path = path.Join(u.Path, elem2)

			return cty.StringVal(u.String()), nil
		}

		return cty.StringVal(filepath.Join(elem1, elem2)), nil
	},
})

MakeURIFunc constructs a function that joins a baseUri with a path.

View Source
var MoveFunc = func(tiles map[string]jumble.Tile) function.Function {

	return function.New(&function.Spec{
		Params: []function.Parameter{
			{
				Name: "origin",
				Type: cty.String,
			},
			{
				Name: "steps",
				Type: cty.Number,
			},
			{
				Name: "dir",
				Type: cty.String,
			},
		},
		Type: function.StaticReturnType(cty.Number),
		Impl: func(args []cty.Value, retType cty.Type) (ret cty.Value, err error) {
			var origin string
			if err := gocty.FromCtyValue(args[0], &origin); err != nil {
				return cty.NumberIntVal(-1), err
			}

			var steps int64
			if err := gocty.FromCtyValue(args[1], &steps); err != nil {
				return cty.NumberIntVal(-1), err
			}

			var dir string
			if err := gocty.FromCtyValue(args[2], &dir); err != nil {
				return cty.NumberIntVal(-1), err
			}

			t, ok := tiles[origin]
			if !ok {
				return cty.NumberIntVal(-1), fmt.Errorf("tile (ID: %s) not found", origin)
			}

			row, col := t.Location()

			switch dir = strings.ToLower(dir); dir {
			case "north":
				return cty.NumberIntVal(int64(row) - steps), nil
			case "east":
				return cty.NumberIntVal(int64(col) + steps), nil
			case "south":
				return cty.NumberIntVal(int64(row) + steps), nil
			case "west":
				return cty.NumberIntVal(int64(col) - steps), nil
			}

			return cty.NumberIntVal(1), fmt.Errorf("unknow direction: %s", dir)
		},
	})
}
View Source
var RowOfFunc = func(tiles map[string]jumble.Tile) function.Function {

	return function.New(&function.Spec{
		Params: []function.Parameter{
			{
				Name: "origin",
				Type: cty.String,
			},
		},
		Type: function.StaticReturnType(cty.Number),
		Impl: func(args []cty.Value, retType cty.Type) (ret cty.Value, err error) {
			var origin string
			if err := gocty.FromCtyValue(args[0], &origin); err != nil {
				return cty.NumberIntVal(-1), err
			}

			t, ok := tiles[origin]
			if !ok {
				return cty.NumberIntVal(-1), fmt.Errorf("tile (ID: %s) not found", origin)
			}

			row, _ := t.Location()
			return cty.NumberIntVal(int64(row)), nil
		},
	})
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL