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

Output svg file as a data url #169

Open
mtimofiiv opened this issue Sep 26, 2024 · 3 comments
Open

Output svg file as a data url #169

mtimofiiv opened this issue Sep 26, 2024 · 3 comments

Comments

@mtimofiiv
Copy link

mtimofiiv commented Sep 26, 2024

Hey @jamesmartin, thanks for the great library.

This might seem very niche, but there might be times when you want an inline SVG's content as a data url. For example, if you want to use it in CSS:

<div class="stuff">
</div>
<style>
.stuff {
  background-image: url('<svg></svg>');
}
</style>

The only caveat using this is that CSS requires the SVG to be converted into a data url. So the CSS would look like:

.stuff {
  background-image: url('data:image/svg+xml;utf8,<svg></svg>');
}

To make this work, 2 things are required:

  • The svg content needs to be encoded to remove things like # to be replaced with %23
  • Need to prepend the content with data:image/svg+xml;utf8,

I believe this would be a pretty simple thing to add without blowing up this library's API. Perhaps something like:

<%= inline_svg('stuff.svg', as_data_url: true) %>

If this sounds reasonable, I could put together a PR myself and have you review it.

@jamesmartin
Copy link
Owner

Thanks for opening this issue and providing helpful background information about the request to encode SVG documents in a suitable format for CSS data-urls.

I think you're correct about this being a niche feature at the present.

I think it would also be possible to implement this functionality as a custom transformation, if you set it to the highest priority and make sure that whatever object gets returned responds to the #to_html method, returning a string.

@mtimofiiv
Copy link
Author

Good idea, I will put this together then and add it as a transform as you suggest.

@felixding
Copy link

Looking forward to your implementation. It can be pretty handy for Bootstrap icons.

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

No branches or pull requests

3 participants