Re: [go-nuts] Re: Generating go code using go templates

2021-09-20 Thread Denis Cheremisov
Trees although better in general than template still have one critical 
disadvantage: it is hard to control a code they produces.I tried approaches 
with templates, line by line and trees. Line by line is generally the best 
of them.
понедельник, 20 сентября 2021 г. в 23:15:22 UTC+3, chet...@gmail.com: 

> Yes. Generating large portions of code via templates is going to be hard. 
> Especially reusing and maintaining it.
> There is an excellent library called jennifer - 
> https://github.com/dave/jennifer that lets you generate Go code by 
> building the syntax tree. The examples make it super simple to get started. 
> You might want to check it out.
>
> On Monday, September 20, 2021 at 12:29:51 PM UTC-7 va...@selfip.ru wrote:
>
>> I'm writing a code generator from protobuf via templates and i can say - 
>> debugging it is very hard. When you have big files you can't check syntax 
>> easily, don't know how it looks and if you have errors in the template it 
>> is really hard to fix them.
>> So the protoc-gen-go case is preferable.
>>
>> вс, 19 сент. 2021 г. в 04:33, Denis Cheremisov :
>>
>>> Templates is the worst approach to code generation IMO. Take a look how 
>>> they do this in protoc-gen-go: 
>>>
>>> https://github.com/protocolbuffers/protobuf-go/blob/b92717ecb630d4a4824b372bf98c729d87311a4d/cmd/protoc-gen-go/internal_gengo/main.go#L83
>>>
>>> I am using very similar approach, albeit I prefer format lines, it looks 
>>> like:
>>> [image: Screenshot from 2021-09-19 04-22-26.png]
>>>
>>> Templates may be OK only in trivial cases. Once you need something less 
>>> trivial it is getting harder and harder to reason how the final code will 
>>> look like with them
>>> and you will end up with bunch of hard to manage templates. Unlike it, 
>>> line-by-line code generation keep staying close to the final code.
>>> вторник, 7 сентября 2021 г. в 22:53:51 UTC+3, amitl...@gmail.com: 
>>>

 Hi gophers,
 I wrote https://github.com/fluhus/goat for generating go code in my 
 projects. I hope it can help you too. It's a minimal tool that takes a 
 text/template  template as input, 
 runs it on the given parameters and gofmt's the output. You can also use 
 it 
 on non-go-source.
 Feedback is welcome.

 Amit

>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to golang-nuts...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/406179d9-c8f5-497d-8832-ea04ff9d03b3n%40googlegroups.com
>>>  
>>> 
>>> .
>>>
>>
>>
>> -- 
>> Vasiliy Tolstov,
>> e-mail: v.to...@selfip.ru
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/a34732e5-e6c5-4a91-9c55-2aa57d927b01n%40googlegroups.com.


Re: [go-nuts] Re: Generating go code using go templates

2021-09-20 Thread Chetan Gowda
Yes. Generating large portions of code via templates is going to be hard. 
Especially reusing and maintaining it.
There is an excellent library called jennifer - 
https://github.com/dave/jennifer that lets you generate Go code by building 
the syntax tree. The examples make it super simple to get started. You 
might want to check it out.

On Monday, September 20, 2021 at 12:29:51 PM UTC-7 va...@selfip.ru wrote:

