Revision history for FormatterDevInfo


Revision [22892]

Last edited on 2016-05-20 07:38:42 by NilsLindenberg [Replaces old-style internal links with new pipe-split links.]
Additions:
This page can now be found on the [[Docs:FormatterDevInfo | Wikka Documentation Server]].
An archive of [[http://wikkawiki.org/FormatterDevInfo/revisions | old revisions of this page]] is still available for reference.<<
Deletions:
This page can now be found on the [[Docs:FormatterDevInfo Wikka Documentation Server]].
An archive of [[http://wikkawiki.org/FormatterDevInfo/revisions
old revisions of this page]] is still available for reference.<<


Revision [18103]

Edited on 2008-01-27 02:34:53 by NilsLindenberg [Migrated to doc server]
Additions:
<<===This page has moved===
This page can now be found on the [[Docs:FormatterDevInfo Wikka Documentation Server]].
Thanks for updating your bookmarks!
An archive of [[http://wikkawiki.org/FormatterDevInfo/revisions
old revisions of this page]] is still available for reference.<<
::c::
CategoryMigratedDocs
Deletions:
[[WikkaDocumentation Wikka Documentation]]
===How Formatters work and why it is easy to write your own===
>>**See also**
- [[FormatterInfo Explanation for users]]
- [[WantedFormatters Wanted Wikka formatters]]
- SyntaxHighlighter
- GeSHi - WikkaGeshiIntegration
>>
==What php-code is used?==
- In the above example the "ini" formatter was selected, so the file ##formatters/ini.php## was included.
- Within this script you have access to a variable $text, a string that contains the code, content of the block.
- Within the formatter process $text (mostly string manipulations) and print the result to stdout.
- note: the ";line-number" is for the moment only used in the GeSHi code.
==How do we get there?==
- When you display a normal page, the default ##handlers/page/show.php## handler will call at some point $this->Format($this->page["body"], "wakka") which includes the ##formatters/wakka.php## code.
- Within ##formatters/wakka.php## the ""%%(formatter[;line-number]) code %%"" is detected and
- In " else if (preg_match("/^%%(.*?)%%$/s", $thing, $matches)) " a new call to $wakka->Format($code, $language); is made.
- $language = "ini" in this example and $code is our content (and will become $text).
==Code examples==
1) preg_replace patterns in $text: ##formatters/ini.php##
%%(php)<?php
/**
* INI language file for Wikka highlighting (configuration file).
*/
$text = htmlspecialchars($text, ENT_QUOTES);
$text = preg_replace("/([=,\|]+)/m","<span style=\"color:#4400DD\">\\1</span>",$text);
$text = preg_replace("/^([;#].+)$/m","<span style=\"color:#226622\">\\1</span>",$text);
$text = preg_replace("/([^\d\w#;:>])([;#].+)$/m","<span style=\"color:#226622\">\\2</span>",$text);
$text = preg_replace("/^(\[.*\])/m","<strong style=\"color:#AA0000;background:#EEE0CC\">\\1</strong>",$text);
print "<pre>".$text."</pre>";
?>%%
1) Do something with every line in the block:
%%(php)<?php
foreach(split("\n", $text) as $n => $line){
if(preg_match("/^\s*$/",$line)) continue; // ignore empty lines
// process $line here...

}
?>%%
CategoryDocumentation


Revision [16900]

Edited on 2007-05-31 23:27:04 by NilsLindenberg [Reverted]
Additions:
- In " else if (preg_match("/^%%(.*?)%%$/s", $thing, $matches)) " a new call to $wakka->Format($code, $language); is made.
- $language = "ini" in this example and $code is our content (and will become $text).
==Code examples==
1) preg_replace patterns in $text: ##formatters/ini.php##
%%(php)<?php
/**
* INI language file for Wikka highlighting (configuration file).
*/
$text = htmlspecialchars($text, ENT_QUOTES);
$text = preg_replace("/([=,\|]+)/m","<span style=\"color:#4400DD\">\\1</span>",$text);
$text = preg_replace("/^([;#].+)$/m","<span style=\"color:#226622\">\\1</span>",$text);
$text = preg_replace("/([^\d\w#;:>])([;#].+)$/m","<span style=\"color:#226622\">\\2</span>",$text);
$text = preg_replace("/^(\[.*\])/m","<strong style=\"color:#AA0000;background:#EEE0CC\">\\1</strong>",$text);
print "<pre>".$text."</pre>";
?>%%
1) Do something with every line in the block:
%%(php)<?php
foreach(split("\n", $text) as $n => $line){
if(preg_match("/^\s*$/",$line)) continue; // ignore empty lines
// process $line here...

}
?>%%
CategoryDocumentation
Deletions:
- In " else if (preg_match("/^


Revision [16698]

Edited on 2007-05-31 10:37:53 by TzvU5d [Reverted]
Additions:
- In " else if (preg_match("/^
Deletions:
- In " else if (preg_match("/^%%(.*?)%%$/s", $thing, $matches)) " a new call to $wakka->Format($code, $language); is made.
- $language = "ini" in this example and $code is our content (and will become $text).
==Code examples==
1) preg_replace patterns in $text: ##formatters/ini.php##
%%(php)<?php
/**
* INI language file for Wikka highlighting (configuration file).
*/
$text = htmlspecialchars($text, ENT_QUOTES);
$text = preg_replace("/([=,\|]+)/m","<span style=\"color:#4400DD\">\\1</span>",$text);
$text = preg_replace("/^([;#].+)$/m","<span style=\"color:#226622\">\\1</span>",$text);
$text = preg_replace("/([^\d\w#;:>])([;#].+)$/m","<span style=\"color:#226622\">\\2</span>",$text);
$text = preg_replace("/^(\[.*\])/m","<strong style=\"color:#AA0000;background:#EEE0CC\">\\1</strong>",$text);
print "<pre>".$text."</pre>";
?>%%
1) Do something with every line in the block:
%%(php)<?php
foreach(split("\n", $text) as $n => $line){
if(preg_match("/^\s*$/",$line)) continue; // ignore empty lines
// process $line here...

}
?>%%
CategoryDocumentation


Revision [8745]

Edited on 2005-05-31 12:17:41 by NilsLindenberg [small layout]
Additions:
- [[FormatterInfo Explanation for users]]
Deletions:
[[FormatterInfo Explanation for users]]


Revision [8742]

The oldest known version of this page was created on 2005-05-31 12:13:28 by NilsLindenberg [small layout]
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki