From 584d7371d4a78a0a95d18e87860da8ddea7afb30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Joubert?= Date: Wed, 21 Jun 2023 12:22:29 +0200 Subject: [PATCH] Reduce object allocations by using sort_by! where it is safe --- lib/slim/parser.rb | 4 ++-- lib/slim/smart/parser.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/slim/parser.rb b/lib/slim/parser.rb index ee2f288c..5b73d7be 100644 --- a/lib/slim/parser.rb +++ b/lib/slim/parser.rb @@ -70,9 +70,9 @@ def initialize(opts = {}) @additional_attrs[k] = v[:additional_attrs] end end - keys = Regexp.union @attr_shortcut.keys.sort_by {|k| -k.size } + keys = Regexp.union @attr_shortcut.keys.sort_by! { |k| -k.size } @attr_shortcut_re = /\A(#{keys}+)((?:\p{Word}|-|\/\d+|:(\w|-)+)*)/ - keys = Regexp.union @tag_shortcut.keys.sort_by {|k| -k.size } + keys = Regexp.union @tag_shortcut.keys.sort_by! { |k| -k.size } @tag_re = /\A(?:#{keys}|\*(?=[^\s]+)|(\p{Word}(?:\p{Word}|:|-)*\p{Word}|\p{Word}+))/ keys = Regexp.escape @code_attr_delims.keys.join @code_attr_delims_re = /\A[#{keys}]/ diff --git a/lib/slim/smart/parser.rb b/lib/slim/smart/parser.rb index 5f9d1315..cab9bb1c 100644 --- a/lib/slim/smart/parser.rb +++ b/lib/slim/smart/parser.rb @@ -8,9 +8,9 @@ class Parser < ::Slim::Parser def initialize(opts = {}) super word_re = options[:implicit_text] ? '[_a-z0-9]' : '\p{Word}' - attr_keys = Regexp.union(@attr_shortcut.keys.sort_by {|k| -k.size } ) + attr_keys = Regexp.union(@attr_shortcut.keys.sort_by! { |k| -k.size }) @attr_shortcut_re = /\A(#{attr_keys}+)((?:\p{Word}|-)*)/ - tag_keys = Regexp.union((@tag_shortcut.keys - @attr_shortcut.keys).sort_by {|k| -k.size } ) + tag_keys = Regexp.union((@tag_shortcut.keys - @attr_shortcut.keys).sort_by! { |k| -k.size }) @tag_re = /\A(?:#{attr_keys}(?=-*\p{Word})|#{tag_keys}|\*(?=[^\s]+)|(#{word_re}(?:#{word_re}|:|-)*#{word_re}|#{word_re}+))/ end