Ответ 1
Итак, это было какое-то время.
Я действительно решил посмотреть, что другие люди используют и наткнулись на то, что использует Yii (http://www.yiiframework.com).
Они фактически используют модуль PEAR для своих text_diff
, и они используют его в своей новой форме на канале орды. Похоже, что text_diff
теперь является проектом орды, но вы можете так же легко интегрировать его версию в свое приложение, и это то, что по умолчанию делает Yii (он поставляется вместе с версией).
Итак, я немного искал, чтобы узнать, как они его использовали, и как попасть в него, и я наткнулся на:
public function actionDiff()
{
Yii::import('gii.components.TextDiff');
$model=$this->prepare();
if(isset($_GET['id']) && isset($model->files[$_GET['id']]))
{
$file=$model->files[$_GET['id']];
if(!in_array($file->type,array('php', 'txt','js','css')))
$diff=false;
elseif($file->operation===CCodeFile::OP_OVERWRITE)
$diff=TextDiff::compare(file_get_contents($file->path), $file->content);
else
$diff='';
$this->renderPartial('/common/diff',array(
'file'=>$file,
'diff'=>$diff,
));
}
else
throw new CHttpException(404,'Unable to find the code you requested.');
}
В CCodeGenerator
для своего модуля Gii (http://www.yiiframework.com/doc/api/1.1/CCodeGenerator/). Важная часть - это то, где они фактически подключаются к модулю PEAR:
$diff=TextDiff::compare(file_get_contents($file->path), $file->content);
Прочитав содержимое двух файлов, которые выдает вывод diffed
.
Первоначально я не хотел использовать PEAR из-за раздувания, но этот модуль довольно тонкий для полнофункционального text_diff
, поэтому я решил пойти с этим. Не только это, но на данный момент это единственный модуль text_diff
, который действительно работал у меня, поэтому я поддерживаю все лучшее, даже если лучше всего голодны.