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 the ability to disable escaping the content of Text nodes #78

Closed
flxzt opened this issue Feb 6, 2024 · 5 comments · Fixed by #79
Closed

Add the ability to disable escaping the content of Text nodes #78

flxzt opened this issue Feb 6, 2024 · 5 comments · Fixed by #79

Comments

@flxzt
Copy link
Contributor

flxzt commented Feb 6, 2024

I (ab)used the Text node to insert Svg content into Svg nodes to make nested Svg's. This is very useful when the content comes from users.

With v0.15 this does not work anymore because the text node now escapes it's content.

I think adding an additional method to the Svg Node to insert an arbitrary string would be enough to make this use case work again. Alternatively, add the ability to turn off escaping when creating new Text nodes.

@flxzt flxzt changed the title make it possible again to embed arbitrary content inside a node add ability to disable escaping content of a new Text node Feb 6, 2024
@IvanUkhov IvanUkhov changed the title add ability to disable escaping content of a new Text node Add the ability to disable escaping the content of Text nodes Feb 10, 2024
@IvanUkhov
Copy link
Member

IvanUkhov commented Feb 10, 2024

Can you please show an example of the final content?

@flxzt
Copy link
Contributor Author

flxzt commented Feb 16, 2024

Sure, for example:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
    width="100"
    height="100"
    viewBox="0 0 100 100"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:svg="http://www.w3.org/2000/svg">
    <svg
        x="10"
        y="10"
        width="50"
        height="50"
        version="1.1"
        xmlns="http://www.w3.org/2000/svg"
        xmlns:svg="http://www.w3.org/2000/svg">
        <rect
            fill="red"
            stroke="black"
            stroke-width="1"
            width="50"
            height="50"
        />
    </svg>
    <svg
        x="40"
        y="40"
        width="50"
        height="50"
        xmlns="http://www.w3.org/2000/svg"
        xmlns:svg="http://www.w3.org/2000/svg">
        <ellipse
            fill="green"
            stroke="black"
            stroke-width="1"
            cx="25"
            cy="25"
            rx="24"
            ry="24"
        />
    </svg>
</svg>

Think that the svg's containing the Rectangle and Ellipse are coming from the user. Actually, in my app I am inserting Text nodes into Group's as well, so this is not only specific to Svg elements.

Whats the reason behind escaping content when creating Text nodes anyway? Or could there be a separate Content node type that does not escape it

@IvanUkhov
Copy link
Member

IvanUkhov commented Feb 16, 2024

But you cannot append them as usual elements? Or it comes in text form, and you would not want to parse?

@flxzt
Copy link
Contributor Author

flxzt commented Feb 16, 2024

Or it comes in text form, and you would not want to parse?

Yes, exactly. It's essentially an arbitrary Svg string which needs to be inserted

@IvanUkhov
Copy link
Member

In general, it would make sense to have a nonescaping node. Perhaps we don't want to abuse node::Text and instead could introduce node::Blob or something as you suggested.

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

Successfully merging a pull request may close this issue.

2 participants