/** * Helper to break down template content in to a useful array. * @param int $mtime * @param string $content * @return array */ protected function parseTemplateContent($query, $result, $fileName) { $options = ['isCompoundObject' => $query->getModel()->isCompoundObject()]; $content = array_get($result, 'content'); $processed = SectionParser::parse($content, $options); return ['fileName' => $fileName, 'content' => $content, 'mtime' => array_get($result, 'mtime'), 'markup' => $processed['markup'], 'code' => $processed['code']] + $processed['settings']; }
public function testParse() { // Test a single section $result = SectionParser::parse("this is a twig content"); $this->assertInternalType('array', $result); $this->assertCount(3, $result); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertEmpty($result["settings"]); $this->assertNull($result["code"]); $this->assertNotNull($result["markup"]); $this->assertEquals("this is a twig content", $result["markup"]); // Test two sections $result = SectionParser::parse("url = \"/blog/post/\" \n==\n this is a twig content"); $this->assertInternalType('array', $result); $this->assertCount(3, $result); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["markup"]); $this->assertNotNull($result["settings"]); $this->assertNull($result["code"]); $this->assertEquals("this is a twig content", $result["markup"]); $this->assertInternalType("array", $result["settings"]); $this->assertArrayHasKey("url", $result["settings"]); $this->assertEquals("/blog/post/", $result["settings"]["url"]); // Test three sections $result = SectionParser::parse("url = \"/blog/post/\"\n[section]\nindex = value \n===\n \$var = 23; \n phpinfo(); \n===\n this is a twig content"); $this->assertInternalType('array', $result); $this->assertCount(3, $result); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertNotNull($result["settings"]); $this->assertNotNull($result["markup"]); $this->assertNotNull($result["code"]); $this->assertEquals("this is a twig content", $result["markup"]); $this->assertInternalType("array", $result["settings"]); $this->assertArrayHasKey("url", $result["settings"]); $this->assertEquals("/blog/post/", $result["settings"]["url"]); $this->assertContains("\$var = 23;", $result["code"]); $this->assertContains("phpinfo();", $result["code"]); $this->assertArrayHasKey("section", $result["settings"]); $this->assertInternalType("array", $result["settings"]["section"]); $this->assertArrayHasKey("index", $result["settings"]["section"]); $this->assertEquals("value", $result["settings"]["section"]["index"]); // Test zero sections $result = SectionParser::parse(""); $this->assertCount(3, $result); $this->assertArrayHasKey("settings", $result); $this->assertArrayHasKey("code", $result); $this->assertArrayHasKey("markup", $result); $this->assertEmpty($result["settings"]); $this->assertNull($result["markup"]); $this->assertNull($result["code"]); $this->assertEquals("", $result["markup"]); }