> I'm writing a code generator from protobuf via templates and i can say - 
> debugging it is very hard. When you have big files you can't check syntax 
> easily, don't know how it looks and if you have errors in the template it 
> is really hard to fix them.
> So the protoc-gen-go case is preferable.
>
> вс, 19 сент. 2021 г. в 04:33, Denis Cheremisov :
>
>> Templates is the worst approach to code generation IMO. Take a look how 
>> they do this in protoc-gen-go: 
>>
>> https://github.com/protocolbuffers/protobuf-go/blob/b92717ecb630d4a4824b372bf98c729d87311a4d/cmd/protoc-gen-go/internal_gengo/main.go#L83
>>
>> I am using very similar approach, albeit I prefer format lines, it looks 
>> like:
>> [image: Screenshot from 2021-09-19 04-22-26.png]
>>
>> Templates may be OK only in trivial cases. Once you need something less 
>> trivial it is getting harder and harder to reason how the final code will 
>> look like with them
>> and you will end up with bunch of hard to manage templates. Unlike it, 
>> line-by-line code generation keep staying close to the final code.
>> вторник, 7 сентября 2021 г. в 22:53:51 UTC+3, amitl...@gmail.com: 
>>
>>>
>>> Hi gophers,
>>> I wrote https://github.com/fluhus/goat for generating go code in my 
>>> projects. I hope it can help you too. It's a minimal tool that takes a 
>>> text/template  template as input, 
>>> runs it on the given parameters and gofmt's the output. You can also use it 
>>> on non-go-source.
>>> Feedback is welcome.
>>>
>>> Amit
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to golang-nuts...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/golang-nuts/406179d9-c8f5-497d-8832-ea04ff9d03b3n%40googlegroups.com
>>  
>> 
>> .
>>
>
>
> -- 
> Vasiliy Tolstov,
> e-mail: v.to...@selfip.ru
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/978ebadf-81a6-4375-841b-ee6e15b537c5n%40googlegroups.com.


Re: [go-nuts] Re: Generating go code using go templates

2021-09-20 Thread Vasiliy Tolstov
I'm writing a code generator from protobuf via templates and i can say -
debugging it is very hard. When you have big files you can't check syntax
easily, don't know how it looks and if you have errors in the template it
is really hard to fix them.
So the protoc-gen-go case is preferable.

вс, 19 сент. 2021 г. в 04:33, Denis Cheremisov :

> Templates is the worst approach to code generation IMO. Take a look how
> they do this in protoc-gen-go:
>
> https://github.com/protocolbuffers/protobuf-go/blob/b92717ecb630d4a4824b372bf98c729d87311a4d/cmd/protoc-gen-go/internal_gengo/main.go#L83
>
> I am using very similar approach, albeit I prefer format lines, it looks
> like:
> [image: Screenshot from 2021-09-19 04-22-26.png]
>
> Templates may be OK only in trivial cases. Once you need something less
> trivial it is getting harder and harder to reason how the final code will
> look like with them
> and you will end up with bunch of hard to manage templates. Unlike it,
> line-by-line code generation keep staying close to the final code.
> вторник, 7 сентября 2021 г. в 22:53:51 UTC+3, amitl...@gmail.com:
>
>>
>> Hi gophers,
>> I wrote https://github.com/fluhus/goat for generating go code in my
>> projects. I hope it can help you too. It's a minimal tool that takes a
>> text/template  template as input, runs
>> it on the given parameters and gofmt's the output. You can also use it on
>> non-go-source.
>> Feedback is welcome.
>>
>> Amit
>>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/406179d9-c8f5-497d-8832-ea04ff9d03b3n%40googlegroups.com
> 
> .
>


-- 
Vasiliy Tolstov,
e-mail: v.tols...@selfip.ru

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CACaajQuOEDr0zyLeS8%3Dm9Xiy1AU12YkqoMtzVkVueaJmbXQ8XA%40mail.gmail.com.


[go-nuts] Re: Generating go code using go templates

2021-09-18 Thread Denis Cheremisov
Templates is the worst approach to code generation IMO. Take a look how 
they do this in protoc-gen-go: 
https://github.com/protocolbuffers/protobuf-go/blob/b92717ecb630d4a4824b372bf98c729d87311a4d/cmd/protoc-gen-go/internal_gengo/main.go#L83

I am using very similar approach, albeit I prefer format lines, it looks 
like:
[image: Screenshot from 2021-09-19 04-22-26.png]

Templates may be OK only in trivial cases. Once you need something less 
trivial it is getting harder and harder to reason how the final code will 
look like with them
and you will end up with bunch of hard to manage templates. Unlike it, 
line-by-line code generation keep staying close to the final code.
вторник, 7 сентября 2021 г. в 22:53:51 UTC+3, amitl...@gmail.com: 

>
> Hi gophers,
> I wrote https://github.com/fluhus/goat for generating go code in my 
> projects. I hope it can help you too. It's a minimal tool that takes a 
> text/template  template as input, runs 
> it on the given parameters and gofmt's the output. You can also use it on 
> non-go-source.
> Feedback is welcome.
>
> Amit
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/406179d9-c8f5-497d-8832-ea04ff9d03b3n%40googlegroups.com.