1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-22 06:42:41 +01:00

Make spell check linter patching

Test Plan:
Wrote "Posible" in the linter, let it change to "Possible".
New unit test.

Reviewers: jack, epriestley

Reviewed By: epriestley

CC: aran, Korvin

Differential Revision: https://secure.phabricator.com/D3469
This commit is contained in:
vrana 2012-09-10 16:09:44 -07:00
parent 918eff8ff9
commit 9dd1a87066
2 changed files with 39 additions and 2 deletions

View file

@ -111,6 +111,8 @@ final class ArcanistSpellingLinter extends ArcanistLinter {
if ($next === false) {
return;
}
$original = substr($text, $next, strlen($word));
$replacement = self::fixLetterCase($correct_word, $original);
$this->raiseLintAtOffset(
$next,
$severity,
@ -118,7 +120,9 @@ final class ArcanistSpellingLinter extends ArcanistLinter {
"Possible spelling error. You wrote '%s', but did you mean '%s'?",
$word,
$correct_word
)
),
$original,
$replacement
);
$pos = $next + 1;
}
@ -137,6 +141,8 @@ final class ArcanistSpellingLinter extends ArcanistLinter {
return;
}
foreach ($matches[0] as $match) {
$original = $match[0];
$replacement = self::fixLetterCase($correct_word, $original);
$this->raiseLintAtOffset(
$match[1],
$severity,
@ -144,8 +150,24 @@ final class ArcanistSpellingLinter extends ArcanistLinter {
"Possible spelling error. You wrote '%s', but did you mean '%s'?",
$word,
$correct_word
)
),
$original,
$replacement
);
}
}
public static function fixLetterCase($string, $case) {
if ($case == strtolower($case)) {
return strtolower($string);
}
if ($case == strtoupper($case)) {
return strtoupper($string);
}
if ($case == ucwords(strtolower($case))) {
return ucwords(strtolower($string));
}
return null;
}
}

View file

@ -35,4 +35,19 @@ final class ArcanistSpellingLinterTestCase extends ArcanistLinterTestCase {
$working_copy);
}
public function testFixLetterCase() {
$tests = array(
'tst' => 'test',
'Tst' => 'Test',
'TST' => 'TEST',
'tSt' => null,
);
foreach ($tests as $case => $expect) {
foreach (array('test', 'TEST') as $string) {
$result = ArcanistSpellingLinter::fixLetterCase($string, $case);
$this->assertEqual($expect, $result, $case);
}
}
}
}