Move processing, evaluation, and related functions to internal/process
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package bkl
|
package process
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package bkl
|
package process
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -134,7 +134,7 @@ func getCrossDoc(docs []*document.Document, pat any) (*document.Document, error)
|
|||||||
var ret *document.Document
|
var ret *document.Document
|
||||||
|
|
||||||
for _, doc := range docs {
|
for _, doc := range docs {
|
||||||
if matchDoc(doc, pat) {
|
if MatchDoc(doc, pat) {
|
||||||
if ret != nil {
|
if ret != nil {
|
||||||
return nil, fmt.Errorf("%#v: %w", pat, errors.ErrMultiMatch)
|
return nil, fmt.Errorf("%#v: %w", pat, errors.ErrMultiMatch)
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package bkl
|
package process
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gopatchy/bkl/internal/document"
|
"github.com/gopatchy/bkl/internal/document"
|
||||||
"github.com/gopatchy/bkl/internal/utils"
|
"github.com/gopatchy/bkl/internal/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func matchDoc(doc *document.Document, pat any) bool {
|
func MatchDoc(doc *document.Document, pat any) bool {
|
||||||
return match(doc.Data, pat)
|
return match(doc.Data, pat)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package bkl
|
package process
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"github.com/gopatchy/bkl/pkg/errors"
|
"github.com/gopatchy/bkl/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
func mergeDocs(doc, patch *document.Document) error {
|
func MergeDocs(doc, patch *document.Document) error {
|
||||||
// If patch document is completely empty (nil), it's a no-op
|
// If patch document is completely empty (nil), it's a no-op
|
||||||
if patch.Data == nil {
|
if patch.Data == nil {
|
||||||
return nil
|
return nil
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package bkl
|
package process
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package bkl
|
package process
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
@@ -93,7 +93,7 @@ func process2Encode(obj any, mergeFrom *document.Document, mergeFromDocs []*docu
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = validate(obj2)
|
err = Validate(obj2)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package bkl
|
package process
|
||||||
|
|
||||||
import "github.com/gopatchy/bkl/internal/document"
|
import "github.com/gopatchy/bkl/internal/document"
|
||||||
|
|
||||||
func processDocument(d *document.Document, mergeFromDocs []*document.Document, env map[string]string) ([]*document.Document, error) {
|
func Document(d *document.Document, mergeFromDocs []*document.Document, env map[string]string) ([]*document.Document, error) {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
ec := newEvalContext(env)
|
ec := newEvalContext(env)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package bkl
|
package process
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package bkl
|
package process
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"golang.org/x/exp/utf8string"
|
"golang.org/x/exp/utf8string"
|
||||||
)
|
)
|
||||||
|
|
||||||
func validate(obj any) error {
|
func Validate(obj any) error {
|
||||||
switch obj2 := obj.(type) {
|
switch obj2 := obj.(type) {
|
||||||
case map[string]any:
|
case map[string]any:
|
||||||
return validateMap(obj2)
|
return validateMap(obj2)
|
||||||
@@ -26,12 +26,12 @@ func validate(obj any) error {
|
|||||||
|
|
||||||
func validateMap(obj map[string]any) error {
|
func validateMap(obj map[string]any) error {
|
||||||
for k, v := range obj {
|
for k, v := range obj {
|
||||||
err := validate(k)
|
err := Validate(k)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: %w", k, err)
|
return fmt.Errorf("%s: %w", k, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = validate(v)
|
err = Validate(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: %w", k, err)
|
return fmt.Errorf("%s: %w", k, err)
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,7 @@ func validateMap(obj map[string]any) error {
|
|||||||
|
|
||||||
func validateList(obj []any) error {
|
func validateList(obj []any) error {
|
||||||
for _, v := range obj {
|
for _, v := range obj {
|
||||||
err := validate(v)
|
err := Validate(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -13,10 +13,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/gopatchy/bkl/internal/document"
|
"github.com/gopatchy/bkl/internal/document"
|
||||||
|
|
||||||
"github.com/gopatchy/bkl/internal/file"
|
"github.com/gopatchy/bkl/internal/file"
|
||||||
"github.com/gopatchy/bkl/internal/format"
|
"github.com/gopatchy/bkl/internal/format"
|
||||||
"github.com/gopatchy/bkl/internal/fsys"
|
"github.com/gopatchy/bkl/internal/fsys"
|
||||||
|
"github.com/gopatchy/bkl/internal/process"
|
||||||
"github.com/gopatchy/bkl/internal/utils"
|
"github.com/gopatchy/bkl/internal/utils"
|
||||||
"github.com/gopatchy/bkl/pkg/errors"
|
"github.com/gopatchy/bkl/pkg/errors"
|
||||||
)
|
)
|
||||||
@@ -95,7 +95,7 @@ func (b *bkl) mergeDocument(patch *document.Document) error {
|
|||||||
for _, doc := range b.parents(patch) {
|
for _, doc := range b.parents(patch) {
|
||||||
matched = true
|
matched = true
|
||||||
|
|
||||||
err = mergeDocs(doc, patch)
|
err = process.MergeDocs(doc, patch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -135,7 +135,7 @@ func (b *bkl) mergePatchMatch(patch *document.Document) (bool, error) {
|
|||||||
// Explicit append
|
// Explicit append
|
||||||
doc := document.New(fmt.Sprintf("%s|matchnull", patch.ID))
|
doc := document.New(fmt.Sprintf("%s|matchnull", patch.ID))
|
||||||
b.docs = append(b.docs, doc)
|
b.docs = append(b.docs, doc)
|
||||||
return true, mergeDocs(doc, patch)
|
return true, process.MergeDocs(doc, patch)
|
||||||
}
|
}
|
||||||
|
|
||||||
docs := b.findMatches(patch, m)
|
docs := b.findMatches(patch, m)
|
||||||
@@ -144,7 +144,7 @@ func (b *bkl) mergePatchMatch(patch *document.Document) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, doc := range docs {
|
for _, doc := range docs {
|
||||||
err := mergeDocs(doc, patch)
|
err := process.MergeDocs(doc, patch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return true, err
|
return true, err
|
||||||
}
|
}
|
||||||
@@ -159,7 +159,7 @@ func (b *bkl) findMatches(doc *document.Document, pat any) []*document.Document
|
|||||||
// Try parents, then all docs
|
// Try parents, then all docs
|
||||||
for _, ds := range [][]*document.Document{b.parents(doc), b.docs} {
|
for _, ds := range [][]*document.Document{b.parents(doc), b.docs} {
|
||||||
for _, d := range ds {
|
for _, d := range ds {
|
||||||
if matchDoc(d, pat) {
|
if process.MatchDoc(d, pat) {
|
||||||
ret = append(ret, d)
|
ret = append(ret, d)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -213,7 +213,7 @@ func (b *bkl) mergeFileObj(f *file.File) error {
|
|||||||
// outputDocument returns the output objects generated by the specified
|
// outputDocument returns the output objects generated by the specified
|
||||||
// document.
|
// document.
|
||||||
func (b *bkl) outputDocument(doc *document.Document, env map[string]string) ([]any, error) {
|
func (b *bkl) outputDocument(doc *document.Document, env map[string]string) ([]any, error) {
|
||||||
docs, err := processDocument(doc, b.docs, env)
|
docs, err := process.Document(doc, b.docs, env)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -243,7 +243,7 @@ func (b *bkl) outputDocument(doc *document.Document, env map[string]string) ([]a
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
err = validate(v2)
|
err = process.Validate(v2)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user