Changeset View
Changeset View
Standalone View
Standalone View
scripts/utils/prosediff.php
- This file was added.
Property | Old Value | New Value |
---|---|---|
File Mode | null | 100755 |
#!/usr/bin/env php | |||||
<?php | |||||
require_once dirname(__FILE__).'/../__init_script__.php'; | |||||
$args = new PhutilArgumentParser($argv); | |||||
$args->setTagline(pht('show prose differences')); | |||||
$args->setSynopsis(<<<EOHELP | |||||
**prosediff.php** __old__ __new__ [__options__] | |||||
Diff two prose files. | |||||
EOHELP | |||||
); | |||||
$args->parseStandardArguments(); | |||||
$args->parse( | |||||
array( | |||||
array( | |||||
'name' => 'files', | |||||
'wildcard' => true, | |||||
), | |||||
)); | |||||
$files = $args->getArg('files'); | |||||
if (count($files) !== 2) { | |||||
$args->printHelpAndExit(); | |||||
} | |||||
$old_file = head($files); | |||||
$new_file = last($files); | |||||
$old_data = Filesystem::readFile($old_file); | |||||
$new_data = Filesystem::readFile($new_file); | |||||
$engine = new PhutilProseDifferenceEngine(); | |||||
$prose_diff = $engine->getDiff($old_data, $new_data); | |||||
foreach ($prose_diff->getParts() as $part) { | |||||
switch ($part['type']) { | |||||
case '-': | |||||
echo tsprintf('<bg:red>%B</bg>', $part['text']); | |||||
break; | |||||
case '+': | |||||
echo tsprintf('<bg:green>%B</bg>', $part['text']); | |||||
break; | |||||
case '=': | |||||
echo tsprintf('%B', $part['text']); | |||||
break; | |||||
} | |||||
} |