diff --git a/lib/fbe/award.rb b/lib/fbe/award.rb index ae6eeb43..041b7ba6 100644 --- a/lib/fbe/award.rb +++ b/lib/fbe/award.rb @@ -315,7 +315,7 @@ def to_p(any) when PTerm any.to_s when Symbol - s = any.to_s + s = any.to_s.dup subs = { 0 => '₀', 1 => '₁', 2 => '₂', 3 => '₃', 4 => '₄', 5 => '₅', 6 => '₆', 7 => '₇', 8 => '₈', 9 => '₉' } s.gsub!(/([a-z]+)([0-9])/) { |_| "#{Regexp.last_match[1]}#{subs[Integer(Regexp.last_match[2], 10)]}" } "_#{s.tr('_', '-')}_" diff --git a/test/fbe/test_award.rb b/test/fbe/test_award.rb index b13c5c3d..6a994d12 100644 --- a/test/fbe/test_award.rb +++ b/test/fbe/test_award.rb @@ -60,6 +60,16 @@ def test_simple ].each { |t| assert_includes(md, t, md) } end + def test_renders_names_without_chilled_string_warnings + before = Warning[:deprecated] + Warning[:deprecated] = true + assert_output(nil, '') do + Fbe::Award.new('(award (let b1 5) (give b1 "for x"))').bylaw.markdown + end + ensure + Warning[:deprecated] = before + end + def test_let_publishes_the_value_of_an_expression md = Fbe::Award.new( '(award (explain "t") (let x (plus 2 3)) (aka (give 1 "for x=${x}") "award ${x} points"))'