Properly get timestamp position in DiscussionParser

The code was looking at the [0] element for the matched position
of timestamps, while preg_match returns it in the [1] element.

Bug: 53132
Change-Id: Ibfd3f2b86b007f28f73a137defb80276fb830d28
Follows-Up: I6c636b055bcd25760aee848aea71fe4044c7e1be
This commit is contained in:
Yusuke Matsubara 2014-01-19 22:41:22 +09:00 committed by Legoktm
parent f6a1ce84a5
commit 17fa9cadde
2 changed files with 10 additions and 9 deletions

View file

@ -582,7 +582,7 @@ abstract class EchoDiscussionParser {
return false;
}
return $tsMatches[0][0];
return $tsMatches[0][1];
}
/**
@ -627,13 +627,8 @@ abstract class EchoDiscussionParser {
foreach ( $lines as $line ) {
++$lineNumber;
$tsMatches = array();
if ( !preg_match(
"/$timestampRegex$endOfLine/mu",
$line,
$tsMatches,
PREG_OFFSET_CAPTURE
) ) {
$timestampPos = self::getTimestampPosition( $line );
if ( !$timestampPos ) {
// Ignore lines that don't finish with a timestamp
// print "I\tNo timestamp\n";
// print "$line\n";
@ -642,7 +637,7 @@ abstract class EchoDiscussionParser {
// Now that we know we have a timestamp, look for
// the last user link on the line.
$userData = self::getUserFromLine( $line, $tsMatches[0][0] );
$userData = self::getUserFromLine( $line, $timestampPos );
if ( $userData === false ) {
// print "F\t$lineNumber\t$line\n";
continue;

View file

@ -46,6 +46,12 @@ TEXT
$this->assertEquals( 1, $match );
}
public function testGetTimestampPosition() {
$line = 'Hello World. '. self::getExemplarTimestamp();
$pos = EchoDiscussionParser::getTimestampPosition( $line );
$this->assertEquals( 13, $pos );
}
/**
* @dataProvider signingDetectionData
* FIXME some of the app logic is in the test...