Skip to content

Add BlockMarshaler and ExpressionMarshaler interfaces#608

Open
ropnop wants to merge 1 commit into
hashicorp:mainfrom
ropnop:marshaler_interfaces
Open

Add BlockMarshaler and ExpressionMarshaler interfaces#608
ropnop wants to merge 1 commit into
hashicorp:mainfrom
ropnop:marshaler_interfaces

Conversation

@ropnop

@ropnop ropnop commented May 10, 2023

Copy link
Copy Markdown

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

hashicorp-cla commented May 10, 2023

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@yuri-tceretian

Copy link
Copy Markdown

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.

@mickeypash

Copy link
Copy Markdown

@ansgarm what are the steps to getting this merged?

@crw

crw commented Oct 1, 2024

Copy link
Copy Markdown
Contributor

Hi, we discussed this in triage today. This looks like a feature that we would be willing to review. The main barrier is the time it would take to understand why it was not implemented this way originally, to make sure we were not inadvertently introducing new issues by committing this change. Unfortunately, this comes down to maintainer availability. Hopefully the next time someone is doing a deep dive into HCL, we can pick this back up. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants