packages feed

jsonnet-0.1.0.0: README.md

# haskell-jsonnet

[![Actions Status](https://github.com/moleike/jsonnet-hs/workflows/build/badge.svg)](https://github.com/moleike/jsonnet-hs/actions) [![Join the chat at https://gitter.im/jsonnet-hs/community](https://badges.gitter.im/jsonnet-hs/community.svg)](https://gitter.im/jsonnet-hs/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

A full-fledged Haskell implementation of the [Jsonnet][jsonnet] spec.
For an introduction to the language itself, see the [tutorial][tutorial] or language [reference][reference].
We are using the same test suite used in the offical [C++][cpp-jsonnet] and [Go][go-jsonnet] implementation (which is fairly comprehensive).

## Build

Using the [stack][stack] build tool:

```bash
git clone github.com/moleike/jsonnet-hs.git
cd jsonnet-hs
stack build
```

## Progress

Here is the implementation status of the main language features:

- [X] array and object comprehension
- [X] array slices
- [X] Python-style string formatting                                           
- [X] text blocks                                                              
- [X] verbatim strings                                                         
- [X] object-level locals                                                      
- [ ] object-level asserts                                                     
- [X] keyword parameters                                                       
- [X] default arguments                                                        
- [ ] top-level arguments                                                      
- [ ] external variables                                                       
- [X] hidden fields ([@CristhianMotoche](https://github.com/CristhianMotoche)) 
- [X] tailstrict annotation                                                    

OO features are implemented but need some more work:
- [X] `self` keyword
- [X] `super` keyword
- [X] outermost object reference `$`                                           
- [X] object composition (merging objects)
- [X] field composition (`+:` field syntax)                      

[//]: # "Implementation overview"



## Contributing

See [CONTRIBUTING.md][contributing].

## Acknowledgments

I took inspiration from [Expresso][Expresso], [hnix][hnix], [fixplate][fixplate], and numerous other libraries. Thanks to their authors.

## License

See [LICENSE][license].

Copyright © 2020–present Alexandre Moreno

[jsonnet]: https://jsonnet.org/
[tutorial]: https://jsonnet.org/learning/tutorial.html
[reference]: https://jsonnet.org/ref/language.html
[stack]: https://docs.haskellstack.org/en/stable/README
[Expresso]: https://github.com/willtim/Expresso
[hnix]: https://github.com/haskell-nix/hnix
[fixplate]: https://hackage.haskell.org/package/fixplate
[contributing]: https://github.com/moleike/haskell-jsonnet/blob/master/CONTRIBUTING.md
[license]: https://github.com/moleike/haskell-jsonnet/blob/master/LICENSE
[cpp-jsonnet]: https://github.com/google/jsonnet
[go-jsonnet]: https://github.com/google/go-jsonnet