chore: tailwindcss theme + goreleaser basic recipe

This commit is contained in:
2022-05-04 12:23:53 +02:00
parent ada7f18e36
commit 2a7dc481b1
29 changed files with 2337 additions and 212 deletions

View File

@ -3,6 +3,7 @@ package route
import (
"net/http"
"net/url"
"strconv"
"strings"
"forge.cadoles.com/wpetit/formidable/internal/jsonpointer"
@ -66,6 +67,10 @@ func createHandleFormHandlerFunc(schema *jsonschema.Schema, defaults, values int
data.Error = validationErr
}
if data.Error == nil {
data.SuccessMessage = "Data updated."
}
if err := template.Exec("index.html.tmpl", w, data); err != nil {
panic(errors.WithStack(err))
}
@ -89,6 +94,10 @@ func handleForm(form url.Values, schema *jsonschema.Schema, values interface{})
switch prefix {
case "bool":
if fieldValues[0] == "" {
continue
}
booVal, err := parseBoolean(fieldValues[0])
if err != nil {
return nil, errors.Wrapf(err, "could not parse boolean field '%s'", property)
@ -101,6 +110,23 @@ func handleForm(form url.Values, schema *jsonschema.Schema, values interface{})
return nil, errors.Wrapf(err, "could not set property '%s' with value '%v'", property, fieldValues[0])
}
case "num":
if fieldValues[0] == "" {
continue
}
numVal, err := parseNumeric(fieldValues[0])
if err != nil {
return nil, errors.Wrapf(err, "could not parse numeric field '%s'", property)
}
pointer := jsonpointer.New(property)
values, err = pointer.Force(values, numVal)
if err != nil {
return nil, errors.Wrapf(err, "could not set property '%s' with value '%v'", property, fieldValues[0])
}
case "add":
pointer := jsonpointer.New(property)
@ -146,6 +172,15 @@ func parseBoolean(value string) (bool, error) {
}
}
func parseNumeric(value string) (float64, error) {
numVal, err := strconv.ParseFloat(value, 64)
if err != nil {
return 0, errors.WithStack(err)
}
return numVal, nil
}
func parseFieldName(name string) (string, string, error) {
tokens := strings.SplitN(name, ":", 2)

View File

@ -1,12 +1,14 @@
package route
import (
"net/http"
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
"github.com/santhosh-tekuri/jsonschema/v5"
)
func NewHandler(schema *jsonschema.Schema, defaults, values interface{}) (*chi.Mux, error) {
func NewHandler(schema *jsonschema.Schema, defaults, values interface{}, assetsHandler http.Handler) (*chi.Mux, error) {
router := chi.NewRouter()
router.Use(middleware.RequestID)
@ -15,5 +17,7 @@ func NewHandler(schema *jsonschema.Schema, defaults, values interface{}) (*chi.M
router.Get("/", createRenderFormHandlerFunc(schema, defaults, values))
router.Post("/", createHandleFormHandlerFunc(schema, defaults, values))
router.Handle("/assets/*", assetsHandler)
return router, nil
}