make RenderAttributes() accept both []byte and string #448
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The problem:
Since the
Value
of anAttribute
is defined as of typeinterface{}
, I may think that it accepts all usual types (such as[]byte
,string
, and even numbers).The problem is that when I
SetAttributeString(`target`, `_blank`)
of aLink
, theRenderAttributes
function force the Value to be[]byte
, which results in runtime panic.goldmark/renderer/html/html.go
Line 789 in ce6424a
The solution:
I switch cased the type and rewritten the code as below:
I cannot assume that people don't force the Value to be of type
[]byte
, or that they already know that, and whileSetAttributeString
, use[]byte
. May god bless all those who switch caseNode::AttributeString()
's return value.