85,126c85 < $difflines = explode("\n",$v."\n"); < $in=array(); $out=array(); $dtype=''; < foreach($difflines as $d) { < if ($d>'') { < if ($d[0]=='-' || $d[0]=='\\') continue; < if ($d[0]=='<') { $out[]=substr($d,2); continue; } < if ($d[0]=='>') { $in[]=substr($d,2); continue; } < } < if (preg_match("/^(\\d+)(,(\\d+))?([adc])(\\d+)(,(\\d+))?/", < $dtype,$match)) { < if (@$match[7]>'') { < $lines='lines'; < $count=$match[1].'-'.($match[1]+$match[7]-$match[5]); < } elseif ($match[3]>'') { < $lines='lines'; $count=$match[1].'-'.$match[3]; < } else { $lines='line'; $count=$match[1]; } < if ($match[4]=='a' || $match[4]=='c') { < $txt = str_replace('line',$lines,$DiffDelFmt[$match[4]]); < $FmtV['$DiffLines'] = $count; < echo FmtPageName($txt,$pagename); < if ($DiffShow['source']=='y') < echo "
", < str_replace("\n","
",htmlspecialchars(join("\n",$in))), < "
"; < else echo MarkupToHTML($pagename, < preg_replace('/\\(:.*?:\\)/e',"Keep(htmlspecialchars(PSS('$0')))", join("\n",$in))); < } < if ($match[4]=='d' || $match[4]=='c') { < $txt = str_replace('line',$lines,$DiffAddFmt[$match[4]]); < $FmtV['$DiffLines'] = $count; < echo FmtPageName($txt,$pagename); < if ($DiffShow['source']=='y') < echo "
", < str_replace("\n","
",htmlspecialchars(join("\n",$out))), < "
"; < else echo MarkupToHTML($pagename, < preg_replace('/\\(:.*?:\\)/e',"Keep(htmlspecialchars(PSS('$0')))",join("\n",$out))); < } < echo FmtPageName($DiffEndDelAddFmt,$pagename); < } < $in=array(); $out=array(); $dtype=$d; < } --- > echo RenderDiff($pagename, $v); 143a103,153 > ## Takes a diff string and returns an html rendering > ## for that diff string. > function RenderDiff($pagename, $diff, $restorelink = 1) { > global $FmtV, $DiffDelFmt, $DiffAddFmt, $DiffShow, > $DiffEndDelAddFmt; > > $htmlout = ""; > $difflines = explode("\n",$diff."\n"); > $in=array(); $out=array(); $dtype=''; > foreach($difflines as $d) { > if ($d>'') { > if ($d[0]=='-' || $d[0]=='\\') continue; > if ($d[0]=='<') { $out[]=substr($d,2); continue; } > if ($d[0]=='>') { $in[]=substr($d,2); continue; } > } > if (preg_match("/^(\\d+)(,(\\d+))?([adc])(\\d+)(,(\\d+))?/", > $dtype,$match)) { > if (@$match[7]>'') { > $lines='lines'; > $count=$match[1].'-'.($match[1]+$match[7]-$match[5]); > } elseif ($match[3]>'') { > $lines='lines'; $count=$match[1].'-'.$match[3]; > } else { $lines='line'; $count=$match[1]; } > if ($match[4]=='a' || $match[4]=='c') { > $txt = str_replace('line',$lines,$DiffDelFmt[$match[4]]); > $FmtV['$DiffLines'] = $count; > $htmlout .= FmtPageName($txt,$pagename); > if ($DiffShow['source']=='y') > $htmlout .= "
". > str_replace("\n","
",htmlspecialchars(join("\n",$in))). > "
"; > else $htmlout .= MarkupToHTML($pagename, > preg_replace('/\\(:.*?:\\)/e',"Keep(htmlspecialchars(PSS('$0')))", join("\n",$in))); > } > if ($match[4]=='d' || $match[4]=='c') { > $txt = str_replace('line',$lines,$DiffAddFmt[$match[4]]); > $FmtV['$DiffLines'] = $count; > $htmlout .= FmtPageName($txt,$pagename); > if ($DiffShow['source']=='y') > $htmlout .= "
". > str_replace("\n","
",htmlspecialchars(join("\n",$out))). > "
"; > else $htmlout .= MarkupToHTML($pagename, > preg_replace('/\\(:.*?:\\)/e',"Keep(htmlspecialchars(PSS('$0')))",join("\n",$out))); > } > $htmlout .= FmtPageName($DiffEndDelAddFmt,$pagename); > } > $in=array(); $out=array(); $dtype=$d; > } > return $htmlout; > }