Comments (7)
Good idea, patch applied.
from shakespeare.
@snoyberg I guess I could construct other cases that produce undesirable results. I think the only sensible way to handle this is to follow the specs. I have a patch for this, that I'll push soon.
from shakespeare.
You mean like having sensible values for attribute names and such? I've taken the approach for the most part of "not our problem," but we may as well ensure validity at compile time since it's so easy. If you come up with any other cheap fixes, definitely send a pull request.
from shakespeare.
@snoyberg It is a little bit more code, this is why I put it into a separate module. The layout and comments mean to make it easy to compare it with the spec. I do not use elem
because this is an order of magnitude slower than expanding it.
from shakespeare.
I think what you've put in is too restricting. For example, some Javascript libraries out there use colons in tag names. Also, you could embed SVG in such a way.
I'm not sure what you mean by elem
being an order of magnitude slower. It's going to cause the string to be traversed twice: once in the parse, and then afterwards in the check. The reason I did it with the elem
was to give better error messages, and to keep the parser more consistent.
from shakespeare.
@snoyberg Oh, that is unfortunate. I would still love to have better compile-time guarantees for well-formed content, but right now I've no idea how to tackle it.
Regarding elem
: I had a situation where it made code 10x faster; I could imagine, that the main difference came from inlining. But better error messages are probably more important.
from shakespeare.
Another performance issue to point out is that this only affects compile time, not runtime. We all hate long compiles, but I doubt this is the bottleneck.
from shakespeare.
Related Issues (20)
- Lucius and Cassius `&` not documented
- Lucius Cassius Comment syntax not documented HOT 5
- CSS Math HOT 1
- Hamlet puts <title> to <body> HOT 5
- Julius: async function cannot be parsed HOT 6
- shakespeare escape bug in #\" HOT 2
- [lucius] @supports mixing problem? HOT 4
- Test failure with GHC 9 HOT 6
- Build error with aeson-2 HOT 1
- `$maybe` and `$forall` unsupported in `Text.Shakespeare.Text` HOT 2
- fails to build with aeson-2.0 HOT 5
- Mixins should respect rule order HOT 1
- I18N, allow multiline messages in translation files
- Support lens operators in templates
- Julius arrow function with curly brace body is compiled to expression even if it's not an expression HOT 2
- Surprising behaviour of Scientific arithmetic inside a template HOT 1
- Cannot have two messages with the same parameter name of different types HOT 3
- Inconsistency between `textfile` and `stextfile` HOT 2
- Upgrading to the `LTS-20.26` implies ~100x performance regression for functions using dynamic templates.
- Add "$foreach" statement.
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 shakespeare.