calliope
calliope copied to clipboard
Evaluate conditions in attributes
Calliope does not seem to support advanced attribute syntax like this:
.field{class: Game.finished?(game) && "finished"}
Calliope will not evaluate any code inside attribute tags, and attempt to add above-mentioned code as a string to the class attribute. When attempting to use string-interpolation instead, Calliope will attempt to read it as AST and choke on it with other errors.
This would be a great feature to have. I have no idea how to add conditional classes to my elements without it.
It is described under 'Attributes' in the original Haml reference guide
Use string interpolation and it should work fine
Sent from my iPhone
On May 25, 2016, at 2:22 PM, Qqwy [email protected] wrote:
Calliope does not seem to support advanced attribute syntax like this:
.field{class: Game.finished?(game) && "finished"}
Calliope will not evaluate any code inside attribute tags, and attempt to add above-mentioned code as a string to the class attribute. When attempting to use string-interpolation instead, Calliope will attempt to read it as AST and choke on it with other errors.
This would be a great feature to have. I have no idea how to add conditional classes to my elements without it.
It is described under 'Attributes' in the original Haml reference guide
— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub
Unfortunately, this is not the case.
If I have the following HAML:
.two.fields.discount_related{class: "#{Subscription.has_discount_period?(@changeset.model) && "disabled"}"}
Some text
Calliope generates the following compile-time error:
(CalliopeException) web/templates/dashboard/subscription/form.html.haml: Invalid attribute 'disabled"' on line number 52`
lib/calliope/parser.ex:180: Calliope.Parser.raise_error/3
lib/calliope/parser.ex:137: Calliope.Parser.merge_attributes/2
lib/calliope/parser.ex:37: Calliope.Parser.parse_line/2
lib/calliope/parser.ex:22: Calliope.Parser.parse_lines/1
lib/calliope/parser.ex:22: Calliope.Parser.parse_lines/1
lib/calliope/parser.ex:18: Calliope.Parser.parse/1
lib/calliope/render.ex:7: Calliope.Render.precompile/1
+1 for this. Would be very handy. I hit the same invalid attribute error.
@Qqwy A workaround that I've found is this:
- discount_class = Subscription.has_discount_period?(@changeset.model) && "disabled"
.two.fields.discount_related{class: "#{discount_class}"}
Some text