Commit graph

280 commits

Author SHA1 Message Date
Chris Wong
d8d5af97f8 Span the whole class or ID in duplicate attribute errors 2018-08-12 14:12:59 +12:00
Chris Wong
3847880404 Span the whole attribute in duplicate attribute errors 2018-08-12 14:12:52 +12:00
Chris Wong
5aa0f85ec1 Show errors for a duplicate attribute in source order
* Also disallow multiple IDs
2018-08-12 14:07:31 +12:00
Chris Wong
ff5c0e769f Tweak duplicate attribute diagnostic () 2018-07-29 21:44:50 +12:00
Tom Pridham
8aa7810dfc Disallow dupe attrs () 2018-07-29 21:21:57 +12:00
Chris Wong
de6f654614 Release 0.18.1 2018-07-18 20:03:44 +12:00
Chris Wong
8dbcdab2bf Update to rustc 1.29.0-nightly (1ecf6929d 2018-07-16)
Closes 
2018-07-18 19:41:47 +12:00
Chris Wong
aadc749715 Release 0.18.0 2018-07-15 21:46:16 +12:00
Chris Wong
392279e97c Fix Clippy warning 2018-06-26 19:49:28 +12:00
Chris Wong
a1a0aa0200 Allow omitting the comma on the last match arm 2018-06-22 21:31:08 +12:00
Chris Wong
12282093eb Use diagnostic API everywhere 2018-06-22 21:28:35 +12:00
Chris Wong
41aea5f92c Require braces around element bodies 2018-06-16 21:46:28 +12:00
Chris Wong
b9279f7f3f Add .span() method to derive the span of an AST node 2018-06-16 21:27:57 +12:00
Chris Wong
4b25728efe Add at_span to Let 2018-06-16 20:59:41 +12:00
Chris Wong
0ceb271a50 Add outer_span property to Splice 2018-06-16 20:55:42 +12:00
Chris Wong
bfa15a0081 Rename Block.span to Block.outer_span 2018-06-16 20:49:46 +12:00
Chris Wong
9d56ba0bcb Keep spans for semicolons; change element body to a block 2018-06-09 20:51:34 +12:00
Chris Wong
9763541ca7 Keep the span of the leading @ symbol 2018-06-09 17:59:24 +12:00
Chris Wong
254ac54103 Merge If and Special variants 2018-05-29 19:18:30 +12:00
Chris Wong
67b6fb05e9 Release 0.17.5 2018-05-26 11:57:51 +12:00
Chris Wong
2455de589c Update to rustc 1.27.0-nightly (2f2a11dfc 2018-05-16) 2018-05-17 20:55:29 +12:00
Chris Wong
9d90e94c87
Change macro internals to use an explicit AST () 2018-05-17 20:38:44 +12:00
Chris Wong
7c63fc138a Release 0.17.4 2018-05-02 20:49:17 +12:00
Chris Stadler
e606e64ef2 Enable proc_macro_non_items feature flag 2018-04-28 12:59:24 +12:00
Chris Wong
41f7744fe1 Release 0.17.3 2018-04-21 17:20:42 +12:00
Chris Wong
dd9d892b8d Fix up some minor issues 2018-04-16 20:29:32 +12:00
Coleman McFarland
f75da83a60 Pre-allocate sufficient size for our output String 2018-04-16 01:06:19 -07:00
Coleman McFarland
2d6558c769 Use FromIterator<_> for TokenStream
Also remove conservative_impl_trait feature flag, as this is now a
stable feature.

Refs 
2018-04-16 00:54:32 -07:00
Coleman McFarland
0f453a5568 Refactor to keep up with changes to proc_macro
Instead of a `kind` field containting a `TokenNode` variant, a
TokenTree is now an enum with variants of different types (Literal, Op,
Term, etc). Note that a TokenTree could be a sequence of TokenTrees if it is a
Group variant.

Other notes:

I'm unsure about the set_span call in Builder::emit_if, but I did not want to
throw away the passed in Span.

Parsing relies on destructuring references to the values associated with
TokenTree enum variants

It doesn't seem as easy to compose/chain TokenStreams as it is to
collect a Vec<TokenTree> into a TokenStream. There is probably some
iterator API I could use instead. See `match_arms` and build.rs

Refs 
2018-04-12 14:19:26 -07:00
Chris Wong
62298aec55 Release 0.17.2 2017-11-19 20:12:38 +13:00
Chris Wong
cc833dd624 Update to rustc 1.23.0-nightly (6160040d8 2017-11-18) 2017-11-19 19:55:11 +13:00
Chris Wong
9674865846 Combine .push_str() calls across blocks
This also disallows `@let` in non-block contexts, e.g.

    img src=@let foo = bar; ;

This yields a 20 - 50 ns speedup in benchmarks, as well as reducing code
size by a slight amount.
2017-10-07 14:17:38 +13:00
Chris Wong
594af15242 Remove unnecessary extern crate 2017-08-12 19:44:43 +12:00
Chris Wong
5cd51481c9 Rename Renderer to Builder 2017-08-12 17:41:54 +12:00
Chris Wong
a902c97091 Allow braces in toggled classes 2017-08-12 16:50:54 +12:00
Chris Wong
9487dbc3a7 Move some code around 2017-08-12 16:21:13 +12:00
Chris Wong
080b461f1b Release 0.17.1 2017-08-11 21:15:20 +12:00
Chris Wong
f046b64409 Avoid name collisions when Render trait is already in scope
Closes 
2017-08-11 20:00:10 +12:00
Chris Wong
752c4805e4 Release 0.17.0 2017-08-04 22:22:38 +12:00
Chris Wong
1785071f1b Allow terminating void elements with semicolons (;)
When Rust and HTML syntax differ, Maud tends to side with Rust syntax.
This can be seen with string literals, for example, where we use
backslash escapes instead of HTML entities. Using `;` to terminate void
elements is consistent with this idea.

Moreover, this reduces confusion around the generated code. Maud does
not insert an extra slash into the HTML output (as per the spec) but
the syntax may imply otherwise.

This confusion may have been the cause of a [bug I found in the
wild][1], where the code omitted the trailing slash on an `input`
element. I suspect that this is because the author thought that a
trailing slash in the Maud template would lead to one in the HTML
output. Switching to semicolons would prevent this misconception.

[1]: https://github.com/anowell/quasar/pull/3
2017-08-04 20:58:02 +12:00
Chris Wong
21d19adb13 Add some more comments 2017-07-31 22:25:00 +12:00
Chris Wong
c57d41e1a6 Handle conditions which contain braces 2017-07-31 22:03:50 +12:00
Chris Wong
d3586a28f3 Remove braces from let expressions
Also improve spans by passing more of the input through directly
2017-07-31 21:48:11 +12:00
Chris Wong
3de5f7f3e9 Move lints into their own maud_lints crate 2017-07-30 22:18:26 +12:00
Chris Wong
4f7189375e Avoid using quote! in parser 2017-07-30 13:59:35 +12:00
Chris Wong
7dcc7d7063 Fix Clippy warnings 2017-07-29 20:06:28 +12:00
Chris Wong
2213c0dc32 Move escaping routines into a shared maud_htmlescape crate 2017-07-29 20:03:00 +12:00
Chris Wong
37419d9781 Implement match expressions and remove debugging stuff 2017-07-29 14:33:10 +12:00
Chris Wong
fd7e000cda TokenTreeIter values can be cloned now 2017-07-29 13:24:40 +12:00
Chris Wong
513d7f3d73 Implement for expressions 2017-07-23 14:08:19 +12:00