function fontTable() { $fontTable = $this->section('fonttbl'); $lexer = new JoshRibakoff_Note_BraceLexer(); $lexer->setRTF($fontTable); $tree = $lexer->tokenize(); array_shift($tree); $return = array(); foreach ($tree as $treeItem) { preg_match('#^\\\\(f[0-9]+)(\\\\.*?);#s', $treeItem[0], $match); $return[$match[1]] = $this->removeNewLines($match[2]); } return $return; }
function testShouldLexRTFDataFromJoshRibakoff() { $note = new JoshRibakoff_Note_BraceLexer(); $note->setRTF('\\rtf1\\ansi\\ansicpg1251\\deff0\\deflang1049{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}{\\f1\\fnil\\fcharset204 Microsoft Sans Serif;}} {\\colortbl ;\\red0\\green255\\blue0;\\red0\\green128\\blue192;\\red255\\green0\\blue0;} \\viewkind4\\uc1\\pard\\lang1033\\f0\\fs17 4/4/2013 11:17:03 AM - jribakoff: black\\par \\cf1 4/4/2013 11:16:59 AM - jribakoff: note 8 (green for money)\\par \\cf0 4/4/2013 11:16:50 AM - jribakoff: note 7\\par \\cf2 4/4/2013 11:16:47 AM - jribakoff: note 6 (really blue)\\par \\cf0 4/4/2013 11:16:34 AM - jribakoff: note 6 ( blue)\\par 4/4/2013 11:15:36 AM - jribakoff: note 5\\par \\cf3 4/4/2013 11:15:33 AM - jribakoff: note 4 (red)\\par \\cf0 4/4/2013 11:15:23 AM - jribakoff: note 3\\par 4/4/2013 11:15:21 AM - jribakoff: note 2\\par 4/3/2013 2:47:03 PM - jribakoff: simple text\\par \\lang1049\\f1\\par'); $expected = array('\\rtf1\\ansi\\ansicpg1251\\deff0\\deflang1049', array('\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}{\\f1\\fnil\\fcharset204 Microsoft Sans Serif;}'), "\n", array('\\colortbl ;\\red0\\green255\\blue0;\\red0\\green128\\blue192;\\red255\\green0\\blue0;'), "\n" . '\\viewkind4\\uc1\\pard\\lang1033\\f0\\fs17 4/4/2013 11:17:03 AM - jribakoff: black\\par \\cf1 4/4/2013 11:16:59 AM - jribakoff: note 8 (green for money)\\par \\cf0 4/4/2013 11:16:50 AM - jribakoff: note 7\\par \\cf2 4/4/2013 11:16:47 AM - jribakoff: note 6 (really blue)\\par \\cf0 4/4/2013 11:16:34 AM - jribakoff: note 6 ( blue)\\par 4/4/2013 11:15:36 AM - jribakoff: note 5\\par \\cf3 4/4/2013 11:15:33 AM - jribakoff: note 4 (red)\\par \\cf0 4/4/2013 11:15:23 AM - jribakoff: note 3\\par 4/4/2013 11:15:21 AM - jribakoff: note 2\\par 4/3/2013 2:47:03 PM - jribakoff: simple text\\par \\lang1049\\f1\\par'); $actual = $note->tokenize(); $this->assertEquals($expected, $actual, 'should lex valid RTF data'); }
function convertBracesToArray($rtf) { $braceLexer = new JoshRibakoff_Note_BraceLexer(); $braceLexer->setRTF($rtf); return $braceLexer->tokenize(); }