This class renders diffs in the Wiki-style "inline" format.
Copyright 2004-2016 Horde LLC (http://www.horde.org/)
See the enclosed file COPYING for license information (LGPL). If you did
not receive this file, see http://www.horde.org/licenses/lgpl21.
public static function generate($fromText, $toText) { if (!is_array($fromText)) { $fromText = preg_split('/\\v/', $fromText); } if (!is_array($toText)) { $toText = preg_split('/\\v/', $toText); } $diff = new \Horde_Text_Diff('auto', [$fromText, $toText]); $renderer = new \Horde_Text_Diff_Renderer_Inline(); $result = $renderer->render($diff); return nl2br(trim($result)); }
public function __construct() { global $database; if (!isset($_GET["id"]) || is_null($_GET["id"])) { return; } $id = intval($_GET["id"]); $result = $database->query("SELECT `url`, `latency`, `last_sha1`, `current_sha1`, `last_header`, `current_header`, `last_body`, `current_body` FROM `sites` WHERE `id`=" . $id . ";"); echo "[" . json_encode($result); if (count($result) != 1) { echo "]"; return; } $sb1 = explode('\\n', $result[0]["last_sha1"] . '\\n\\n' . $result[0]["last_header"] . '\\n\\n' . $result[0]["last_body"]); $sb2 = explode('\\n', $result[0]["current_sha1"] . '\\n\\n' . $result[0]["current_header"] . '\\n\\n' . $result[0]["current_body"]); $diff = new Horde_Text_Diff('auto', array($sb1, $sb2)); $renderer = new Horde_Text_Diff_Renderer_Inline(); $string = $renderer->render($diff); $string = str_replace('&', '&', $string); $string = str_replace(array("\r", "\n"), '<br>', $string); echo ",[{\"data\":" . json_encode($string) . "}]]"; //echo($string); }
$template2 = $db->fetch_array($query); if ($mybb->input['sid2'] == -2) { $sub_tabs['full_edit'] = array('title' => $lang->full_edit, 'link' => "index.php?module=style-templates&action=edit_template&title=" . urlencode($template1['title']) . "&sid=" . $mybb->get_input('sid1', MyBB::INPUT_INT) . "&from=diff_report"); } if ($template1['template'] == $template2['template']) { flash_message($lang->templates_the_same, 'error'); admin_redirect("index.php?module=style-templates&sid=" . $mybb->get_input('sid2', MyBB::INPUT_INT) . $expand_str); } $template1['template'] = explode("\n", $template1['template']); $template2['template'] = explode("\n", $template2['template']); $plugins->run_hooks("admin_style_templates_diff_report_run"); require_once MYBB_ROOT . "inc/3rdparty/diff/Diff.php"; require_once MYBB_ROOT . "inc/3rdparty/diff/Diff/Renderer.php"; require_once MYBB_ROOT . "inc/3rdparty/diff/Diff/Renderer/Inline.php"; $diff = new Horde_Text_Diff('auto', array($template1['template'], $template2['template'])); $renderer = new Horde_Text_Diff_Renderer_Inline(); if ($sid) { $page->add_breadcrumb_item($template_sets[$sid], "index.php?module=style-templates&sid={$sid}{$expand_str}"); } if ($mybb->input['sid2'] == -2) { $page->add_breadcrumb_item($lang->find_updated, "index.php?module=style-templates&action=find_updated"); } $page->add_breadcrumb_item($lang->diff_report . ": " . htmlspecialchars_uni($template1['title']), "index.php?module=style-templates&action=diff_report&title=" . $db->escape_string($mybb->input['title']) . "&from=" . htmlspecialchars_uni($mybb->input['from']) . "&sid1=" . $mybb->get_input('sid1', MyBB::INPUT_INT) . "&sid2=" . $mybb->get_input('sid2', MyBB::INPUT_INT)); $page->output_header($lang->template_sets); $page->output_nav_tabs($sub_tabs, 'diff_report'); $table = new Table(); if ($mybb->input['from']) { $table->construct_header("<ins>" . $lang->master_updated_ins . "</ins><br /><del>" . $lang->master_updated_del . "</del>"); } else { $table->construct_header("<ins>" . $lang->master_updated_del . "</ins><br /><del>" . $lang->master_updated_ins . "</del>"); }
if (!$editlog['eid']) { error($lang->error_no_log); } if ($editlog['pid'] != $pid) { error($lang->error_cannot_compare_other_posts); } $lang->edit_history = $lang->sprintf($lang->edit_history, $post['subject']); $dateline = my_date('relative', $editlog['dateline']); $lang->edit_as_of = $lang->sprintf($lang->edit_as_of, $dateline); require_once MYBB_ROOT . "inc/3rdparty/diff/Diff.php"; require_once MYBB_ROOT . "inc/3rdparty/diff/Diff/Renderer.php"; require_once MYBB_ROOT . "inc/3rdparty/diff/Diff/Renderer/Inline.php"; $message1 = explode("\n", $editlog['originaltext']); $message2 = explode("\n", $post['message']); $diff = new Horde_Text_Diff('auto', array($message1, $message2)); $renderer = new Horde_Text_Diff_Renderer_Inline(); if ($editlog['originaltext'] == $post['message']) { $comparison = $lang->post_same; } else { $comparison = $renderer->render($diff); } eval("\$postcomparison = \"" . $templates->get("edithistory_comparison") . "\";"); output_page($postcomparison); } // Viewing full text if ($mybb->input['action'] == "view") { add_breadcrumb($lang->view_original_text, "edithistory.php?action=view&pid={$pid}"); $query = $db->query("\r\n\t\tSELECT e.*, u.username\r\n\t\tFROM " . TABLE_PREFIX . "edithistory e\r\n\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (e.uid=u.uid)\r\n\t\tWHERE e.eid='" . $mybb->get_input('eid', MyBB::INPUT_INT) . "'\r\n\t"); $edit = $db->fetch_array($query); if (!$edit['eid']) { error($lang->error_no_log);
public function testGithubPullRequest86() { $a = <<<EOA One Two EOA; $b = <<<EOB Ones Twos EOB; $patch = <<<EOPATCH One<ins>s</ins> Two<ins>s</ins> EOPATCH; $diff = new Horde_Text_Diff('Native', array(explode("\n", $a), explode("\n", $b))); $renderer = new Horde_Text_Diff_Renderer_Inline(array('split_characters' => true)); $this->assertEquals($patch, $renderer->render($diff)); }