Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add BlockMarshaler and ExpressionMarshaler interfaces #608

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ropnop
Copy link

@ropnop ropnop commented May 10, 2023

Hello! This addresses my feature request in #607 . Internally we have a need for this as we want to be able to implement custom types that either emit raw, unescaped HCL, and be able to encode map[string]string to HCL easily.

These 2 interfaces let us implement the custom marshalling logic in our code while introducing minimal changes to this library code.

I added a few tests in encode_test.go to demonstrate using these interfaces to overwrite expression and block marshaling behavior on custom types, as well as some tests for handling pointer, nil and zero cases (nil and zero will panic - i think this desired behavior)

Let me know what you think - thanks!

@hashicorp-cla
Copy link

hashicorp-cla commented May 10, 2023

CLA assistant check
All committers have signed the CLA.

@yuri-tceretian
Copy link

Great feature! That can make encoding to HCL really powerful and let us implement custom encoding the same way we do JSON\YAML marshallers.

It would be great if maintainers could take a look and eventually merge it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants