Comments (3)
Horrowshow is built entirely around text manipulation so this will be tricky. But I'm open to patches as long as:
- It's optional. Horrorshow can work without std/allocations and I'd like to preserve that.
- It doesn't impact performance when rendering to a string.
Main show stoppers:
- Everything is text-based.
- Keeping performance with a dom-based version may not be possible.
- Preserving
write_raw
and friends is probably impossible.
If you want to try this, I'd suggest creating a fork and seeing where you get. You're probably going to have to re-write everything.
from horrorshow-rs.
After some experimentation, cargo +nightly rustc --profile=check -- -Zunstable-options --pretty=expanded
on an example probably illustrates best what you meant by everything being text based:
|__tmpl: &mut ::horrorshow::TemplateBuffer| -> ()
{
__tmpl.write_raw("<body><h1 id=\"");
::horrorshow::RenderOnce::render_once("heading", __tmpl);
[...]
__tmpl.write_raw("</p>");
__tmpl.write_raw("</body>");
I'd still like to explore the possibility, but this shows clearly that compatibility between horrorshow rendering text and anything horrorshow-like rendering a DOM would need to use different preprocessor expansions, which puts it more in the league of "compatibility" rather than "being generic".
from horrorshow-rs.
Yeah, I'd expect any DOM based version to effectively be an alternative implementation of horrorshow with a compatible API.
from horrorshow-rs.
Related Issues (20)
- Context-aware escaping HOT 3
- Indenting / nesting content macro HOT 7
- Combining templates with `fold`/`match` -> no two closures have the same type. HOT 3
- error: no rules expected the token `tmpl` HOT 6
- Nice error messages
- improving example HOT 17
- no std support? + specify Cargo.toml in README HOT 2
- Infinite recursion with RenderOnce::size_hint HOT 1
- escaping converts foreign letters to < > HOT 1
- Add #[macro_export(local_inner_macros)] attribute to support Rust 2018 HOT 1
- Callbacks/passing values from the DOM back into Rust? HOT 2
- Empty div not closing properly HOT 4
- Indenting/reformatting in IntelliJ doesn't fix indentation HOT 2
- HTML boolean attribute support? HOT 1
- How to make a layout that accepts content? HOT 3
- Possibility for custom tags with hyphenated names? HOT 1
- Implement template into ActixWeb HOT 2
- Feature request: render to `Bytes` HOT 3
- README Example Panics HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from horrorshow-rs.