From 46d5e1128be3deedd6af002b387c6ddb3aa341fb Mon Sep 17 00:00:00 2001 From: Dewayne VanHoozer Date: Sat, 11 Jun 2016 14:38:18 -0500 Subject: [PATCH] added support for symbols as hash keys --- lib/easy_template.rb | 6 +++++- test/test_easy_template.rb | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/easy_template.rb b/lib/easy_template.rb index 42639d1..9abe7fd 100644 --- a/lib/easy_template.rb +++ b/lib/easy_template.rb @@ -5,6 +5,10 @@ module EasyTemplate # variables: (Hash) # the hash containing the values to substitute in place of the keys enclosed by { and }. def self.process(text, variables) - text.gsub(/(\\\{)|((? 'world!'}) + assert_equal 'world!', + EasyTemplate::process('{hello}', {hello: 'world!'}) + end def test_with_static_text_and_substitution assert_equal 'Hello Mr Bowie!', EasyTemplate::process('Hello Mr {last name}!', {'last name' => 'Bowie'}) + assert_equal 'Hello Mr Bowie!', + EasyTemplate::process('Hello Mr {last name}!', {'last name': 'Bowie'}) end def test_with_escaped_text assert_equal 'Hello Mrs {first name} Simone!', EasyTemplate::process('Hello Mrs \{first name} {last name}!', {'first name' => 'Nina', 'last name' => 'Simone'}) + assert_equal 'Hello Mrs {first name} Simone!', + EasyTemplate::process('Hello Mrs \{first name} {last name}!', {'first name': 'Nina', 'last name' => 'Simone'}) + assert_equal 'Hello Mrs {first name} Simone!', + EasyTemplate::process('Hello Mrs \{first name} {last name}!', {'first name': 'Nina', 'last name': 'Simone'}) + end def test_with_escaped_text_at_begin assert_equal '{first name} Simone!', EasyTemplate::process('\{first name} {last name}!', {'first name' => 'Nina', 'last name' => 'Simone'}) + assert_equal '{first name} Simone!', + EasyTemplate::process('\{first name} {last name}!', {'first name' => 'Nina', 'last name': 'Simone'}) end def test_with_escaped_text_everywhere @@ -37,6 +49,11 @@ def test_with_escaped_text_everywhere EasyTemplate::process('\{first nam\{e} \{{last name}\{', {'first name' => 'Nina', 'last name' => 'Simone'}) end + def test_uses_both_strings_and_symbols_as_keys + assert_equal 'MadBomber was here', + EasyTemplate.process('{who} was {where}', {who:'MadBomber', 'where' => 'here'}) + end + def test_fun assert_equal 'Not bad ={D!', EasyTemplate::process('{fun }{{{}}} {test yeah!}', {'fun }{{{}}} {test yeah!' => 'Not bad ={D!'})