Пример #1
0
 protected function getSimilarAtoms(DivinerAtom $atom)
 {
     if ($this->symbolReverseMap === null) {
         $rmap = array();
         $smap = $this->atomCache->getSymbolMap();
         foreach ($smap as $nhash => $shash) {
             $rmap[$shash][$nhash] = true;
         }
         $this->symbolReverseMap = $rmap;
     }
     $shash = $atom->getRef()->toHash();
     if (empty($this->symbolReverseMap[$shash])) {
         throw new Exception('Atom has no symbol map entry!');
     }
     $hashes = $this->symbolReverseMap[$shash];
     $atoms = array();
     foreach ($hashes as $hash => $ignored) {
         $atoms[] = $this->getAtomFromNodeHash($hash);
     }
     $atoms = msort($atoms, 'getSortKey');
     return $atoms;
 }
Пример #2
0
 private function getAtomRelativePath(DivinerAtom $atom)
 {
     $ref = $atom->getRef();
     $book = $ref->getBook();
     $type = $ref->getType();
     $context = $ref->getContext();
     $name = $ref->getName();
     $path = array('docs', $book, $type);
     if ($context !== null) {
         $path[] = $context;
     }
     $path[] = $name;
     $index = $this->getAtomSimilarIndex($atom);
     if ($index !== null) {
         $path[] = '@' . $index;
     }
     $path[] = null;
     return implode(DIRECTORY_SEPARATOR, $path);
 }