test/processor_test.rb in sablon-0.0.1 vs test/processor_test.rb in sablon-0.0.2

- old
+ new

@@ -36,51 +36,37 @@ def test_complex_field_replacement result = process(<<-documentxml, {"last_name" => "Zane"}) <w:r><w:t xml:space="preserve">Hello! My Name is </w:t></w:r> <w:r w:rsidR="00BE47B1" w:rsidRPr="00BE47B1"> - <w:rPr> - <w:b/> - </w:rPr> + <w:rPr><w:b/></w:rPr> <w:fldChar w:fldCharType="begin"/> </w:r> <w:r w:rsidR="00BE47B1" w:rsidRPr="00BE47B1"> - <w:rPr> - <w:b/> - </w:rPr> + <w:rPr><w:b/></w:rPr> <w:instrText xml:space="preserve"> MERGEFIELD =last_name \\* MERGEFORMAT </w:instrText> </w:r> <w:r w:rsidR="00BE47B1" w:rsidRPr="00BE47B1"> - <w:rPr> - <w:b/> - </w:rPr> + <w:rPr><w:b/></w:rPr> <w:fldChar w:fldCharType="separate"/> </w:r> <w:r w:rsidR="004B49F0"> - <w:rPr> - <w:b/> - <w:noProof/> - </w:rPr> + <w:rPr><w:b/><w:noProof/></w:rPr> <w:t>«=last_name»</w:t> </w:r> <w:r w:rsidR="00BE47B1" w:rsidRPr="00BE47B1"> - <w:rPr> - <w:b/> - </w:rPr> + <w:rPr><w:b/></w:rPr> <w:fldChar w:fldCharType="end"/> </w:r> <w:r w:rsidR="00BE47B1"><w:t xml:space="preserve">, nice to meet you.</w:t></w:r> documentxml assert_equal "Hello! My Name is Zane , nice to meet you.", text(result) assert_xml_equal <<-document, result <w:r><w:t xml:space="preserve">Hello! My Name is </w:t></w:r> <w:r w:rsidR="004B49F0"> - <w:rPr> - <w:b/> - <w:noProof/> - </w:rPr> + <w:rPr><w:b/><w:noProof/></w:rPr> <w:t>Zane</w:t> </w:r> <w:r w:rsidR="00BE47B1"><w:t xml:space="preserve">, nice to meet you.</w:t></w:r> document end @@ -104,13 +90,11 @@ </w:r> <w:r w:rsidR="003C4780"> <w:fldChar w:fldCharType="separate" /> </w:r> <w:r w:rsidR="00441382"> - <w:rPr> - <w:noProof /> - </w:rPr> + <w:rPr><w:noProof /></w:rPr> <w:t>«=person.first_name»</w:t> </w:r> <w:r w:rsidR="003C4780"> <w:fldChar w:fldCharType="end" /> </w:r> @@ -119,21 +103,18 @@ assert_equal "Hello! My Name is Daniel , nice to meet you.", text(result) assert_xml_equal <<-document, result <w:r><w:t xml:space="preserve">Hello! My Name is </w:t></w:r> <w:r w:rsidR="00441382"> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>Daniel</w:t> </w:r> <w:r w:rsidR="00BE47B1"><w:t xml:space="preserve">, nice to meet you.</w:t></w:r> document end def test_paragraph_block_replacement - item = Struct.new(:index, :label, :rating) result = process(<<-document, {"technologies" => ["Ruby", "Rails"]}) <w:p w14:paraId="6CB29D92" w14:textId="164B70F4" w:rsidR="007F5CDE" w:rsidRDefault="007F5CDE" w:rsidP="007F5CDE"> <w:pPr> <w:pStyle w:val="ListParagraph" /> <w:numPr> @@ -141,13 +122,11 @@ <w:numId w:val="1" /> </w:numPr> </w:pPr> <w:fldSimple w:instr=" MERGEFIELD technologies:each(technology) \\* MERGEFORMAT "> <w:r> - <w:rPr> - <w:noProof /> - </w:rPr> + <w:rPr><w:noProof /></w:rPr> <w:t>«technologies:each(technology)»</w:t> </w:r> </w:fldSimple> </w:p> <w:p w14:paraId="1081E316" w14:textId="3EAB5FDC" w:rsidR="00380EE8" w:rsidRDefault="00380EE8" w:rsidP="007F5CDE"> @@ -172,13 +151,11 @@ </w:r> <w:r> <w:fldChar w:fldCharType="separate" /> </w:r> <w:r w:rsidR="009F01DA"> - <w:rPr> - <w:noProof /> - </w:rPr> + <w:rPr><w:noProof /></w:rPr> <w:t>«=technology»</w:t> </w:r> <w:r> <w:fldChar w:fldCharType="end" /> </w:r> @@ -191,13 +168,11 @@ <w:numId w:val="1" /> </w:numPr> </w:pPr> <w:fldSimple w:instr=" MERGEFIELD technologies:endEach \\* MERGEFORMAT "> <w:r> - <w:rPr> - <w:noProof /> - </w:rPr> + <w:rPr><w:noProof /></w:rPr> <w:t>«technologies:endEach»</w:t> </w:r> </w:fldSimple> </w:p> document @@ -211,13 +186,11 @@ <w:ilvl w:val="0"/> <w:numId w:val="1"/> </w:numPr> </w:pPr> <w:r w:rsidR="009F01DA"> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>Ruby</w:t> </w:r> </w:p><w:p w14:paraId="1081E316" w14:textId="3EAB5FDC" w:rsidR="00380EE8" w:rsidRDefault="00380EE8" w:rsidP="007F5CDE"> <w:pPr> <w:pStyle w:val="ListParagraph"/> @@ -225,19 +198,80 @@ <w:ilvl w:val="0"/> <w:numId w:val="1"/> </w:numPr> </w:pPr> <w:r w:rsidR="009F01DA"> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>Rails</w:t> </w:r> </w:p> document end + def test_paragraph_block_within_table_cell + result = process(<<-document, {"technologies" => ["Puppet", "Chef"]}) + <w:tbl> + <w:tblGrid> + <w:gridCol w:w="2202"/> + </w:tblGrid> + <w:tr w:rsidR="00757DAD"> + <w:tc> + <w:p> + <w:fldSimple w:instr=" MERGEFIELD technologies:each(technology) \\* MERGEFORMAT "> + <w:r w:rsidR="004B49F0"> + <w:rPr><w:noProof/></w:rPr> + <w:t>«technologies:each(technology)»</w:t> + </w:r> + </w:fldSimple> + </w:p> + <w:p> + <w:fldSimple w:instr=" MERGEFIELD =technology \\* MERGEFORMAT "> + <w:r w:rsidR="004B49F0"> + <w:rPr><w:noProof/></w:rPr> + <w:t>«=technology»</w:t> + </w:r> + </w:fldSimple> + </w:p> + <w:p> + <w:fldSimple w:instr=" MERGEFIELD technologies:endEach \\* MERGEFORMAT "> + <w:r w:rsidR="004B49F0"> + <w:rPr><w:noProof/></w:rPr> + <w:t>«technologies:endEach»</w:t> + </w:r> + </w:fldSimple> + </w:p> + </w:tc> + </w:tr> + </w:tbl> + document + + assert_equal "Puppet Chef", text(result) + assert_xml_equal <<-document, result + <w:tbl> + <w:tblGrid> + <w:gridCol w:w="2202"/> + </w:tblGrid> + <w:tr w:rsidR="00757DAD"> + <w:tc> + <w:p> + <w:r w:rsidR="004B49F0"> + <w:rPr><w:noProof/></w:rPr> + <w:t>Puppet</w:t> + </w:r> + </w:p> + <w:p> + <w:r w:rsidR="004B49F0"> + <w:rPr><w:noProof/></w:rPr> + <w:t>Chef</w:t> + </w:r> + </w:p> + </w:tc> + </w:tr> + </w:tbl> + document + end + def test_single_row_table_loop item = Struct.new(:index, :label, :rating) result = process(<<-document, {"items" => [item.new("1.", "Milk", "***"), item.new("2.", "Sugar", "**")]}) <w:tbl> <w:tblPr> @@ -264,13 +298,11 @@ </w:r> <w:r> <w:fldChar w:fldCharType="separate"/> </w:r> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>«items:each(item)»</w:t> </w:r> <w:r> <w:fldChar w:fldCharType="end"/> </w:r> @@ -303,13 +335,11 @@ </w:r> <w:r> <w:fldChar w:fldCharType="separate"/> </w:r> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>«=item.index»</w:t> </w:r> <w:r> <w:fldChar w:fldCharType="end"/> </w:r> @@ -328,13 +358,11 @@ </w:r> <w:r> <w:fldChar w:fldCharType="separate"/> </w:r> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>«=item.label»</w:t> </w:r> <w:r> <w:fldChar w:fldCharType="end"/> </w:r> @@ -353,13 +381,11 @@ </w:r> <w:r> <w:fldChar w:fldCharType="separate"/> </w:r> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>«=item.rating»</w:t> </w:r> <w:r> <w:fldChar w:fldCharType="end"/> </w:r> @@ -380,13 +406,11 @@ </w:r> <w:r> <w:fldChar w:fldCharType="separate"/> </w:r> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>«items:endEach»</w:t> </w:r> <w:r> <w:fldChar w:fldCharType="end"/> </w:r> @@ -425,39 +449,33 @@ <w:tcPr> <w:tcW w:w="2202" w:type="dxa"/> </w:tcPr> <w:p w14:paraId="41ACB3D9" w14:textId="77777777" w:rsidR="00757DAD" w:rsidRDefault="00757DAD" w:rsidP="006333C3"> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>1.</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="4285" w:type="dxa"/> </w:tcPr> <w:p w14:paraId="197C6F31" w14:textId="77777777" w:rsidR="00757DAD" w:rsidRDefault="00757DAD" w:rsidP="006333C3"> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>Milk</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="2029" w:type="dxa"/> </w:tcPr> <w:p w14:paraId="55C258BB" w14:textId="77777777" w:rsidR="00757DAD" w:rsidRDefault="00757DAD" w:rsidP="006333C3"> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>***</w:t> </w:r> </w:p> </w:tc> </w:tr><w:tr w:rsidR="00757DAD" w14:paraId="1BD2E50A" w14:textId="77777777" w:rsidTr="006333C3"> @@ -465,39 +483,33 @@ <w:tcPr> <w:tcW w:w="2202" w:type="dxa"/> </w:tcPr> <w:p w14:paraId="41ACB3D9" w14:textId="77777777" w:rsidR="00757DAD" w:rsidRDefault="00757DAD" w:rsidP="006333C3"> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>2.</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="4285" w:type="dxa"/> </w:tcPr> <w:p w14:paraId="197C6F31" w14:textId="77777777" w:rsidR="00757DAD" w:rsidRDefault="00757DAD" w:rsidP="006333C3"> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>Sugar</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="2029" w:type="dxa"/> </w:tcPr> <w:p w14:paraId="55C258BB" w14:textId="77777777" w:rsidR="00757DAD" w:rsidRDefault="00757DAD" w:rsidP="006333C3"> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>**</w:t> </w:r> </w:p> </w:tc> </w:tr> @@ -519,13 +531,11 @@ <w:shd w:val="clear" w:color="auto" w:fill="auto" /> </w:tcPr> <w:p w14:paraId="7630A6C6" w14:textId="699D0C71" w:rsidR="00F23752" w:rsidRDefault="00F23752" w:rsidP="003F16E3"> <w:fldSimple w:instr=" MERGEFIELD foods:each(food) \\* MERGEFORMAT "> <w:r w:rsidR="00213ACD"> - <w:rPr> - <w:noProof /> - </w:rPr> + <w:rPr><w:noProof /></w:rPr> <w:t>«foods:each(food)»</w:t> </w:r> </w:fldSimple> </w:p> </w:tc> @@ -544,13 +554,11 @@ <w:shd w:val="clear" w:color="auto" w:fill="8DB3E2" w:themeFill="text2" w:themeFillTint="66" /> </w:tcPr> <w:p w14:paraId="3FCF3855" w14:textId="38FA7F3B" w:rsidR="00F23752" w:rsidRDefault="00F23752" w:rsidP="00F23752"> <w:fldSimple w:instr=" MERGEFIELD =food.index \\* MERGEFORMAT "> <w:r w:rsidR="00213ACD"> - <w:rPr> - <w:noProof /> - </w:rPr> + <w:rPr><w:noProof /></w:rPr> <w:t>«=food.index»</w:t> </w:r> </w:fldSimple> </w:p> </w:tc> @@ -596,13 +604,11 @@ <w:shd w:val="clear" w:color="auto" w:fill="auto" /> </w:tcPr> <w:p w14:paraId="3E9FF163" w14:textId="0F37CDFB" w:rsidR="00213ACD" w:rsidRDefault="00213ACD" w:rsidP="003F16E3"> <w:fldSimple w:instr=" MERGEFIELD =food.body \\* MERGEFORMAT "> <w:r> - <w:rPr> - <w:noProof /> - </w:rPr> + <w:rPr><w:noProof /></w:rPr> <w:t>«=food.body»</w:t> </w:r> </w:fldSimple> </w:p> </w:tc> @@ -622,13 +628,11 @@ </w:r> <w:r> <w:fldChar w:fldCharType="separate" /> </w:r> <w:r> - <w:rPr> - <w:noProof /> - </w:rPr> + <w:rPr><w:noProof /></w:rPr> <w:t>«foods:endEach»</w:t> </w:r> <w:r> <w:fldChar w:fldCharType="end" /> </w:r> @@ -652,33 +656,27 @@ document = <<-documentxml <w:r><w:t xml:space="preserve">Anthony</w:t></w:r> <w:p> <w:fldSimple w:instr=" MERGEFIELD middle_name:if \\* MERGEFORMAT "> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>«middle_name:if»</w:t> </w:r> </w:fldSimple> </w:p> <w:p> <w:fldSimple w:instr=" MERGEFIELD =middle_name \\* MERGEFORMAT "> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>«=middle_name»</w:t> </w:r> </w:fldSimple> </w:p> <w:p> <w:fldSimple w:instr=" MERGEFIELD middle_name:endIf \\* MERGEFORMAT "> <w:r> - <w:rPr> - <w:noProof/> - </w:rPr> + <w:rPr><w:noProof/></w:rPr> <w:t>«middle_name:endIf»</w:t> </w:r> </w:fldSimple> </w:p> <w:r><w:t xml:space="preserve">Hall</w:t></w:r> @@ -686,9 +684,38 @@ result = process(document, {"middle_name" => "Michael"}) assert_equal "Anthony Michael Hall", text(result) result = process(document, {"middle_name" => nil}) assert_equal "Anthony Hall", text(result) + end + + def test_conditional_with_predicate + document = <<-documentxml + <w:p> + <w:fldSimple w:instr=" MERGEFIELD body:if(empty?) \\* MERGEFORMAT "> + <w:r> + <w:rPr><w:noProof/></w:rPr> + <w:t>«body:if(empty?)»</w:t> + </w:r> + </w:fldSimple> + </w:p> + <w:p> + <w:t>some content</w:t> + </w:p> + <w:p> + <w:fldSimple w:instr=" MERGEFIELD body:endIf \\* MERGEFORMAT "> + <w:r> + <w:rPr><w:noProof/></w:rPr> + <w:t>«body:endIf»</w:t> + </w:r> + </w:fldSimple> + </w:p> + documentxml + result = process(document, {"body" => ""}) + assert_equal "some content", text(result) + + result = process(document, {"body" => "not empty"}) + assert_equal "", text(result) end private def process(document, context) @processor.process(wrap(document), context).to_xml