Piiit / pwPHPwiki

WIKI CMS written in object oriented PHP. Note: This project depends on https://github.com/Piiit/pwPHPtools
1 stars 1 forks source link

Add wikipedia like table syntax (without style attributes) #55

Open Piiit opened 9 years ago

Piiit commented 9 years ago
    static function pw_wiki_lexerconf(Lexer $lexer) {
        $lexer->addWordPattern("newline", '(?<=\n)\n');
        $lexer->addSectionPattern("wptable", '\n\{\|', '\|\}');
        $lexer->addSectionPattern("wptableline", '\|-', '(?=\|\}|\|-)');
        #$lexer->addSectionPattern("wptableheader", '\!\! *|\n\! *', '(?= *\!\!|\n)');
        $lexer->addSectionPattern("wptableheader", '(\!\! *|\n\! *)', '(?= *\!\!|\n)'); //ENTRY must be bracketed... otherwise wptable finds its EXIT too early... wrong count!
        $lexer->addSectionPattern("wptablecell", '(\|\| *|\n\|(?![\}-]) *)', '(?= *\|\||\n)');
        $lexer->addLinePattern("wptabletitle", '\|\+ *');
        $lexer->addWordPattern("wptableconfig", '([\w]+) *= *[\"\']?([^\"\']*)[\"\']? *\|* *');
        $lexer->connectTo("wptableheader", "wptableline2");
        $lexer->connectTo("wptablecell", "wptableline2");

        // TODO: Aggregate categories and cleanup, Attention with Deflists and Modi, which must (not) be a part of their selfs...
        $blocks = array("#DOCUMENT", "tablecell", "listitem", "multiline");
        //  $tables = array("tablecell", "tableheader", "wptableheader", "wptablecell");
        $boxes = array("bordererror", "borderinfo", "borderwarning", "bordersuccess", "bordervalidation", "border");
        //  $format = array("bold", "underline", "italic", "monospace", "small", "big", "strike", "sub", "sup", "hi", "lo", "em");
        //  $align = array("align", "justify", "alignintable", "indent", "left", "right");

        $lexer->setAllowedModes("newline", array_merge($blocks, $boxes, array("#DOCUMENT", "multiline")));
        $lexer->setAllowedModes("wptable", array("#DOCUMENT", "multiline", "wptablecell"));
        $lexer->setAllowedModes("wptableline", array("wptable"));
        $lexer->setAllowedModes("wptabletitle", array("wptable"));
        $lexer->setAllowedModes("wptableheader", array("wptableline", "wptable"));
        $lexer->setAllowedModes("wptablecell", array("wptableline", "wptable"));
        $lexer->setAllowedModes("wptableconfig", array("wptable", "wptableline", "wptableheader", "wptablecell", "wptabletitle"));

        return $lexer;
    }