Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions lib/liquid/utils.rb
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,12 @@ def self.to_liquid_value(obj)
obj
end

def self.to_s(obj, seen = {})
# Optional first argument so Module#to_s / #inspect keep working when
# tooling (for example SimpleCov) calls these with no arguments.
def self.to_s(obj = (no_object = true
nil), seen = {})
return super() if no_object

case obj
when BigDecimal
obj.to_s("F")
Expand All @@ -113,7 +118,10 @@ def self.to_s(obj, seen = {})
end
end

def self.inspect(obj, seen = {})
def self.inspect(obj = (no_object = true
nil), seen = {})
return super() if no_object

case obj
when Hash
# If the custom hash implementation overrides `#inspect`, use their
Expand Down
23 changes: 23 additions & 0 deletions test/unit/utils_unit_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# frozen_string_literal: true

require 'test_helper'

class UtilsUnitTest < Minitest::Test
def test_inspect_with_no_arguments_uses_module_inspect
assert_equal("Liquid::Utils", Liquid::Utils.inspect)
end

def test_to_s_with_no_arguments_uses_module_to_s
assert_equal("Liquid::Utils", Liquid::Utils.to_s)
end

def test_inspect_still_renders_objects
assert_equal("nil", Liquid::Utils.inspect(nil))
assert_equal("{\"a\"=>1}", Liquid::Utils.inspect({ "a" => 1 }))
end

def test_to_s_still_renders_objects
assert_equal("", Liquid::Utils.to_s(nil))
assert_equal("{\"a\"=>1}", Liquid::Utils.to_s({ "a" => 1 }))
end
end
Loading