-
Notifications
You must be signed in to change notification settings - Fork 302
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
all: make HTML escaping in JSON an opt-in
We should avoid calling encoding/json.Marshal where possible. It does not allow passing in options, and it escapes HTML. This means that it forces us to always escape HTML by default, even in cases where we want to not escape by default. One such case are our MarshalJSON methods, which always performed HTML escaping without a choice. This caused the command `cue export` to always escape, even when its --escape flag wasn't being set. As can be seen in the updated test, `cue export` no longer escapes. The --escape flag is now plumbed through as well, which makes the top-level encoding/json.Encoder.Encode call perform the necessary escaping when the flag is set. Another case is cuelang.org/go/pkg/encoding/json, which has an HTMLEscape API rather than a boolean option, so Marshal and MarshalStream should not perform any escaping. This change may break users of `cue export` or `json.Marshal` who did depend on the HTML escaping to happen by default. However, we have always had documented flags and APIs to enable the HTML escaping, and before this fix, there wasn't any way to not escape HTML. For those reasons, this should be an acceptable change to make. To get encoding/json.Marshal's behavior without the escaping, create a new Marshal func in internal/encoding/json which uses encoding/json.Encoder.Encode with a buffer. Note that we import internal/encoding/json as "internaljson", to make its use instead of encoding/json clear and explicit. For consistency, all calls to encoding/json.Marshal are replaced. If encoding/json's API is ever improved upon, we can likely simplify or avoid our workaround. For now, avoiding upstream's Marshal API is the best we can do. Fixes #1243. Signed-off-by: Daniel Martí <mvdan@mvdan.cc> Change-Id: Ie11c8cfdc3741927c2aae28bce0d67c214411480 Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/548783 Reviewed-by: Roger Peppe <rogpeppe@gmail.com> Unity-Result: CUEcueckoo <cueckoo@cuelang.org> TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
- Loading branch information
Showing
10 changed files
with
42 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters