Example #1
0
 public function view()
 {
     $page = new Page(Input::get('p', Config::get('index')), 'name');
     $name = urlencode($page->getName() . '.md');
     header('Content-Type: text/x-markdown; charset="UTF-8"');
     header("Content-Disposition: inline; filename=\"{$name}\"");
     echo $page->getHead()->getData();
     return false;
 }
Example #2
0
 public function testParent()
 {
     $parent_name = 'Name';
     $parent_data = 'ParentData';
     $parent = new Page($parent_name, 'name');
     $parent->update($parent_data);
     $name = 'Name';
     $data = 'ChildData';
     $id = sha1($name);
     (new Page($name, 'name'))->update($data);
     $page = new Page($id);
     $this->assertEquals($parent->getHead()->getId(), $page->getHead()->getParent()->getId());
 }
Example #3
0
 public function convert($src, $page = '')
 {
     $this->pageStuck[$page] = true;
     $src = preg_replace_callback('/((.|\\r|\\n)*?)((```(.|\\r|\\n)*?```)|(`(.|\\r|\\n)*?`)|$)/m', function ($matches) use($page) {
         $src = $matches[1];
         // File Transclusion
         $src = preg_replace_callback('/{{(.*?)}}/', function ($matches) use($page) {
             $name = $matches[1];
             if (!array_key_exists($name, $this->pageStuck)) {
                 $page = new Page($name, 'name');
                 return $this->convert($page->getHead()->getData(), $name);
             } else {
                 return $matches[0];
             }
         }, $src);
         // Abbr link
         $src = preg_replace('/\\[(.*?)\\](?!\\()/', '[$1]($1)', $src);
         $src = preg_replace_callback('/(!?)\\[(.*?)]\\((.*?)( .*?)?\\)/', function ($matches) use($page) {
             if (preg_match('/^(https?)?:\\/\\//', $matches[3])) {
                 return $matches[0];
             } else {
                 if (empty($matches[1])) {
                     $encoded = urlencode($matches[3]);
                     if (count($matches) == 5) {
                         return "[{$matches[2]}](?p={$encoded} {$matches[4]})";
                     } else {
                         return "[{$matches[2]}](?p={$encoded})";
                     }
                 } else {
                     preg_match('/^((.*)\\/)?([^\\/]+)$/', $matches[3], $path);
                     if (strlen($path[2]) == 0) {
                         $page_name = urlencode($page);
                     } else {
                         $page_name = urlencode($path[2]);
                     }
                     $file_name = urlencode($path[3]);
                     if (count($matches) == 5) {
                         return "![{$matches[2]}](?a=file&p={$page_name}&f={$file_name} {$matches[4]})";
                     } else {
                         return "![{$matches[2]}](?a=file&p={$page_name}&f={$file_name})";
                     }
                 }
             }
         }, $src);
         return $src . $matches[3];
     }, $src);
     return MarkdownExtra::defaultTransform($src);
 }