public function testSetElementsValues()
 {
     $element2 = new ChatPost();
     $element2->setTitle('chat1');
     $element2->setChats(array(array('name' => 'x1', 'label' => 'lab1'), array('name' => 'x2', 'label' => 'lab2')));
     $element1 = new ChatBlockElement();
     $element1->setContent($element2);
     $subElement = new VariableElement();
     $subElement->setName('title');
     $element1->addChild($subElement);
     $subElement = new LinesBlockElement();
     $subsubElement = new VariableElement();
     $subsubElement->setName('label');
     $subElement->addChild($subsubElement);
     $subsubElement = new VariableElement();
     $subsubElement->setName('line');
     $subElement->addChild($subsubElement);
     $subsubElement = new VariableElement();
     $subsubElement->setName('alt');
     $subElement->addChild($subsubElement);
     $subsubElement = new VariableElement();
     $subsubElement->setName('name');
     $subElement->addChild($subsubElement);
     $subsubElement = new VariableElement();
     $subsubElement->setName('usernumber');
     $subElement->addChild($subsubElement);
     $subsubElement = new LabelBlockElement();
     $subElement->addChild($subsubElement);
     $element1->addChild($subElement);
     $element1->setElementsValues();
     $html = $element1->render();
     $this->assertEquals('chat1lab1oddx11lab2evenx22', $html);
 }
 public function testSetElementsValues()
 {
     $element2 = new LinkPost();
     $element2->setUrl('url1');
     $element2->setName('name1');
     $element2->setTarget('target1');
     $element2->setDescription('descr1');
     $element1 = new LinkBlockElement();
     $element1->setContent($element2);
     $subElement = new VariableElement();
     $subElement->setName('url');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('name');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('target');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('description');
     $element1->addChild($subElement);
     $subElement = new DescriptionBlockElement();
     $element1->addChild($subElement);
     $html = $element1->render();
     $this->assertEquals('url1name1target1descr1', $html);
 }
 public function testSetElementsValues2()
 {
     $element2 = new PhotoPost();
     $element2->setPermalink('perm1');
     $element2->setUrl('url1');
     $element2->setAlt('alt1');
     $element2->setCaption('cap1');
     $element1 = new PhotoBlockElement();
     $element1->setContent($element2);
     $subElement = new VariableElement();
     $subElement->setName('photourl-500');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('photoalt');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('linkurl');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('caption');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('linkopentag');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('linkclosetag');
     $element1->addChild($subElement);
     $subElement = new LinkUrlBlockElement();
     $element1->addChild($subElement);
     $subElement = new CaptionBlockElement();
     $element1->addChild($subElement);
     $html = $element1->render();
     $this->assertEquals('url1alt1perm1cap1<a href="perm1"></a>', $html);
 }
 public function testRender()
 {
     $element = new VariableElement();
     $element->setContent('cont1');
     $html = $element->render();
     $this->assertEquals('cont1', $html);
 }
 public function testRender()
 {
     $element1 = new PagesBlockElement();
     $element1->setContent(array(array('label' => 'l1', 'url' => 'u1'), array('label' => 'l2', 'url' => 'u2')));
     $varLabel = new VariableElement();
     $varLabel->setName('label');
     $varUrl = new VariableElement();
     $varUrl->setName('url');
     $element1->addChild($varLabel);
     $element1->addChild($varUrl);
     $html = $element1->render();
     $this->assertEquals('l1u1l2u2', $html);
 }
 public function testRender()
 {
     $element1 = new TagsBlockElement();
     $element1->setContent(array('tag1', 'tag_2'));
     $varTag = new VariableElement();
     $varTag->setName('tag');
     $varUrl = new VariableElement();
     $varUrl->setName('tagurl');
     $element1->addChild($varTag);
     $element1->addChild($varUrl);
     $html = $element1->render();
     $this->assertEquals('tag1?type=tag&id=tag1tag_2?type=tag&id=tag_2', $html);
 }
 public function testSetElementsValues()
 {
     $element2 = new TextPost();
     $element2->setBody('body1');
     $element1 = new TextBlockElement();
     $element1->setContent($element2);
     $subElement = new VariableElement();
     $subElement->setName('title');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('body');
     $element1->addChild($subElement);
     $subElement = new TitleBlockElement();
     $element1->addChild($subElement);
     $html = $element1->render();
     $this->assertEquals('body1', $html);
 }
 public function testSetElementsValues()
 {
     $photos = array();
     $element2 = new PhotosetPost();
     $element2->setCaption('capt1');
     $element2->setPhotos($photos);
     $element1 = new PhotosetBlockElement();
     $element1->setContent($element2);
     $subElement = new VariableElement();
     $subElement->setName('caption');
     $element1->addChild($subElement);
     $subElement = new CaptionBlockElement();
     $element1->addChild($subElement);
     $subElement = new PhotosBlockElement();
     $element1->addChild($subElement);
     $html = $element1->render();
     $this->assertEquals('capt1', $html);
 }
 public function testSetElementsValues()
 {
     $element2 = new AnswerPost();
     $element2->setAsker('asker1');
     $element2->setQuestion('quest1');
     $element2->setAnswer('answer1');
     $element1 = new AnswerBlockElement();
     $element1->setContent($element2);
     $subElement1 = new VariableElement();
     $subElement1->setName('asker');
     $element1->addChild($subElement1);
     $subElement2 = new VariableElement();
     $subElement2->setName('question');
     $element1->addChild($subElement2);
     $subElement3 = new VariableElement();
     $subElement3->setName('answer');
     $element1->addChild($subElement3);
     $element1->setElementsValues();
     $html = $element1->render();
     $this->assertEquals('asker1quest1answer1', $html);
 }
 public function testSetElementsValues()
 {
     $element2 = new QuotePost();
     $element2->setQuote('quo1');
     $element2->setSource('source1');
     $element2->setLength('len1');
     $element1 = new QuoteBlockElement();
     $element1->setContent($element2);
     $subElement = new VariableElement();
     $subElement->setName('quote');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('source');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('length');
     $element1->addChild($subElement);
     $subElement = new SourceBlockElement();
     $element1->addChild($subElement);
     $html = $element1->render();
     $this->assertEquals('quo1source1len1', $html);
 }
 public function testSetElementsValues()
 {
     $element1 = new LineBlockElement();
     $element1->setContent(array('label' => 'lab1', 'line' => 'line1', 'alt' => 'alt1', 'name' => 'name1', 'usernumber' => 'usernumber1'));
     $subElement = new VariableElement();
     $subElement->setName('label');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('line');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('alt');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('name');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('usernumber');
     $element1->addChild($subElement);
     $subElement = new LabelBlockElement();
     $element1->addChild($subElement);
     $html = $element1->render();
     $this->assertEquals('lab1line1alt1name1', $html);
 }
 public function testRender()
 {
     $element1 = new LinesBlockElement();
     $element1->setContent(array(array('name' => 'x1', 'label' => 'lab1'), array('name' => 'x2', 'label' => 'lab2')));
     $subElement = new VariableElement();
     $subElement->setName('label');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('line');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('alt');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('name');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('usernumber');
     $element1->addChild($subElement);
     $subElement = new LabelBlockElement();
     $element1->addChild($subElement);
     $html = $element1->render();
     $this->assertEquals('lab1oddx11lab2evenx22', $html);
 }
 public function testRender()
 {
     $photos = array();
     $subElement = new PhotoPost();
     $subElement->setUrl('url1');
     $subElement->setAlt('alt1');
     $subElement->setLinkUrl('url2');
     $subElement->setCaption('cap1');
     $photos[] = $subElement;
     $element1 = new PhotosBlockElement();
     $element1->setContent($photos);
     $subElement = new VariableElement();
     $subElement->setName('photourl-500');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('photoalt');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('linkurl');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('caption');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('linkopentag');
     $element1->addChild($subElement);
     $subElement = new VariableElement();
     $subElement->setName('linkclosetag');
     $element1->addChild($subElement);
     $subElement = new LinkUrlBlockElement();
     $element1->addChild($subElement);
     $subElement = new CaptionBlockElement();
     $element1->addChild($subElement);
     $html = $element1->render();
     $this->assertEquals('url1alt1url2cap1<a href="url2"></a>', $html);
 }
 public function testRender()
 {
     $tz = new DateTimeZone('Europe/Vienna');
     $dt = new DateTime('2014-11-19 19:16:38', $tz);
     $posts = array();
     $post = new TextPost();
     $post->setPermalink('url1');
     $post->setIsPermalinkPage(true);
     $post->setDateTime($dt, $tz);
     $post->setNotes(array('node1', 'node2'));
     $post->setTags(array('tag1', 'tag2'));
     $post->setPostId(1);
     $post->setTitle('text1.title');
     $post->setBody('text1.body');
     $posts[] = $post;
     $post = new LinkPost();
     $post->setPermalink('url2');
     $post->setDateTime($dt, $tz);
     $post->setNotes(array());
     $post->setTags(array());
     $post->setPostId(2);
     $post->setTitle('text2.title');
     $post->setUrl('text2.url');
     $post->setName('text2.name');
     $post->setTarget('text2.target');
     $post->setDescription('text2.descr');
     $posts[] = $post;
     $post = new PhotoPost();
     $post->setPermalink('url3');
     $post->setDateTime($dt, $tz);
     $post->setNotes(array());
     $post->setTags(array());
     $post->setPostId(3);
     $post->setTitle('text3.title');
     $posts[] = $post;
     $post = new PhotosetPost();
     $post->setPermalink('url4');
     $post->setDateTime($dt, $tz);
     $post->setNotes(array());
     $post->setTags(array());
     $post->setPostId(4);
     $post->setTitle('text4.title');
     $posts[] = $post;
     $post = new QuotePost();
     $post->setPermalink('url5');
     $post->setDateTime($dt, $tz);
     $post->setNotes(array());
     $post->setTags(array());
     $post->setPostId(5);
     $post->setTitle('text5.title');
     $posts[] = $post;
     $post = new ChatPost();
     $post->setPermalink('url6');
     $post->setDateTime($dt, $tz);
     $post->setNotes(array());
     $post->setTags(array());
     $post->setPostId(6);
     $post->setTitle('text6.title');
     $posts[] = $post;
     $post = new AnswerPost();
     $post->setPermalink('url7');
     $post->setDateTime($dt, $tz);
     $post->setNotes(array());
     $post->setTags(array());
     $post->setPostId(7);
     $post->setTitle('text7.title');
     $posts[] = $post;
     $blocks = array();
     $blocks[] = new TextBlockElement();
     $blocks[] = new LinkBlockElement();
     $blocks[] = new PhotoBlockElement();
     $blocks[] = new PhotosetBlockElement();
     $blocks[] = new QuoteBlockElement();
     $blocks[] = new ChatBlockElement();
     $blocks[] = new AnswerBlockElement();
     $blocks[] = new DateBlockElement();
     $blocks[] = new PostNotesBlockElement();
     $blocks[] = new NoteCountBlockElement();
     $blocks[] = new HasTagsBlockElement();
     $blocks[] = new TagsBlockElement();
     $blocks[] = new TitleBlockElement();
     $blocks[] = new HtmlElement();
     $blocks[] = new IndexPageBlockElement();
     $blocks[] = new PermalinkPageBlockElement();
     $varElement = new VariableElement();
     $varElement->setName('permalink');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('dayofmonth');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('dayofmonthwithzero');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('dayofweek');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('shortdayofweek');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('dayofweeknumber');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('dayofmonthsuffix');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('dayofyear');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('weekofyear');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('month');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('shortmonth');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('monthnumber');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('monthnumberwithzero');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('year');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('shortyear');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('ampm');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('capitalampm');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('12hour');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('24hour');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('12hourwithzero');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('24hourwithzero');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('minutes');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('seconds');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('timestamp');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('postid');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('likebutton');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('reblogbutton');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('postnotes');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('notecount');
     $blocks[] = $varElement;
     $varElement = new VariableElement();
     $varElement->setName('notecountwithlabel');
     $blocks[] = $varElement;
     $element1 = new PostsBlockElement();
     $element1->setContent($posts);
     $element1->setChildren($blocks);
     $html = $element1->render();
     $expected = '';
     $expected .= 'url11919WednesdayWed3th32247NovemberNov1111201414pmPM7190719163814164209981<div ';
     $expected .= 'class="like_button" data-post-id="1" id="like_button_1"><iframe id="like_iframe_';
     $expected .= '1" src="http://assets.tumblr.com/assets/html/like_iframe.html?_v=2#name=thefox21';
     $expected .= '&amp;post_id=1&rk=x9D9S9kC" scrolling="no" width="20" height="20" frameborder="0';
     $expected .= '" class="like_toggle" allowTransparency="true"></iframe></div><a href="" class="';
     $expected .= 'reblog_button"style="display: block;width:20px;height:20px;"><svg width="100%" h';
     $expected .= 'eight="100%" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg" xmlns:xlink=';
     $expected .= '"http://www.w3.org/1999/xlink" fill="#ccc"><path d="M5.01092527,5.99908429 L16.0';
     $expected .= '088498,5.99908429 L16.136,9.508 L20.836,4.752 L16.136,0.083 L16.1360004,3.011108';
     $expected .= '45 L2.09985349,3.01110845 C1.50585349,3.01110845 0.979248041,3.44726568 0.979248';
     $expected .= '041,4.45007306 L0.979248041,10.9999998 L3.98376463,8.30993634 L3.98376463,6.8980';
     $expected .= '1007 C3.98376463,6.20867902 4.71892527,5.99908429 5.01092527,5.99908429 Z"></pat';
     $expected .= 'h><path d="M17.1420002,13.2800293 C17.1420002,13.5720293 17.022957,14.0490723 16';
     $expected .= '.730957,14.0490723 L4.92919922,14.0490723 L4.92919922,11 L0.5,15.806 L4.92919922';
     $expected .= ',20.5103758 L5.00469971,16.9990234 L18.9700928,16.9990234 C19.5640928,16.9990234';
     $expected .= ' 19.9453125,16.4010001 19.9453125,15.8060001 L19.9453125,9.5324707 L17.142,12.20';
     $expected .= '3"></path></svg></a><ol class="notes"><!-- START NOTES --><li class="note reblog';
     $expected .= ' tumblelog_thefox21 original_post without_commentary"><a rel="nofollow" class="a';
     $expected .= 'vatar_frame" target="_blank" href="http://blog.fox21.at/" title="thefox21"><img ';
     $expected .= 'src="http://37.media.tumblr.com/avatar_3c795f47b134_16.png" class="avatar " alt=';
     $expected .= '"" /></a><span class="action" data-post-url="http://blog.fox21.at/post/138351482';
     $expected .= '95/hello-world">node1<div class="clear"></div></li><li class="note reblog tumble';
     $expected .= 'log_thefox21 original_post without_commentary"><a rel="nofollow" class="avatar_f';
     $expected .= 'rame" target="_blank" href="http://blog.fox21.at/" title="thefox21"><img src="ht';
     $expected .= 'tp://37.media.tumblr.com/avatar_3c795f47b134_16.png" class="avatar " alt="" /></';
     $expected .= 'a><span class="action" data-post-url="http://blog.fox21.at/post/13835148295/hell';
     $expected .= 'o-world">node2</span><div class="clear"></div></li><!-- END NOTES --></ol>22 not';
     $expected .= 'esurl21919WednesdayWed3th32247NovemberNov1111201414pmPM7190719163814164209982<di';
     $expected .= 'v class="like_button" data-post-id="1" id="like_button_1"><iframe id="like_ifram';
     $expected .= 'e_1" src="http://assets.tumblr.com/assets/html/like_iframe.html?_v=2#name=thefox';
     $expected .= '21&amp;post_id=1&rk=x9D9S9kC" scrolling="no" width="20" height="20" frameborder=';
     $expected .= '"0" class="like_toggle" allowTransparency="true"></iframe></div><a href="" class';
     $expected .= '="reblog_button"style="display: block;width:20px;height:20px;"><svg width="100%"';
     $expected .= ' height="100%" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg" xmlns:xlin';
     $expected .= 'k="http://www.w3.org/1999/xlink" fill="#ccc"><path d="M5.01092527,5.99908429 L16';
     $expected .= '.0088498,5.99908429 L16.136,9.508 L20.836,4.752 L16.136,0.083 L16.1360004,3.0111';
     $expected .= '0845 L2.09985349,3.01110845 C1.50585349,3.01110845 0.979248041,3.44726568 0.9792';
     $expected .= '48041,4.45007306 L0.979248041,10.9999998 L3.98376463,8.30993634 L3.98376463,6.89';
     $expected .= '801007 C3.98376463,6.20867902 4.71892527,5.99908429 5.01092527,5.99908429 Z"></p';
     $expected .= 'ath><path d="M17.1420002,13.2800293 C17.1420002,13.5720293 17.022957,14.0490723 ';
     $expected .= '16.730957,14.0490723 L4.92919922,14.0490723 L4.92919922,11 L0.5,15.806 L4.929199';
     $expected .= '22,20.5103758 L5.00469971,16.9990234 L18.9700928,16.9990234 C19.5640928,16.99902';
     $expected .= '34 19.9453125,16.4010001 19.9453125,15.8060001 L19.9453125,9.5324707 L17.142,12.';
     $expected .= '203"></path></svg></a><ol class="notes"><!-- START NOTES --><li class="note rebl';
     $expected .= 'og tumblelog_thefox21 original_post without_commentary"><a rel="nofollow" class=';
     $expected .= '"avatar_frame" target="_blank" href="http://blog.fox21.at/" title="thefox21"><im';
     $expected .= 'g src="http://37.media.tumblr.com/avatar_3c795f47b134_16.png" class="avatar " al';
     $expected .= 't="" /></a><span class="action" data-post-url="http://blog.fox21.at/post/1383514';
     $expected .= '8295/hello-world"></span><div class="clear"></div></li><!-- END NOTES --></ol>20';
     $expected .= ' notesurl31919WednesdayWed3th32247NovemberNov1111201414pmPM719071916381416420998';
     $expected .= '3<div class="like_button" data-post-id="1" id="like_button_1"><iframe id="like_i';
     $expected .= 'frame_1" src="http://assets.tumblr.com/assets/html/like_iframe.html?_v=2#name=th';
     $expected .= 'efox21&amp;post_id=1&rk=x9D9S9kC" scrolling="no" width="20" height="20" framebor';
     $expected .= 'der="0" class="like_toggle" allowTransparency="true"></iframe></div><a href="" c';
     $expected .= 'lass="reblog_button"style="display: block;width:20px;height:20px;"><svg width="1';
     $expected .= '00%" height="100%" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg" xmlns:';
     $expected .= 'xlink="http://www.w3.org/1999/xlink" fill="#ccc"><path d="M5.01092527,5.99908429';
     $expected .= ' L16.0088498,5.99908429 L16.136,9.508 L20.836,4.752 L16.136,0.083 L16.1360004,3.';
     $expected .= '01110845 L2.09985349,3.01110845 C1.50585349,3.01110845 0.979248041,3.44726568 0.';
     $expected .= '979248041,4.45007306 L0.979248041,10.9999998 L3.98376463,8.30993634 L3.98376463,';
     $expected .= '6.89801007 C3.98376463,6.20867902 4.71892527,5.99908429 5.01092527,5.99908429 Z"';
     $expected .= '></path><path d="M17.1420002,13.2800293 C17.1420002,13.5720293 17.022957,14.0490';
     $expected .= '723 16.730957,14.0490723 L4.92919922,14.0490723 L4.92919922,11 L0.5,15.806 L4.92';
     $expected .= '919922,20.5103758 L5.00469971,16.9990234 L18.9700928,16.9990234 C19.5640928,16.9';
     $expected .= '990234 19.9453125,16.4010001 19.9453125,15.8060001 L19.9453125,9.5324707 L17.142';
     $expected .= ',12.203"></path></svg></a><ol class="notes"><!-- START NOTES --><li class="note ';
     $expected .= 'reblog tumblelog_thefox21 original_post without_commentary"><a rel="nofollow" cl';
     $expected .= 'ass="avatar_frame" target="_blank" href="http://blog.fox21.at/" title="thefox21"';
     $expected .= '><img src="http://37.media.tumblr.com/avatar_3c795f47b134_16.png" class="avatar ';
     $expected .= '" alt="" /></a><span class="action" data-post-url="http://blog.fox21.at/post/138';
     $expected .= '35148295/hello-world"></span><div class="clear"></div></li><!-- END NOTES --></o';
     $expected .= 'l>20 notesurl41919WednesdayWed3th32247NovemberNov1111201414pmPM71907191638141642';
     $expected .= '09984<div class="like_button" data-post-id="1" id="like_button_1"><iframe id="li';
     $expected .= 'ke_iframe_1" src="http://assets.tumblr.com/assets/html/like_iframe.html?_v=2#nam';
     $expected .= 'e=thefox21&amp;post_id=1&rk=x9D9S9kC" scrolling="no" width="20" height="20" fram';
     $expected .= 'eborder="0" class="like_toggle" allowTransparency="true"></iframe></div><a href=';
     $expected .= '"" class="reblog_button"style="display: block;width:20px;height:20px;"><svg widt';
     $expected .= 'h="100%" height="100%" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg" xm';
     $expected .= 'lns:xlink="http://www.w3.org/1999/xlink" fill="#ccc"><path d="M5.01092527,5.9990';
     $expected .= '8429 L16.0088498,5.99908429 L16.136,9.508 L20.836,4.752 L16.136,0.083 L16.136000';
     $expected .= '4,3.01110845 L2.09985349,3.01110845 C1.50585349,3.01110845 0.979248041,3.4472656';
     $expected .= '8 0.979248041,4.45007306 L0.979248041,10.9999998 L3.98376463,8.30993634 L3.98376';
     $expected .= '463,6.89801007 C3.98376463,6.20867902 4.71892527,5.99908429 5.01092527,5.9990842';
     $expected .= '9 Z"></path><path d="M17.1420002,13.2800293 C17.1420002,13.5720293 17.022957,14.';
     $expected .= '0490723 16.730957,14.0490723 L4.92919922,14.0490723 L4.92919922,11 L0.5,15.806 L';
     $expected .= '4.92919922,20.5103758 L5.00469971,16.9990234 L18.9700928,16.9990234 C19.5640928,';
     $expected .= '16.9990234 19.9453125,16.4010001 19.9453125,15.8060001 L19.9453125,9.5324707 L17';
     $expected .= '.142,12.203"></path></svg></a><ol class="notes"><!-- START NOTES --><li class="n';
     $expected .= 'ote reblog tumblelog_thefox21 original_post without_commentary"><a rel="nofollow';
     $expected .= '" class="avatar_frame" target="_blank" href="http://blog.fox21.at/" title="thefo';
     $expected .= 'x21"><img src="http://37.media.tumblr.com/avatar_3c795f47b134_16.png" class="ava';
     $expected .= 'tar " alt="" /></a><span class="action" data-post-url="http://blog.fox21.at/post';
     $expected .= '/13835148295/hello-world"></span><div class="clear"></div></li><!-- END NOTES --';
     $expected .= '></ol>20 notesurl51919WednesdayWed3th32247NovemberNov1111201414pmPM7190719163814';
     $expected .= '164209985<div class="like_button" data-post-id="1" id="like_button_1"><iframe id';
     $expected .= '="like_iframe_1" src="http://assets.tumblr.com/assets/html/like_iframe.html?_v=2';
     $expected .= '#name=thefox21&amp;post_id=1&rk=x9D9S9kC" scrolling="no" width="20" height="20" ';
     $expected .= 'frameborder="0" class="like_toggle" allowTransparency="true"></iframe></div><a h';
     $expected .= 'ref="" class="reblog_button"style="display: block;width:20px;height:20px;"><svg ';
     $expected .= 'width="100%" height="100%" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg';
     $expected .= '" xmlns:xlink="http://www.w3.org/1999/xlink" fill="#ccc"><path d="M5.01092527,5.';
     $expected .= '99908429 L16.0088498,5.99908429 L16.136,9.508 L20.836,4.752 L16.136,0.083 L16.13';
     $expected .= '60004,3.01110845 L2.09985349,3.01110845 C1.50585349,3.01110845 0.979248041,3.447';
     $expected .= '26568 0.979248041,4.45007306 L0.979248041,10.9999998 L3.98376463,8.30993634 L3.9';
     $expected .= '8376463,6.89801007 C3.98376463,6.20867902 4.71892527,5.99908429 5.01092527,5.999';
     $expected .= '08429 Z"></path><path d="M17.1420002,13.2800293 C17.1420002,13.5720293 17.022957';
     $expected .= ',14.0490723 16.730957,14.0490723 L4.92919922,14.0490723 L4.92919922,11 L0.5,15.8';
     $expected .= '06 L4.92919922,20.5103758 L5.00469971,16.9990234 L18.9700928,16.9990234 C19.5640';
     $expected .= '928,16.9990234 19.9453125,16.4010001 19.9453125,15.8060001 L19.9453125,9.5324707';
     $expected .= ' L17.142,12.203"></path></svg></a><ol class="notes"><!-- START NOTES --><li clas';
     $expected .= 's="note reblog tumblelog_thefox21 original_post without_commentary"><a rel="nofo';
     $expected .= 'llow" class="avatar_frame" target="_blank" href="http://blog.fox21.at/" title="t';
     $expected .= 'hefox21"><img src="http://37.media.tumblr.com/avatar_3c795f47b134_16.png" class=';
     $expected .= '"avatar " alt="" /></a><span class="action" data-post-url="http://blog.fox21.at/';
     $expected .= 'post/13835148295/hello-world"></span><div class="clear"></div></li><!-- END NOTE';
     $expected .= 'S --></ol>20 notesurl61919WednesdayWed3th32247NovemberNov1111201414pmPM719071916';
     $expected .= '3814164209986<div class="like_button" data-post-id="1" id="like_button_1"><ifram';
     $expected .= 'e id="like_iframe_1" src="http://assets.tumblr.com/assets/html/like_iframe.html?';
     $expected .= '_v=2#name=thefox21&amp;post_id=1&rk=x9D9S9kC" scrolling="no" width="20" height="';
     $expected .= '20" frameborder="0" class="like_toggle" allowTransparency="true"></iframe></div>';
     $expected .= '<a href="" class="reblog_button"style="display: block;width:20px;height:20px;"><';
     $expected .= 'svg width="100%" height="100%" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000';
     $expected .= '/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="#ccc"><path d="M5.0109252';
     $expected .= '7,5.99908429 L16.0088498,5.99908429 L16.136,9.508 L20.836,4.752 L16.136,0.083 L1';
     $expected .= '6.1360004,3.01110845 L2.09985349,3.01110845 C1.50585349,3.01110845 0.979248041,3';
     $expected .= '.44726568 0.979248041,4.45007306 L0.979248041,10.9999998 L3.98376463,8.30993634 ';
     $expected .= 'L3.98376463,6.89801007 C3.98376463,6.20867902 4.71892527,5.99908429 5.01092527,5';
     $expected .= '.99908429 Z"></path><path d="M17.1420002,13.2800293 C17.1420002,13.5720293 17.02';
     $expected .= '2957,14.0490723 16.730957,14.0490723 L4.92919922,14.0490723 L4.92919922,11 L0.5,';
     $expected .= '15.806 L4.92919922,20.5103758 L5.00469971,16.9990234 L18.9700928,16.9990234 C19.';
     $expected .= '5640928,16.9990234 19.9453125,16.4010001 19.9453125,15.8060001 L19.9453125,9.532';
     $expected .= '4707 L17.142,12.203"></path></svg></a><ol class="notes"><!-- START NOTES --><li ';
     $expected .= 'class="note reblog tumblelog_thefox21 original_post without_commentary"><a rel="';
     $expected .= 'nofollow" class="avatar_frame" target="_blank" href="http://blog.fox21.at/" titl';
     $expected .= 'e="thefox21"><img src="http://37.media.tumblr.com/avatar_3c795f47b134_16.png" cl';
     $expected .= 'ass="avatar " alt="" /></a><span class="action" data-post-url="http://blog.fox21';
     $expected .= '.at/post/13835148295/hello-world"></span><div class="clear"></div></li><!-- END ';
     $expected .= 'NOTES --></ol>20 notesurl71919WednesdayWed3th32247NovemberNov1111201414pmPM71907';
     $expected .= '19163814164209987<div class="like_button" data-post-id="1" id="like_button_1"><i';
     $expected .= 'frame id="like_iframe_1" src="http://assets.tumblr.com/assets/html/like_iframe.h';
     $expected .= 'tml?_v=2#name=thefox21&amp;post_id=1&rk=x9D9S9kC" scrolling="no" width="20" heig';
     $expected .= 'ht="20" frameborder="0" class="like_toggle" allowTransparency="true"></iframe></';
     $expected .= 'div><a href="" class="reblog_button"style="display: block;width:20px;height:20px';
     $expected .= ';"><svg width="100%" height="100%" viewBox="0 0 21 21" xmlns="http://www.w3.org/';
     $expected .= '2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="#ccc"><path d="M5.010';
     $expected .= '92527,5.99908429 L16.0088498,5.99908429 L16.136,9.508 L20.836,4.752 L16.136,0.08';
     $expected .= '3 L16.1360004,3.01110845 L2.09985349,3.01110845 C1.50585349,3.01110845 0.9792480';
     $expected .= '41,3.44726568 0.979248041,4.45007306 L0.979248041,10.9999998 L3.98376463,8.30993';
     $expected .= '634 L3.98376463,6.89801007 C3.98376463,6.20867902 4.71892527,5.99908429 5.010925';
     $expected .= '27,5.99908429 Z"></path><path d="M17.1420002,13.2800293 C17.1420002,13.5720293 1';
     $expected .= '7.022957,14.0490723 16.730957,14.0490723 L4.92919922,14.0490723 L4.92919922,11 L';
     $expected .= '0.5,15.806 L4.92919922,20.5103758 L5.00469971,16.9990234 L18.9700928,16.9990234 ';
     $expected .= 'C19.5640928,16.9990234 19.9453125,16.4010001 19.9453125,15.8060001 L19.9453125,9';
     $expected .= '.5324707 L17.142,12.203"></path></svg></a><ol class="notes"><!-- START NOTES -->';
     $expected .= '<li class="note reblog tumblelog_thefox21 original_post without_commentary"><a r';
     $expected .= 'el="nofollow" class="avatar_frame" target="_blank" href="http://blog.fox21.at/" ';
     $expected .= 'title="thefox21"><img src="http://37.media.tumblr.com/avatar_3c795f47b134_16.png';
     $expected .= '" class="avatar " alt="" /></a><span class="action" data-post-url="http://blog.f';
     $expected .= 'ox21.at/post/13835148295/hello-world"></span><div class="clear"></div></li><!-- ';
     $expected .= 'END NOTES --></ol>20 notes';
     $this->assertEquals($expected, $html);
 }
