Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pascaldekloe/goe
enterprise tooling
https://github.com/pascaldekloe/goe
Last synced: 17 days ago
JSON representation
enterprise tooling
- Host: GitHub
- URL: https://github.com/pascaldekloe/goe
- Owner: pascaldekloe
- License: cc0-1.0
- Created: 2015-05-04T18:23:33.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-03-26T17:29:53.000Z (over 1 year ago)
- Last Synced: 2024-05-22T00:02:55.952Z (6 months ago)
- Language: Go
- Homepage:
- Size: 79.1 KB
- Stars: 12
- Watchers: 4
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Go Enterprise
Common enterprise features for the Go programming language.
This is free and unencumbered software released into the
[public domain](http://creativecommons.org/publicdomain/zero/1.0).[![Build Status](https://github.com/pascaldekloe/goe/actions/workflows/go.yml/badge.svg)](https://github.com/pascaldekloe/goe/actions/workflows/go.yml)
## Expression Language [![API](https://pkg.go.dev/badge/github.com/pascaldekloe/goe/el.svg)](https://pkg.go.dev/github.com/pascaldekloe/goe/el)
GoEL expressions provide error free access to Go types.
It serves as a lightweigth alternative to [unified EL](https://docs.oracle.com/javaee/5/tutorial/doc/bnahq.html), [SpEL](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html) or even [XPath](http://www.w3.org/TR/xpath), [CSS selectors](http://www.w3.org/TR/css3-selectors) and friends.``` Go
func FancyOneLiners() {
// Single field selection:
upper, applicable := el.Bool(`/CharSet[0x1F]/isUpperCase`, x)// Escape path separator slash:
warnings := el.Strings(`/Report/Stats["I\x2fO"]/warn[*]`, x)// Data modification:
el.Assign(x, `/Nodes[7]/Cache/TTL`, 3600)
```#### Performance
The implementation is optimized for performance. No need to precompile expressions.
```
goos: darwin
goarch: arm64
pkg: github.com/pascaldekloe/goe/el
BenchmarkLookups-8 4037929 268.3 ns/op
BenchmarkAssigns-8 2855529 419.9 ns/op
```## Metrics [![API](https://pkg.go.dev/badge/github.com/pascaldekloe/goe/metrics.svg)](https://pkg.go.dev/github.com/pascaldekloe/goe/metrics)
Yet another StatsD implementation.
``` Go
var Metrics = metrics.NewDummy()func GetSomething(w http.ResponseWriter, r *http.Request) {
Metrics.Seen("http.something.gets", 1)
defer Metrics.Took("http.something.get", time.Now())
```## Verification [![API](https://pkg.go.dev/badge/github.com/pascaldekloe/goe/verify.svg)](https://pkg.go.dev/github.com/pascaldekloe/goe/verify)
Test assertions on big objects can be cumbersome with ```reflect.DeepEqual``` and ```"Got %#v, want %#v"```.
Package `verify` offers convenience with reporting. For example `verify.Values(t, "character", got, want)` might print:```
--- FAIL: TestValuesDemo (0.00s)
demo_test.go:72: verification for character:
/Novel[6]/Title: Got "Gold Finger", want "Goldfinger"
^
/Film[20]/Year: Got 1953 (0x7a1), want 2006 (0x7d6)
```