pjsval

package module
v0.0.0-...-d01af38 Latest Latest
Warning

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

Go to latest
Published: Aug 30, 2016 License: MIT Imports: 10 Imported by: 0

README

pjsval

Build Status Doc License

Generating Go Validator file from JSON Hyper Schema (via prmd).

Demo

# from file
$ pjsval schema.json > validator.go
# from stdin
$ cat schema.json | pjsval > validator.go 
# output file
$ pjsval schema.json -o validator.go
# change package
$ pjsval schema.json -p validator > validator/validator.go 

Installation

CLI
$ go get github.com/moqada/pjsval/cmd/pjsval
Internal libs
$ go get github.com/moqada/pjsval

Usage

CLI
usage: pjsval [<flags>] [<file>]

Flags:
  -h, --help            Show context-sensitive help (also try --help-long and --help-man).
  -o, --output=OUTPUT   Path of Go struct file
  -p, --package="main"  Package name for Go validator file
      --version         Show application version.

Args:
  [<file>]  Path of JSON Schema
Internals

Output Example: ./pjsval_test.go

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Generate

func Generate(in io.Reader, out io.Writer, pkg string) error

Generate validator source code

Example
package main

import (
	"log"
	"os"

	"github.com/moqada/pjsval"
)

func main() {
	in, err := os.Open("./example.json")
	if err != nil {
		log.Fatal(err)
		return
	}
	if err := pjsval.Generate(in, os.Stdout, "validator"); err != nil {
		log.Fatal(err)
		return
	}
}
Output:

package validator

import "github.com/lestrrat/go-jsval"

var InfoInstancesValidator *jsval.JSVal
var UserCreateValidator *jsval.JSVal
var UserSelfValidator *jsval.JSVal
var M *jsval.ConstraintMap
var R0 jsval.Constraint
var R1 jsval.Constraint
var R2 jsval.Constraint

func init() {
	M = &jsval.ConstraintMap{}
	R0 = jsval.String().RegexpString("^[0-9]{4}-[0-9]{2}-[0-9]{2}$")
	R1 = jsval.String()
	R2 = jsval.String()
	M.SetReference("#/definitions/user/definitions/birthday", R0)
	M.SetReference("#/definitions/user/definitions/firstName", R1)
	M.SetReference("#/definitions/user/definitions/lastName", R2)
	InfoInstancesValidator = jsval.New().
		SetName("InfoInstancesValidator").
		SetConstraintMap(M).
		SetRoot(
			jsval.EmptyConstraint,
		)

	UserCreateValidator = jsval.New().
		SetName("UserCreateValidator").
		SetConstraintMap(M).
		SetRoot(
			jsval.Object().
				Required("birthday", "email", "firstName", "lastName").
				AdditionalProperties(
					jsval.EmptyConstraint,
				).
				AddProp(
					"birthday",
					jsval.Reference(M).RefersTo("#/definitions/user/definitions/birthday"),
				).
				AddProp(
					"firstName",
					jsval.Reference(M).RefersTo("#/definitions/user/definitions/firstName"),
				).
				AddProp(
					"lastName",
					jsval.Reference(M).RefersTo("#/definitions/user/definitions/lastName"),
				),
		)

	UserSelfValidator = jsval.New().
		SetName("UserSelfValidator").
		SetConstraintMap(M).
		SetRoot(
			jsval.Object().
				AdditionalProperties(
					jsval.EmptyConstraint,
				).
				AddProp(
					"fields",
					jsval.String(),
				),
		)

}

Types

This section is empty.

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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