// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com). // All rights reserved. // global-context.go package expr import "path/filepath" var globalCtx *SimpleFuncStore func ImportInContext(name string) (exists bool) { var mod *module if mod, exists = moduleRegister[name]; exists { mod.importFunc(globalCtx) mod.imported = true } return } func ImportInContextByGlobPattern(pattern string) (count int, err error) { var matched bool for name, mod := range moduleRegister { if matched, err = filepath.Match(pattern, name); err == nil { if matched { count++ mod.importFunc(globalCtx) mod.imported = true } } else { break } } return } func GetVar(ctx ExprContext, name string) (value any, exists bool) { if value, exists = ctx.GetVar(name); !exists { value, exists = globalCtx.GetVar(name) } return } func GetFuncInfo(ctx ExprContext, name string) (item ExprFunc, exists bool, ownerCtx ExprContext) { if item, exists = ctx.GetFuncInfo(name); exists { ownerCtx = ctx } else if item, exists = globalCtx.GetFuncInfo(name); exists { ownerCtx = globalCtx } return } func init() { globalCtx = NewSimpleFuncStore() ImportBuiltinsFuncs(globalCtx) }