https://github.com/koykov/halvector
Vector HTTP Accept-Language parser with minimum memory consumption.
https://github.com/koykov/halvector
hal parser vector
Last synced: 6 months ago
JSON representation
Vector HTTP Accept-Language parser with minimum memory consumption.
- Host: GitHub
- URL: https://github.com/koykov/halvector
- Owner: koykov
- License: mit
- Created: 2022-07-18T14:12:39.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2025-11-06T20:25:29.000Z (8 months ago)
- Last Synced: 2025-11-06T22:21:08.829Z (8 months ago)
- Topics: hal, parser, vector
- Language: Go
- Homepage:
- Size: 68.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license.md
Awesome Lists containing this project
README
# HAL vector
HTTP Accept-Language vector parser. Based on [accept-language-parser](https://github.com/opentable/accept-language-parser)
library, but based on vector parser instead of regexp due to performance reasons and reduce pointers policy.
## Usage
```go
src := "fr-CA,fr;q=0.2,en-US;q=0.6,en;q=0.4,*;q=0.5"
vec := halvector.Acquire()
defer halvector.Release(vec)
_ = vec.ParseStr(src)
vec.Sort().Root().Each(func(idx int, node *vector.Node) {
print(idx, ":")
println("code:", node.GetString("code"))
println("script:", node.GetString("script"))
println("region:", node.GetString("region"))
q, _ := node.Get("quality").Float()
println("quality:", q)
})
```
Output:
```
0 :
code: fr
script:
region: CA
quality: +1.000000e+000
1 :
code: en
script:
region: US
quality: +6.000000e-001
2 :
code: *
script:
region:
quality: +5.000000e-001
3 :
code: en
script:
region:
quality: +4.000000e-001
4 :
code: fr
script:
region:
quality: +2.000000e-001
```