You are here

function PARSEENTRIES::returnArrays in Bibliography Module 5

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

File

bibtexParse/PARSEENTRIES.php, line 484

Class

PARSEENTRIES

Code

function returnArrays() {
  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,
  );
}