function buildForms($code) { $lexer = new Lexer(); $reader = new Reader(); $builder = new FormTreeBuilder(); $tokens = $lexer->tokenize($code); $ast = $reader->parse($tokens); return $builder->parseAst($ast); }
/** * This particular xml body caused the parser to go into an infinite loop. * Need to know why. */ function testDeserialize() { $body = '<?xml version="1.0"?> <d:propertyupdate xmlns:d="DAV:" xmlns:s="http://sabredav.org/NS/test"> <d:set><d:prop></d:prop></d:set> <d:set><d:prop></d:prop></d:set> </d:propertyupdate>'; $reader = new Reader(); $reader->elementMap = ['{DAV:}set' => 'Sabre\\Xml\\Element\\KeyValue']; $reader->xml($body); $output = $reader->parse(); $this->assertEquals(['name' => '{DAV:}propertyupdate', 'value' => [['name' => '{DAV:}set', 'value' => ['{DAV:}prop' => null], 'attributes' => []], ['name' => '{DAV:}set', 'value' => ['{DAV:}prop' => null], 'attributes' => []]], 'attributes' => []], $output); }
public function testParse() { $reader = new Reader(); $content = <<<EOT <meta property="og:title" content="The Rock" /> <meta property="og:type" content="video.movie" /> <meta property="og:url" content="http://www.imdb.com/title/tt0117500/" /> <meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" /> EOT; $result = $reader->parse($content); $this->assertCount(4, $result); $this->assertEquals(array('property' => 'og:title', 'content' => 'The Rock'), $result[0]->attributes()); $this->assertEquals(array('property' => 'og:type', 'content' => 'video.movie'), $result[1]->attributes()); }
/** * @depends testMappedElement */ function testParseInnerTree() { $input = <<<BLA <?xml version="1.0"?> <root xmlns="http://sabredav.org/ns"> <elem1> <elem1 /> </elem1> </root> BLA; $reader = new Reader(); $reader->elementMap = ['{http://sabredav.org/ns}elem1' => function (Reader $reader) { $innerTree = $reader->parseInnerTree(['{http://sabredav.org/ns}elem1' => function (Reader $reader) { $reader->next(); return "foobar"; }]); return $innerTree; }]; $reader->xml($input); $output = $reader->parse(); $expected = ['name' => '{http://sabredav.org/ns}root', 'value' => [['name' => '{http://sabredav.org/ns}elem1', 'value' => [['name' => '{http://sabredav.org/ns}elem1', 'value' => 'foobar', 'attributes' => []]], 'attributes' => []]], 'attributes' => []]; $this->assertEquals($expected, $output); }
/** * Test was added for Issue #10. * * @expectedException Sabre\XML\LibXMLException */ function testBrokenXML() { $input = <<<BLA <test> <hello> </hello> </sffsdf> BLA; $reader = new Reader(); $reader->xml($input); $reader->parse(); }