- Fix attribute escaping of html_safe string
- Drop Ruby 2.0.0 support
- Ruby 2.0.0 is End of Life http://www.ruby-lang.org/en/news/2016/02/24/support-plan-of-ruby-2-0-0-and-2-1/
- Fix build error when
$CXXFLAGS
is unavailable - Fix StaticHashParser for parser 2.3.0.0
- Improve AttributeBuilder performance
- Replace std::ostringstream with std::string
- Fix compile error in some platforms
- Fix compiler options for old compilers
- Rewrite AttributeBuilder in C++
- It improves performance, memory usage, and readability
- Delete falsey values after merging all attributes
%span(foo=true){foo: false}
now renders<span></span>
, because old attributes have priority even if the value is falsey.- #43
- Fix duplicated attribute in dynamic attribute
%span{foo: 1, 'foo' => 1+1}
now renders<span foo='2'></span>
correctly- #45
- Flatten
id
andclass
attributes
- Remove duplicated class in runtime attribute case
%span.foo{h}
whereh = { class: 'foo bar' }
now renders<span class='bar foo'></span>
.%span.foo{class: 'foo bar'}
renders<span class='bar foo'></span>
since v0.2.12 .
- Fix data-id and data-class attribute
- #39
- It's regression in v0.6.1
- Fix handling duplicated old attributes and new attributes
- #37
%span{class: 1}(class: 2)
now renders<span class='1 2'></span>
.class
andid
are correctly merged.%span{foo: 1}(foo: 2)
now renders<span foo='1'></span>
. Old attributes has priority over new attributes.
- Disable Faml::Helpers by default
- #35
- Set
Faml::Engine.options[:extend_helpers] = true
to enablepreserve
helper method
- Fix id ordering of object reference
- Support object reference syntax
- Fix CLI slow startup
- Fix "end" insertion for
rescue
andensure
cases- It's regression in v0.4.0
- Fix "end" insertion for empty else clause
= #31
- It also requires haml_parser v0.2.0 or above.
- Fix attribute escape on forward slashes
- #30
- It's regression in v0.3.2
- Fix empty class or id rendering
- It's a regression in v0.3.4.
- Ignore falsey elements in class or id array
- For compatibility with haml
%span{class: [1, nil, false, true]}
now renders<span class='1 true'></span>
.
- Support array, rational and complex literal optimization
- Now
%div{class: %w[foo bar], data: { foo: 1i, bar: 2r }}
is compiled into string literal.
- Now
- Remove
Kernel#eval
from compiler - Improve
faml stats
subcommand- Show more detailed attribute information
- Fix several bugs
- Improve
Faml::AttributeBuilder.build
performance- Optimize string conversions
- Fix handling true/false/nil values in data attribute
- Add
stats
subcommand- Currently, it shows AST ratio and element attribute's ratio.
- Fix illegal constant name
- Use
require_relative
if possible- It improves loading performance a little especially when there's long
$LOAD_PATH
by Bundler.
- It improves loading performance a little especially when there's long
- Improve
Faml::AttributeBuilder.build
performance- Call
escape_html
C-API (vmg/houdini) directly. - Avoid
String#gsub
for performance
- Call
- Allow NUL characters in attribute keys
- You should not include NUL characters, of course.
- Improve
Faml::AttributeBuilder.build
performance- Reduce String allocations
- Move Haml parser and AST definition to haml_parser
- https://github.com/eagletmt/haml_parser
- Remove
faml parse
subcommand
- Fix incompatibility to tilt 2.x
- Improve compatibility of tilt filter indentations
- Raise error when ids or classes don't have values
- Check indent size consistency for compatibility with Haml
- Intentionally prohibit indentations with hard tabs
- Fix attribute rendering in non-html format when the value is true
- Fix Faml::Engine constructor to allow user to set options via
Faml::Engine.options
- Remove duplicated class values
- For compatibility
- Add
version
subcommand - Add
--format
option to cli
- Keep code newlines within multiline in HTML-style attribute list
- Keep code newlines within Ruby multiline
- Keep code newlines with multiline
- Disable haml multiline syntax within filter
- Fix
__LINE__
and__FILE__
in attribute lists
- Allow empty silent script body
- For compatibility with haml
- #16
- Fix parse error at multiline in attribute list
- Improve backtrace of compile time errors
- Annotate Faml::Ast with filename and line number (internal)
- Fix error with tilt 1.x.
- Fix dependency on temple
- Improve backtrace when syntax error is raised
- Fix parser when parsing attributes in
{'foo': 'bar'}
form- The syntax was introduced in Ruby 2.2.
- Fix parser when parsing
>
or<
after attribute lists%div{foo: :bar} <br>
was incorrectly parsed as%div{foo: :bar}< br>
.
- Always escape texts in :escape filter
- It was not escaped when used in Rails
preserve
helper returns html_safe string in Rails- For compatibility with haml's Haml::Helpers::XssMods
- Fix attribute rendering when the key is in
:'foo-bar'
form - Provide
preserve
method in view contexts- For compatibility with haml's Haml::Helpers
- Allow double rmnl
- simply ignore the second rmnl
- Rename from fast_haml to faml
- Allow .faml extension
- Fix ruby filter to not generate newlines
- Support markdown filter
- Refactor script parser (internal)
- Fix newline generation with filters
- Support sass, scss and coffee filter
- Fix whitespace removal (
<
and>
) behavior- Internally, new instructions
mknl
andrmnl
are added.
- Internally, new instructions
- Fix attribute rendering with falsey values
- Fix minor newline generation bug with Haml comment
- Fix newline generation around empty lines
- Internal: introduce Ast::Empty and remove LineCounter
- Fix internal compiler error when
>
is used - Fix newline generation at Ast::Element case
- Keep newlines for better backtrace (#4)
- Fix attribute parsing with
%span {foo}
or%span (foo)
cases. - Fix comparison with statically-compilable class attributes like
%span.foo{class: bar}
.
- Initial release