Exemple #15
0
 private function parseElements($rawhtml = '', $parentElement = null, $level = 1)
 {
     #fwrite(STDOUT, __CLASS__.'->'.__FUNCTION__.': level='.$level.PHP_EOL);
     if ($level >= 100) {
         throw new RuntimeException(__FUNCTION__ . ': Maximum level of 100 reached.', 2);
     }
     if (!$rawhtml && $level == 1) {
         $rawhtml = $this->template;
     }
     if (!$parentElement) {
         $this->elementsId++;
         $parentElement = $this->rootElement = new Element();
         $parentElement->setId($this->elementsId);
     }
     $fuse = 0;
     while ($rawhtml) {
         $fuse++;
         if ($fuse >= 1000) {
             throw new RuntimeException(__FUNCTION__ . ': Maximum level of 1000 reached.', 3);
         }
         #fwrite(STDOUT, str_repeat(' ', 4 * ($level)).'parse: "'.$rawhtml.'"'.PHP_EOL);
         $content = '';
         $element = null;
         // Find opening bracket.
         $pos = strpos($rawhtml, '{');
         if ($pos === false) {
             #fwrite(STDOUT, str_repeat(' ', 4 * ($level)).'no { found'.PHP_EOL);
             $this->elementsId++;
             $element = new HtmlElement();
             $element->setId($this->elementsId);
             $element->setContent($rawhtml);
             $parentElement->addChild($element);
             $rawhtml = '';
         } else {
             #fwrite(STDOUT, str_repeat(' ', 4 * ($level)).'found {: '.$pos.PHP_EOL);
             if ($pos >= 1) {
                 $content = substr($rawhtml, 0, $pos);
                 #fwrite(STDOUT, str_repeat(' ', 4 * ($level + 1)).'content: "'.$content.'"'.PHP_EOL);
             }
             $this->elementsId++;
             $element = new HtmlElement();
             $element->setId($this->elementsId);
             $element->setContent($content);
             $parentElement->addChild($element);
             $rawhtml = substr($rawhtml, $pos + 1);
             // Find close bracket for the opening one.
             $pos = strpos($rawhtml, '}');
             if ($pos === false) {
                 $content .= '{';
                 #fwrite(STDOUT, str_repeat(' ', 4 * ($level + 1)).'no } found: "'.$content.'"'.PHP_EOL);
                 $element->setContent($content);
             } else {
                 $nameFull = substr($rawhtml, 0, $pos);
                 $nameFullLen = strlen($nameFull);
                 $rawhtml = substr($rawhtml, $pos + 1);
                 #fwrite(STDOUT, str_repeat(' ', 4 * ($level + 1)).'found }: '.$pos.', "'.$nameFull.'" '.$nameFullLen.PHP_EOL);
                 if (strtolower(substr($nameFull, 0, 6)) == 'block:') {
                     // Process a block element.
                     $nameFullPos = strpos($nameFull, ':');
                     $name = substr($nameFull, $nameFullPos + 1);
                     $type = strtolower(substr($nameFull, 0, $nameFullPos));
                     // Search close tag for the opened tag.
                     $offset = 0;
                     $newoffset = 0;
                     $testhtml = '';
                     $temphtml = $rawhtml;
                     do {
                         $temphtml = substr($temphtml, $offset);
                         $pos = strpos($temphtml, '{/' . $nameFull . '}');
                         if ($pos === false) {
                             throw new RuntimeException(__FUNCTION__ . ': Missing closing tag "{/' . $nameFull . '}".', 1);
                         } else {
                             $testhtml = substr($temphtml, 0, $pos);
                             $newoffset = $offset + $pos + 2 + $nameFullLen + 1;
                             $offset = $newoffset;
                         }
                     } while (strpos($testhtml, '{' . $nameFull . '}') !== false);
                     $subhtml = substr($rawhtml, 0, $offset - 2 - $nameFullLen - 1);
                     $rawhtml = substr($rawhtml, $offset);
                     $element = null;
                     if ($type == 'block') {
                         if (strtolower(substr($name, 0, 5)) == 'ifnot') {
                             $name = substr($name, 5);
                             $element = new IfNotBlockElement();
                         } elseif (strtolower(substr($name, 0, 2)) == 'if') {
                             $name = substr($name, 2);
                             $element = new IfBlockElement();
                         } elseif ($name == 'Posts') {
                             $element = new PostsBlockElement();
                         } elseif ($name == 'Text') {
                             $element = new TextBlockElement();
                         } elseif ($name == 'Link') {
                             $element = new LinkBlockElement();
                         } elseif ($name == 'Photo') {
                             $element = new PhotoBlockElement();
                         } elseif ($name == 'Photos') {
                             $element = new PhotosBlockElement();
                         } elseif ($name == 'Photoset') {
                             $element = new PhotosetBlockElement();
                         } elseif ($name == 'IndexPage') {
                             $element = new IndexPageBlockElement();
                         } elseif ($name == 'PermalinkPage') {
                             $element = new PermalinkPageBlockElement();
                         } elseif ($name == 'Title') {
                             $element = new TitleBlockElement();
                         } elseif ($name == 'PostTitle') {
                             $element = new PostTitleBlockElement();
                         } elseif ($name == 'Description') {
                             $element = new DescriptionBlockElement();
                         } elseif ($name == 'AskEnabled') {
                             $element = new AskEnabledBlockElement();
                         } elseif ($name == 'HasPages') {
                             $element = new HasPagesBlockElement();
                         } elseif ($name == 'Pages') {
                             $element = new PagesBlockElement();
                         } elseif ($name == 'Caption') {
                             $element = new CaptionBlockElement();
                         } elseif ($name == 'Quote') {
                             $element = new QuoteBlockElement();
                         } elseif ($name == 'Chat') {
                             $element = new ChatBlockElement();
                         } elseif ($name == 'Audio') {
                             $element = new AudioBlockElement();
                         } elseif ($name == 'Video') {
                             $element = new VideoBlockElement();
                         } elseif ($name == 'Answer') {
                             $element = new AnswerBlockElement();
                         } elseif ($name == 'Source') {
                             $element = new SourceBlockElement();
                         } elseif ($name == 'Lines') {
                             $element = new LinesBlockElement();
                         } elseif ($name == 'Label') {
                             $element = new LabelBlockElement();
                         } elseif ($name == 'Date') {
                             $element = new DateBlockElement();
                         } elseif ($name == 'AudioEmbed') {
                             $element = new AudioEmbedBlockElement();
                         } elseif ($name == 'NoteCount') {
                             $element = new NoteCountBlockElement();
                         } elseif ($name == 'HasTags') {
                             $element = new HasTagsBlockElement();
                         } elseif ($name == 'PostNotes') {
                             $element = new PostNotesBlockElement();
                         } elseif ($name == 'Pagination') {
                             $element = new PaginationBlockElement();
                         } elseif ($name == 'PreviousPage') {
                             $element = new PreviousPageBlockElement();
                         } elseif ($name == 'NextPage') {
                             $element = new NextPageBlockElement();
                         } elseif ($name == 'Tags') {
                             $element = new TagsBlockElement();
                         } elseif ($name == 'LinkURL') {
                             $element = new LinkUrlBlockElement();
                         } else {
                             $msg = __FUNCTION__ . ': Unknown block "' . $name . '". Path: ' . $parentElement->getPath();
                             throw new RuntimeException($msg, 3);
                         }
                     }
                     if ($element) {
                         $this->elementsId++;
                         $element->setId($this->elementsId);
                         $element->setName($name);
                         $parentElement->addChild($element);
                         $this->parseElements($subhtml, $element, $level + 1);
                     }
                     /*else{
                     			throw new RuntimeException(__FUNCTION__.': Can not create element.', 4);
                     		}*/
                 } else {
                     // Process non-block element.
                     #fwrite(STDOUT, str_repeat(' ', 4 * ($level + 1)).'else'.PHP_EOL);
                     if (in_array($nameFull, static::$variableNames)) {
                         #fwrite(STDOUT, str_repeat(' ', 4 * ($level + 1)).'ok'.PHP_EOL);
                         $this->elementsId++;
                         $element = new VariableElement();
                         $element->setId($this->elementsId);
                         $element->setName($nameFull);
                         $parentElement->addChild($element);
                     } elseif (substr($nameFull, 0, 5) == 'text:') {
                         #fwrite(STDOUT, str_repeat(' ', 4 * ($level + 1)).'ok text'.PHP_EOL);
                         $this->elementsId++;
                         $element = new TextVariableElement();
                         $element->setId($this->elementsId);
                         $element->setName($nameFull);
                         $parentElement->addChild($element);
                     } elseif (substr($nameFull, 0, 5) == 'lang:') {
                         #fwrite(STDOUT, str_repeat(' ', 4 * ($level + 1)).'ok lang'.PHP_EOL);
                         $this->elementsId++;
                         $element = new LangVariableElement();
                         $element->setId($this->elementsId);
                         $element->setName($nameFull);
                         $parentElement->addChild($element);
                     } else {
                         // Unknown block. Set the original content.
                         $content = '{' . $nameFull . '}';
                         #fwrite(STDOUT, str_repeat(' ', 4 * ($level + 1)).'content: "'.$nameFull.'", "'.$content.'"'.PHP_EOL);
                         $this->elementsId++;
                         $element = new HtmlElement();
                         $element->setId($this->elementsId);
                         $element->setName($nameFull);
                         $element->setContent($content);
                         $parentElement->addChild($element);
                     }
                     #$rawhtml = substr($rawhtml, $pos + 1);
                 }
             }
         }
         #usleep(300000);
     }
     #if($level == 1){ ve($this->rootElement); }
 }