Use array instead of Hash to keep the registered filters

1.8.7 compatibility fix

In Ruby 1.8.7, Hash does not preserve insertion ordering as Array does.
This could cause a problem when registering filters which depend on others and
the registration order is important.

So, the @@filters variable was changed to array where the order of the filters is
the same as the insertion order.
This commit is contained in:
Tasos Stathopoulos
2012-07-13 15:32:04 +03:00
parent c5dfcd29b0
commit 8c1bbfec57
2 changed files with 28 additions and 3 deletions

View File

@@ -0,0 +1,25 @@
require 'test_helper'
module MoneyFilter
def money(input)
sprintf(' %d$ ', input)
end
end
module CanadianMoneyFilter
def money(input)
sprintf(' %d$ CAD ', input)
end
end
class HashOrderingTest < Test::Unit::TestCase
include Liquid
def test_global_register_order
Template.register_filter(MoneyFilter)
Template.register_filter(CanadianMoneyFilter)
assert_equal " 1000$ CAD ", Template.parse("{{1000 | money}}").render(nil, nil)
end
end