You are here

public function PARSEENTRIES::returnArrays in Bibliography Module 7

Same name and namespace in other branches
  1. 5 bibtexParse/PARSEENTRIES.php \PARSEENTRIES::returnArrays()
  2. 6.2 modules/bibtexParse/PARSEENTRIES.php \PARSEENTRIES::returnArrays()
  3. 6 bibtexParse/PARSEENTRIES.php \PARSEENTRIES::returnArrays()
  4. 7.3 plugins/biblio_style/bibtex/PARSEENTRIES.php \PARSEENTRIES::returnArrays()
  5. 7.2 modules/bibtexParse/PARSEENTRIES.php \PARSEENTRIES::returnArrays()

Return arrays of entries etc. to the calling process.

File

modules/bibtexParse/PARSEENTRIES.php, line 549

Class

PARSEENTRIES
// Parse a file $parse = NEW PARSEENTRIES(); $parse->expandMacro = TRUE; // $array = array("RMP" =>"Rev., Mod. Phys."); // $parse->loadStringMacro($array); // $parse->removeDelimit = FALSE; // …

Code

public function returnArrays() {

  // Global $transtab_latex_unicode; // defined in 'transtab_latex_unicode.inc.php'.
  foreach ($this->preamble as $value) {
    preg_match("/.*?[{(](.*)/", $value, $matches);
    $preamble = substr($matches[1], 0, -1);
    $preambles['bibtexPreamble'] = trim($this
      ->removeDelimitersAndExpand(trim($preamble), TRUE));
  }
  if (isset($preambles)) {
    $this->preamble = $preambles;
  }
  if ($this->fieldExtract) {

    // Next lines must take into account strings defined by previously-defined strings.
    $strings = $this->strings;

    // $this->strings is initialized with strings provided by user if they exists
    // it is supposed that there are no substitutions to be made in the user strings, i.e., no #.
    $this->strings = isset($this->userStrings) ? $this->userStrings : array();
    foreach ($strings as $value) {

      // Changed 21/08/2004 G. Gardey
      // 23/08/2004 Mark G. account for comments on same line as @string - count delimiters in string value.
      $value = trim($value);
      $matches = preg_split("/@\\s*string\\s*([{(])/i", $value, 2, PREG_SPLIT_DELIM_CAPTURE);
      $delimit = $matches[1];
      $matches = preg_split("/=/", $matches[2], 2, PREG_SPLIT_DELIM_CAPTURE);

      // Macros are case insensitive.
      $this->strings[strtolower(trim($matches[0]))] = $this
        ->extractStringValue($matches[1]);
    }
  }

  // Changed 21/08/2004 G. Gardey
  // 22/08/2004 Mark Grimshaw - stopped useless looping.
  // removeDelimit and expandMacro have NO effect if !$this->fieldExtract.
  if ($this->removeDelimit || $this->expandMacro && $this->fieldExtract) {
    for ($i = 0; $i < count($this->entries); $i++) {
      foreach ($this->entries[$i] as $key => $value) {

        // 02/05/2005 G. Gardey don't expand macro for bibtexCitation
        // and bibtexEntryType.
        if ($key != 'bibtexCitation' && $key != 'bibtexEntryType') {
          $this->entries[$i][$key] = trim($this
            ->removeDelimitersAndExpand($this->entries[$i][$key]));
        }
      }
    }
  }

  // EZ: Remove this to be able to use the same instance for parsing several files,
  // e.g., parsing a entry file with its associated abbreviation file
  //    if (empty($this->preamble))
  //      $this->preamble = FALSE;
  //    if (empty($this->strings))
  //      $this->strings = FALSE;
  //    if (empty($this->entries))
  //      $this->entries = FALSE;.
  return array(
    $this->preamble,
    $this->strings,
    $this->entries,
    $this->undefinedStrings,
  );
}