Ejemplo n.º 1
0
 public function testGetOpeningUsfm()
 {
     $this->assertEquals('\\id ', Filter_Usfm::getOpeningUsfm('id'));
     $this->assertEquals('\\add ', Filter_Usfm::getOpeningUsfm('add'));
     $this->assertEquals('\\add ', Filter_Usfm::getOpeningUsfm('add', false));
     $this->assertEquals('\\+add ', Filter_Usfm::getOpeningUsfm('add', true));
 }
Ejemplo n.º 2
0
 private function cleanUSFM($usfm)
 {
     // The user may accidentally omit or erase the note caller.
     // The note caller is one character that immediately follows the note opener.
     // E.g.: \f + ...\f*.
     // Check for missing note caller, and if it's not there, add the default "+".
     // Also replace a double space after a note opener.
     foreach ($this->noteOpeners as $noteOpener) {
         $opener = Filter_Usfm::getOpeningUsfm($noteOpener);
         $usfm = str_replace($opener . " ", $opener, $usfm);
         $pos = mb_strpos($usfm, $opener);
         while ($pos !== false) {
             $isClean = true;
             // Check that the character that follows the note opener is a non-space.
             $pos2 = $pos + mb_strlen($opener);
             $character = mb_substr($usfm, $pos2, 1);
             if ($character == " ") {
                 $isClean = false;
             }
             // Check that the following character is not a space.
             $pos2++;
             $character = mb_substr($usfm, $pos2, 1);
             if ($character != " ") {
                 $isClean = false;
             }
             // Fix the note caller is necessary.
             if (!$isClean) {
                 $database_logs = Database_Logs::getInstance();
                 $database_logs->log("Fixing note caller in {$usfm}");
                 $pos2--;
                 $usfm = mb_substr($usfm, 0, $pos2) . "+" . mb_substr($usfm, $pos2);
             }
             // Next iteration.
             $pos = mb_strpos($usfm, $opener, $pos + 5);
         }
     }
     return $usfm;
 }
Ejemplo n.º 3
0
 private function outputAsIs($marker, $isOpeningMarker)
 {
     // Output the marker in monospace font.
     if ($isOpeningMarker) {
         // Add opening marker as it is.
         $this->newParagraph("mono");
         $this->addText(Filter_Usfm::getOpeningUsfm($marker));
     } else {
         // Add closing marker to existing paragraph.
         $this->addText(Filter_Usfm::getClosingUsfm($marker));
     }
 }
Ejemplo n.º 4
0
require_once "../bootstrap/bootstrap.php";
page_access_level(Filter_Roles::TRANSLATOR_LEVEL);
$database_config_user = Database_Config_User::getInstance();
$database_bibles = Database_Bibles::getInstance();
$ipc_focus = Ipc_Focus::getInstance();
$bible = $database_config_user->getTargetXrefBible();
$book = $ipc_focus->getBook();
$chapter = $ipc_focus->getChapter();
$usfm = $database_bibles->getChapter($bible, $book, $chapter);
if (isset($_GET['overwrite'])) {
    $usfm = Filter_Usfm::removeNotes($usfm, array("x"));
    Bible_Logic::storeChapter($bible, $book, $chapter, $usfm);
}
// Count the cross references in this chapter.
$xrefs = Filter_Usfm::extractNotes($usfm, array("x"));
// Count the number of xref openers / closers in this chapter.
$opener = Filter_Usfm::getOpeningUsfm("x");
str_replace($opener, "", $usfm, $openers);
$closer = Filter_Usfm::getClosingUsfm("x");
str_replace($closer, "", $usfm, $closers);
if (empty($xrefs)) {
    Filter_Url::redirect("insert.php");
    die;
}
$header = new Assets_Header(Locale_Translate::_("Cross references"));
$header->run();
$view = new Assets_View(__FILE__);
$view->view->count = count($xrefs);
$view->view->tags = $openers - $closers;
$view->render("clear.php");
Assets_Page::footer();