diff --git a/CHANGELOG.md b/CHANGELOG.md index e0683f9..ed2e892 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## master + +* Avoid spurious frozen string literal deprecation warning on Ruby 3.4.0-preview2+ (jeremyevans) + ## 2.4.0 (2024-06-27) * Support commonmarker 1.0+ API (unasuke) (#10) diff --git a/lib/tilt/template.rb b/lib/tilt/template.rb index 3d7283c..c597267 100644 --- a/lib/tilt/template.rb +++ b/lib/tilt/template.rb @@ -83,7 +83,7 @@ def initialize(file=nil, line=nil, options=nil) if @data.respond_to?(:force_encoding) if default_encoding - @data = @data.dup if @data.frozen? + @data = _dup_string_if_frozen(@data) @data.force_encoding(default_encoding) end @@ -267,6 +267,18 @@ def precompiled_postamble(local_keys) private + if RUBY_VERSION >= '2.3' + def _dup_string_if_frozen(string) + +string + end + # :nocov: + else + def _dup_string_if_frozen(string) + string.frozen? ? string.dup : string + end + end + # :nocov: + def process_arg(arg) if arg case @@ -390,8 +402,10 @@ def extract_encoding(script, &block) end def extract_magic_comment(script) - if script.frozen? - script = script.dup + was_frozen = script.frozen? + script = _dup_string_if_frozen(script) + + if was_frozen yield script end