Text between: Difference between revisions
m
→{{header|Phix}}: added syntax colouring the hard way
m (→{{header|REXX}}: added a comment.) |
m (→{{header|Phix}}: added syntax colouring the hard way) |
||
Line 1,850:
=={{header|Phix}}==
<!--<lang Phix>-->
<span style="color: #008080;">function</span> <span style="color: #000000;">text_between</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">text</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">start_delimiter</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">end_delimiter</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">start_delimiter</span><span style="color: #0000FF;">!=</span><span style="color: #008000;">"start"</span> <span style="color: #008080;">then</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">match</span><span style="color: #0000FF;">(</span><span style="color: #000000;">start_delimiter</span><span style="color: #0000FF;">,</span><span style="color: #000000;">text</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #008000;">""</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #000000;">text</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">text</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">+</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">start_delimiter</span><span style="color: #0000FF;">)..$]</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">end_delimiter</span><span style="color: #0000FF;">!=</span><span style="color: #008000;">"end"</span> <span style="color: #008080;">then</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">match</span><span style="color: #0000FF;">(</span><span style="color: #000000;">end_delimiter</span><span style="color: #0000FF;">,</span><span style="color: #000000;">text</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">text</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">text</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..</span><span style="color: #000000;">k</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">text</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">constant</span> <span style="color: #000000;">tests</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"Hello Rosetta Code world"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Hello "</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" world"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Rosetta Code"</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"Hello Rosetta Code world"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"start"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" world"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Hello Rosetta Code"</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"Hello Rosetta Code world"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Hello "</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"end"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Rosetta Code world"</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"</div><div style=\"french\">bonjour</div>"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"<div style=\"french\">"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"</div>"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"bonjour"</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"<text>Hello <span>Rosetta Code</span> world</text><table style=\"myTable\">"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"<text>"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"<table>"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Hello <span>Rosetta Code</span> world</text><table style=\"myTable\">"</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"<table style=\"myTable\"><tr><td>hello world</td></tr></table>"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"<table>"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"</table>"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">""</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"The quick brown fox jumps over the lazy other fox"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"quick "</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" fox"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"brown"</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"One fish two fish red fish blue fish"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"fish "</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" red"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"two fish"</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"FooBarBazFooBuxQuux"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Foo"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Foo"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"BarBaz"</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"Hello Rosetta Code world"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"start"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"end"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Hello Rosetta Code world"</span><span style="color: #0000FF;">}}</span>
<span style="color: #008080;">constant</span> <span style="color: #000000;">fmt</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"""
Expect: "%s" ***ERROR***
"""</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tests</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
<span style="color: #004080;">string</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">text</span><span style="color: #0000FF;">,</span><span style="color: #000000;">start_delimiter</span><span style="color: #0000FF;">,</span><span style="color: #000000;">end_delimiter</span><span style="color: #0000FF;">,</span><span style="color: #000000;">expected</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">tests</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">],</span>
<span style="color: #000000;">actual</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">text_between</span><span style="color: #0000FF;">(</span><span style="color: #000000;">text</span><span style="color: #0000FF;">,</span><span style="color: #000000;">start_delimiter</span><span style="color: #0000FF;">,</span><span style="color: #000000;">end_delimiter</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">actual</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">expected</span> <span style="color: #008080;">then</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fmt</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">text</span><span style="color: #0000FF;">,</span><span style="color: #000000;">start_delimiter</span><span style="color: #0000FF;">,</span><span style="color: #000000;">end_delimiter</span><span style="color: #0000FF;">,</span><span style="color: #000000;">actual</span><span style="color: #0000FF;">,</span><span style="color: #000000;">expected</span><span style="color: #0000FF;">})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end for</lang>▼
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
{{out}}
All tests pass, so no output.
|