示例#1
0
文件: Dt.php 项目: tokushima/ebi
 /**
  * @automap
  */
 public function index()
 {
     $flow_output_maps = [];
     $map = \ebi\Flow::get_map($this->entry);
     $patterns = $map['patterns'];
     unset($map['patterns']);
     foreach ($patterns as $k => $m) {
         foreach (['deprecated' => false, 'mode' => null, 'summary' => null, 'template' => null] as $i => $d) {
             if (!isset($m[$i])) {
                 $m[$i] = $d;
             }
         }
         if (isset($m['action']) && is_string($m['action'])) {
             list($m['class'], $m['method']) = explode('::', $m['action']);
             if (substr($m['class'], 0, 1) == '\\') {
                 $m['class'] = substr($m['class'], 1);
             }
             $m['class'] = str_replace('\\', '.', $m['class']);
         }
         if (!isset($m['class']) || $m['class'] != $this->self_class) {
             try {
                 $m['error'] = null;
                 $m['url'] = $k;
                 if (isset($m['method'])) {
                     $info = \ebi\Dt\Man::method_info($m['class'], $m['method'], false);
                     if (empty($m['summary'])) {
                         list($summary) = explode(PHP_EOL, $info->document());
                         $m['summary'] = empty($summary) ? null : $summary;
                     }
                     if (!$m['deprecated'] && $info->opt('deprecated')) {
                         $m['deprecated'] = $info->opt('deprecated');
                     }
                 }
             } catch (\Exception $e) {
                 $m['error'] = $e->getMessage();
             }
             foreach ($m as $k => $v) {
                 if (is_array($v) && isset($map[$k]) && !empty($map[$k])) {
                     $m[$k] = array_merge($map[$k], $v);
                 } else {
                     if (!isset($v) && isset($map[$k])) {
                         $m[$k] = $map[$k];
                     }
                 }
             }
             $flow_output_maps[$m['name']] = $m;
         }
     }
     $entry_desc = preg_match('/\\/\\*\\*.+?\\*\\//s', \ebi\Util::file_read($this->entry), $m) ? trim(preg_replace("/^[\\s]*\\*[\\s]{0,1}/m", '', str_replace(['/' . '**', '*' . '/'], '', $m[0]))) : '';
     return ['map_list' => $flow_output_maps, 'description' => $entry_desc];
 }