lib/faml/attribute_optimizer.rb in faml-0.5.1 vs lib/faml/attribute_optimizer.rb in faml-0.6.0
- old
+ new
@@ -2,19 +2,19 @@
require_relative 'ruby_syntax_checker'
require_relative 'static_hash_parser'
module Faml
class AttributeOptimizer
- def try_optimize(text, static_id, static_class)
+ def try_optimize(old_attributes, new_attributes, static_id, static_class)
parser = StaticHashParser.new
- unless parser.parse("{#{text}}")
- assert_valid_ruby_code!(text)
+ unless parser.parse("{#{new_attributes}#{old_attributes}}")
+ assert_valid_ruby_code!(old_attributes)
return [nil, nil]
end
static_attributes, dynamic_attributes = build_optimized_attributes(parser, static_id, static_class)
- if optimizable?(text, static_attributes, dynamic_attributes)
+ if optimizable?(old_attributes, new_attributes, static_attributes, dynamic_attributes)
[static_attributes, dynamic_attributes]
else
[nil, nil]
end
end
@@ -76,20 +76,22 @@
dynamic_attributes[k] = v
end
dynamic_attributes
end
- def optimizable?(text, static_attributes, dynamic_attributes)
+ def optimizable?(old_attributes, new_attributes, static_attributes, dynamic_attributes)
if static_attributes.nil?
return false
end
if dynamic_attributes.key?('data')
# XXX: Quit optimization...
return false
end
- if text.include?("\n") && !dynamic_attributes.empty?
+ old_newline = old_attributes && old_attributes.include?("\n")
+ new_newline = new_attributes && new_attributes.include?("\n")
+ if (old_newline || new_newline) && !dynamic_attributes.empty?
# XXX: Quit optimization to keep newlines
# https://github.com/eagletmt/faml/issues/18
return false
end