Add a StringSlice class to use in the nodelist.

This commit is contained in:
Dylan Thacker-Smith
2014-02-28 13:16:07 -05:00
parent 03d586aafe
commit cc0276bb97
10 changed files with 193 additions and 12 deletions
+6 -6
View File
@@ -12,34 +12,34 @@ class BlockTest < Test::Unit::TestCase
template = Liquid::Template.parse("{{funk}} ")
assert_equal 2, template.root.nodelist.size
assert_equal Variable, template.root.nodelist[0].class
assert_equal String, template.root.nodelist[1].class
assert_equal StringSlice, template.root.nodelist[1].class
end
def test_variable_end
template = Liquid::Template.parse(" {{funk}}")
assert_equal 2, template.root.nodelist.size
assert_equal String, template.root.nodelist[0].class
assert_equal StringSlice, template.root.nodelist[0].class
assert_equal Variable, template.root.nodelist[1].class
end
def test_variable_middle
template = Liquid::Template.parse(" {{funk}} ")
assert_equal 3, template.root.nodelist.size
assert_equal String, template.root.nodelist[0].class
assert_equal StringSlice, template.root.nodelist[0].class
assert_equal Variable, template.root.nodelist[1].class
assert_equal String, template.root.nodelist[2].class
assert_equal StringSlice, template.root.nodelist[2].class
end
def test_variable_many_embedded_fragments
template = Liquid::Template.parse(" {{funk}} {{so}} {{brother}} ")
assert_equal 7, template.root.nodelist.size
assert_equal [String, Variable, String, Variable, String, Variable, String],
assert_equal [StringSlice, Variable, StringSlice, Variable, StringSlice, Variable, StringSlice],
block_types(template.root.nodelist)
end
def test_with_block
template = Liquid::Template.parse(" {% comment %} {% endcomment %} ")
assert_equal [String, Comment, String], block_types(template.root.nodelist)
assert_equal [StringSlice, Comment, StringSlice], block_types(template.root.nodelist)
assert_equal 3, template.root.nodelist.size
end
+1 -1
View File
@@ -8,7 +8,7 @@ class ParsingQuirksTest < Test::Unit::TestCase
template = Template.parse(text)
assert_equal text, template.render
assert_equal [String], template.root.nodelist.collect {|i| i.class}
assert_equal [StringSlice], template.root.nodelist.collect {|i| i.class}
end
def test_raise_on_single_close_bracet
+34
View File
@@ -0,0 +1,34 @@
require 'test_helper'
class StringSliceTest < Test::Unit::TestCase
def test_new_from_string
assert_equal 'slice', Liquid::StringSlice.new("slice and dice", 0, 5).to_str
assert_equal 'and', Liquid::StringSlice.new("slice and dice", 6, 3).to_str
assert_equal 'dice', Liquid::StringSlice.new("slice and dice", 10, 4).to_str
assert_equal 'slice and dice', Liquid::StringSlice.new("slice and dice", 0, 14).to_str
end
def test_new_from_slice
slice1 = Liquid::StringSlice.new("slice and dice", 0, 14)
slice2 = Liquid::StringSlice.new(slice1, 6, 8)
slice3 = Liquid::StringSlice.new(slice2, 0, 3)
assert_equal "slice and dice", slice1.to_str
assert_equal "and dice", slice2.to_str
assert_equal "and", slice3.to_str
end
def test_slice
slice = Liquid::StringSlice.new("slice and dice", 2, 10)
assert_equal "and", slice.slice(4, 3).to_str
end
def test_length
slice = Liquid::StringSlice.new("slice and dice", 6, 3)
assert_equal 3, slice.length
assert_equal 3, slice.size
end
def test_equal
assert_equal 'and', Liquid::StringSlice.new("slice and dice", 6, 3)
end
end