From a044b4b0ca83beb6bf752c3760dc8d79a0b595ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Goetz?= Date: Thu, 16 Jul 2015 11:08:16 +0200 Subject: [PATCH] Improve tree api --- daux.phar | Bin 705507 -> 705961 bytes libs/Format/Base/MarkdownPage.php | 2 +- libs/Format/HTML/MarkdownPage.php | 2 +- libs/Tree/Content.php | 16 ++++++- libs/Tree/Entry.php | 67 ++++++++++++++++++++---------- 5 files changed, 61 insertions(+), 26 deletions(-) mode change 100644 => 100755 daux.phar diff --git a/daux.phar b/daux.phar old mode 100644 new mode 100755 index d3ed60e6496295f07e71e4a7cb247b4657d74162..8a139665acc66f44626543c9515ca2f522fb5314 GIT binary patch delta 4547 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 R^W|rM6#fHnrG=G+{{>=YlfM7} delta 4327 zcmY*c32@Za8UJrKo6Tl7*-bV#A@{YL%}wrv+$16Q4Y@X(WOI=~3_(!}iYTB&Qu#&~ zaHOPKxhfDmu!U&Uq5>W;Qf+B5Mzo?8m0BE1t?k?Iw{^yy`Ok0Od*6M%w}*DbUELOU z{FqE$Q~eB`keL`4WO0mIrwqmlr!>aRP6dpAa9YZ!kmoa&$zvJE<QVcJ|iRSq7{LV}oN|V$W`wOaTkB6d7te zm)uE`LT1P5m}>wXcUI6Ig%?Xcs({7U6b-!2bE#*1)TNQ}bC*huoqvzes{Lc@8G2P2 z;az53Z5_8vtQog!yrhK2bxQd9k}{7uZz&-;#Wh_wtAg!zY(G1aOY2?X@B!CMCjP`V zopF&0OwFoPUhhz)FwQyfrYf1&2Dfa+ez!!%-EIktXWfjtMiCgh$#y)tG4(-`t7G^u zULC93;)X*zZrOftnyl(DK72@x)SOr6^4d*P%vh%>W8CY&Pc?8a(!G%P2i=<)=iDn8 zH6940#iN?nGamIEz%3qjX{!BKY!oNHV4Pzv1kE3$IGX3_XIdS-+gu@9GPgao$Ce*1RmcO7&@a zO7KPw%-$tT^o%!{|LI-M>wKSOjN5%GnE9DNN$Lzg`zSr?Ve;tMTC@INLL0|i7nD9To%b4(ewIr1cJ($kY>;#+qJegpZAA0Dr z9}*hs5Az26k?=$QWh`Ky2tsA&S3^G~C?p_^5B7?d+BV$uDT&?2 zhX(?O15v@?-uA!T;7LSBt1XZ|7fxm;|8}3l<{-I~POgCyQaEF*u8v z$3^Sjbys=kPcH8YMl-w^oW+9v5e$axkaA|YB(&|HKR4{CIvoXvxX{TEZzg^>1Vd|a zC|n&3MZRZ3k;?D`ynftZVZ3cX57!#u z+D(x|+i`WMh>wvHSw?MQ0~0Aly_~ohbBnWTC-^8)#{@SL z;cZzGn(~n(T#)Z3Icg{w17{!^#{51RO)7~p`SXE?hiEK0h4NE;SXgTcI(bhDs&yd+ z9UhwsT$746m`#On%@U-ha|wF$&=Tz5T7s06ry+%pr9s{m2S%mmu~*NDfxPPe=WD1t z#Xz=nci#M)Mih$9Mzsi7(Ihn9=M<&YYN+x^{$!cZ#yR&*3=d+OIjBM~vW+TfVXX7f!%4uQC zIz@(#y2Rbh%DZ#)^mY!cN)|2i_+Pe`I$B0e_QRlD+zUCmkT#VIYvyyIWl0{=wkZ!0 zJnvZhEJbs4FGa+EyR?n1RON%OE5Den84&4R6}xyN)kOzWQoe>h%*RB#nGXR41rRV< zfT?d5)&Kf|z{9jZ0}QT(AuQQgh=Pe1O`ZC9!949t1HpkpFD5u$h~zpK;T|t9LO}Nx z!Sv6IFhh;S2;}|6X6E~}7$#?xpfV>*uwE#sVHd_kK+|qt>=$t}khaW&#!JzUJ4z9= z`BF5lM%*{vpPCNSeJyrEFS=)$J8O7&86;nEU{V=g5Z?-ht=oSyL}9gwbfH{Hua_Y> z3uVY@b~&!~-Q~E}qeKdyK5}gfO_!%ra)m!juc`pi;R+N$zaX-Xz48z(nC)h`u;ilU zflO>(jy#=S4%>B=7zQJi5OS^(K`~Wfe|uFs2cbs<;Z2v=WT82c=BiW_Q;i@LRGXQg zS7^<3zx^NKOD0{d4q$Ent;VD>*EqD+K&pRj8#8?G5?Cz}Z#r)J$QUh-9;Rg8kRs)#*8xi3< z8WD#xjS%kMgfiSB%CPt5j}`oY`gf@>un5Nau z1ytGW$A{MDZpOEoJJ?ZIQM5CsVruC|cOre<;m$sey`8H(roi>#8V6I=EODq?$ynbhRo5N@&?dwvJ)r=?0FU+X0KRIwoH!k0)ZfLmHjre6+s#sWq z$n&Y4N1o#f?C4R^YZgqC4=o71u?KJ4UyEMVe{gFZUFb2=p&pd#n?1;ue=npxA)GxE zJb#wLdJ|}0FCH9oMg&A}PN+yZr)7 z{bAUPUKql3x-f+6%xf3|I)>5R`-k(`ypM)8>W3cE(Ld70kCtmXmhgt>Rk>Iv)W ziM6qj_O1A(Vz16JF&JxjuI<%l+Z0TG(lbc*O`c|5&&W`3Xe4jhJlka3$TsI~yKhjY zKlwtitle, file_get_contents($file->getPath())); + $page = new static($file->getTitle(), $file->getContent()); $page->setFile($file); $page->setParams($params); diff --git a/libs/Format/HTML/MarkdownPage.php b/libs/Format/HTML/MarkdownPage.php index 1cc76c1..f96608e 100644 --- a/libs/Format/HTML/MarkdownPage.php +++ b/libs/Format/HTML/MarkdownPage.php @@ -56,7 +56,7 @@ class MarkdownPage extends \Todaymade\Daux\Format\Base\MarkdownPage $entry_page['View Documentation'] = $params['base_page'] . $params['entry_page']->getUrl(); } } elseif ($params['file_uri'] === 'index') { - $entry_page[$params['entry_page']->title] = $params['base_page'] . $params['entry_page']->getUrl(); + $entry_page[$params['entry_page']->getTitle()] = $params['base_page'] . $params['entry_page']->getUrl(); } $page = [ diff --git a/libs/Tree/Content.php b/libs/Tree/Content.php index 466adf9..b28ad53 100644 --- a/libs/Tree/Content.php +++ b/libs/Tree/Content.php @@ -4,7 +4,7 @@ use Todaymade\Daux\DauxHelper; class Content extends Entry { - public $title; + protected $content; public function __construct($path = '', $parents = array()) { @@ -12,6 +12,20 @@ class Content extends Entry $this->value = $this->uri; } + + public function getContent() + { + if (!$this->content) { + $this->content = file_get_contents($this->getPath()); + } + + return $this->content; + } + + public function setContent($content) + { + $this->content = $content; + } protected function getFilename($file) { diff --git a/libs/Tree/Entry.php b/libs/Tree/Entry.php index aeec4de..cf47ed5 100644 --- a/libs/Tree/Entry.php +++ b/libs/Tree/Entry.php @@ -15,40 +15,28 @@ abstract class Entry public function __construct($path = '', $parents = array()) { - if (!isset($path) || $path == '' || !file_exists($path)) { - return; - } - $this->local_path = $path; - $this->parents = $parents; - $this->last_modified = filemtime($path); - $this->name = DauxHelper::pathinfo($path)['filename']; - $this->title = $this->getTitleInternal($this->name); - $this->uri = $this->getUrlInternal($this->getFilename($path)); - $this->index_page = false; + $this->setPath($path); + $this->setParents($parents); } + public function getName() { return $this->name; } - - public function setUri($uri) - { - $this->uri = $uri; - } - + + public function setName($name) + { + $this->name = $name; + } + public function getUri() { return $this->uri; } - public function getUrl() + public function setUri($uri) { - $url = ''; - foreach ($this->parents as $node) { - $url .= $node->uri . '/'; - } - $url .= $this->uri; - return $url; + $this->uri = $uri; } public function getIndexPage() @@ -101,16 +89,39 @@ abstract class Entry { return $this->title; } + + public function setTitle($title) + { + $this->title = $title; + } public function getParents() { return $this->parents; } + + public function setParents($parents) + { + $this->parents = $parents; + } public function getPath() { return $this->local_path; } + + public function setPath($path) + { + if (!isset($path) || $path == '' || !file_exists($path)) { + return; + } + $this->local_path = $path; + $this->last_modified = filemtime($path); + $this->name = DauxHelper::pathinfo($path)['filename']; + $this->title = $this->getTitleInternal($this->name); + $this->uri = $this->getUrlInternal($this->getFilename($path)); + $this->index_page = false; + } public function write($content) { @@ -121,6 +132,16 @@ abstract class Entry file_put_contents($this->local_path, $content); return true; } + + public function getUrl() + { + $url = ''; + foreach ($this->parents as $node) { + $url .= $node->uri . '/'; + } + $url .= $this->uri; + return $url; + } protected function getFilename($file) {