Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/clipperhouse/gen
Type-driven code generation for Go
https://github.com/clipperhouse/gen
code-generation generics go
Last synced: 20 days ago
JSON representation
Type-driven code generation for Go
- Host: GitHub
- URL: https://github.com/clipperhouse/gen
- Owner: clipperhouse
- License: other
- Created: 2013-10-13T20:26:36.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-10-31T21:03:51.000Z (8 months ago)
- Last Synced: 2024-04-15T03:01:15.340Z (2 months ago)
- Topics: code-generation, generics, go
- Language: Go
- Homepage: http://clipperhouse.com/gen/overview/
- Size: 4.18 MB
- Stars: 1,432
- Watchers: 37
- Forks: 90
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Lists
- awesome-go-cn - gen
- awesome-stars - clipperhouse/gen - Type-driven code generation for Go (Go)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-go-projects - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Standard CLI)
- awesome-go - gen - like functionality. | - | - | - | (Generation and Generics / Advanced Console UIs)
- go-awesome-cn-star - gen
- awesome-go - gen - “泛型”功能的代码生成工具。 (<span id="代和泛型-generation-and-generics">代和泛型 Generation and Generics</span> / <span id="高级控制台用户界面-advanced-console-uis">高级控制台用户界面 Advanced Console UIs</span>)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation & Generics / Advanced Console UIs)
- awesome-go-cn - gen - 代码生成工具,用于提供类似泛型的功能 (代码生成与泛型 / 高级控制台界面)
- awesome-star - clipperhouse/gen - driven code generation for Go (Misc)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-Char - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-reader - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-stars - gen - driven code generation for Go | clipperhouse | 1431 | (Go)
- awesome-stars - gen - Type-driven code generation for Go (Go)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation & Generics / Advanced Console UIs)
- awesome-go-cn - gen - like functionality.) (Generation and Generics / Advanced Console UIs)
- awesome-stars - clipperhouse/gen - Type-driven code generation for Go (Go)
- awesome-go-with-framework - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-go-handwritten - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-go - gen - 代碼生成工具,用於提供類似泛型的功能 (代碼生成與泛型 / 高級控制台界面)
- awesome-go. - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-go - gen - Type-driven code generation for Go - ★ 939 (Generation and Generics)
- awesome-go2 - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation & Generics / Advanced Console UIs)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. - :arrow_down:0 - :star:731 (Generation and Generics / Advanced Console UIs)
- fucking-awesome-go - :octocat: gen - Code generation tool for ‘generics’-like functionality. :star: 685 :fork_and_knife: 44 (Generation & Generics / Advanced Console UIs)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-go-cn - gen
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation and Generics / Advanced Console UIs)
- awesome-cobol - gen - Code generation tool for ‘generics’-like functionality. (Code generation & ‘generics’ / Middlewares)
- awesome-go - gen - Code generation tool for ‘generics’-like functionality. (Generation & Generics / Advanced Console UIs)
README
## What’s this?
`gen` is a code-generation tool for Go. It’s intended to offer generics-like functionality on your types. Out of the box, it offers offers LINQ/underscore-inspired methods.
It also offers third-party, runtime extensibility via [typewriters](https://github.com/clipperhouse/typewriter).
#### [Introduction and docs…](http://clipperhouse.github.io/gen/)
[Changelog](https://github.com/clipperhouse/gen/blob/master/CHANGELOG.md)
[Hey, a video](https://www.youtube.com/watch?v=KY8OXFi3CDU)
#### ‼️
This project is deprecated. It won't work with recent versions of Go, and...Go now has proper generics! Treat this project as a historical curiosity.
### Typewriters
There is a list of open-source typewriters in [TYPEWRITERS.md](https://github.com/clipperhouse/gen/blob/master/TYPEWRITERS.md). Please add your own.### Contributing
There are three big parts of `gen`.
#### gen
This repository. The gen package is primarily the command-line interface. Most of the work is done by the typewriter package, and individual typewriters.
#### typewriter
The [typewriter package](https://github.com/clipperhouse/typewriter) is where most of the parsing, type evaluation and code generation architecture lives.
#### typewriters
Typewriters are where templates and logic live for generating code. Here’s [set](https://github.com/clipperhouse/set), which will make a lovely Set container for your type. Here’s [slice](https://github.com/clipperhouse/slice), which provides the built-in LINQ-like functionality. Here’s [stringer](https://github.com/clipperhouse/stringer), a fork of Rob Pike’s [tool](https://godoc.org/golang.org/x/tools/cmd/stringer).
Third-party typewriters are added easily by the end user. You publish them as Go packages for import. [Learn more...](https://clipperhouse.github.io/gen/typewriters/)
We’d love to see typewriter packages for things like strongly-typed JSON serialization, `Queue`s, `Pool`s or other containers. Anything “of T” is a candidate for a typewriter.