FilterPlugin 
Substitute and extract information from content by using regular expressions
 Description 
This plugin allows to substitute and extract information from content by using regular expressions. There are three different types of new functions: 
-  FORMATLIST: maniplulate a list of items; it is highly configurable to      define what constitutes a list and how to extract items from it
  -  SUBST, STARTSUBST/STOPSUBST: substiture a pattern in a chunk of text
  -  EXTRACT, STARTEXTRACT/STOPEXTRACT: extract a pattern from a text
 
 
While the START-STOP versions of SUBST and EXTRACT work on inline text, the normal versions process a source topic before including it into the current one.
 Syntax Rules 
 SUBST 
Syntax: 
%SUBST{topic="..." ...}% 
Insert a topic by processing its content.
 
-  
topic="...": name of the topic text to be processed 
  -  
text="...": text to be processed (has got higher precedence than 'topic')
  -  
pattern="...": pattern to be extracted or substituted 
  -  
format="...": format expression or pattern substitute 
  -  
header="...": header string prepended to output
  -  
footer="...": footer string appended to output
  -  
limit="<n>" maximum number of occurences to extract or substitute counted from the start of the text (defaults to 100000 aka all hits) 
  -  
skip="<n>" skip the first n occurences
  -  
exclude="...": skip occurences that match this regular expression
  -  sort="on,off,alpha,num" order of the formatted items (default "off")
  -  
expand="on,off": toggle expansion of TWiki markup before filtering (defaults to on) 
 
 
 STARTSUBST, STOPSUBST 
Syntax:
%STARTSUBST{...}% 
... 
%STOPSUBST%
Substitute text given inline. see 
SUBST.
 EXTRACT 
Syntax: 
%EXTRACT{topic="..."  ...}% 
Extract text from a topic. see 
SUBST.
 STARTEXTRACT, STOPEXTRACT 
Syntax:
%STARTEXTRACT{...}% 
... 
%STOPEXTRACT%
Extract content given inline. see 
SUBST.
 FORMATLIST 
Syntax: 
%FORMATLIST{"<list>" ...}%
Formats a list of items. The <list> argument is separated into items by using a split expression; each item is matched against a pattern and then formatted using a format string while being separated by a separator string; the result is prefixed with a header and appended with a footer in case the list is not empty. 
-  <list>: the list 
  -  split="...": the split expression (default ",")
  -  pattern="...": pattern applied to each item (default "\s(.*)\s")
  -  format="...": the format string for each item (default "$1")
  -  header="...": header string
  -  footer="...": footer string
  -  separator="...": string to be inserted between list items
  -  limit="...": max number of items to be taken out of the list (default "-1")
  -  skip="...": number of list items to skip, not adding them to the result
  -  sort="on,off,alpha,num" order of the formatted items (default "off")
  -  reverse="on,off": reverse the sortion of the list
  -  unique="on,off": remove dupplicates from the list
  -  exclude="...": remove list items that match this regular expression
 
 
The pattern string shall group matching substrings in the list item to which you can refer to by using $1, $2, ... in the format string. Any format string (
format, 
header, 
footer) may contain variables 
$percnt$, 
$nop, 
$dollar and 
$n. The variable 
$index referse to the position number within the list being formatted; using 
$count in the footer or header argument refers to the total number of list elements.
 MAKEINDEX 
Syntax: 
%MAKEINDEX{"<list>" ...}%
Formats a list into a multi-column index like in MediaWiki's category topcis. MAKEINDEX insert capitals as headlines to groups of sorted items. It will try to balance all columns equally, and keep track of breaks to prevent "schusterkinder", that is avoid isolated headlines at the bottom of a column.
Parameters: 
-  <list>: the list of items
  -  split="...": the split expression to separate the <list> into items (default ",")
  -  pattern="...": pattern applied to each item (default "(.*)")
  -  cols="...": maximum number of cols to split the list into
  -  format="...": format of each list item (default "$item")
  -  sort="on/off": sort the list (default "on")
  -  unique="on/off": removed duplicates (default "off")
  -  exclude="...": pattern to check against items in the list to be excluded
  -  reverse="on/off": reverse the list (default "off")
  -  header="...": format string to prepend to the result
  -  footer="..." format string to be appended to the result
 
 
Like in FORMATLIST the 
format parameter can make use of $1, $2, ... variables to match the groupings defined in the 
pattern argument (like in 
pattern="(.*);(.*);(.*)") . The first matched grouping $1 will be used as the $item to sort the list.
 Examples 
 Secure Html 
%STARTSUBST{pattern="<(a href=\"javascript:.*?)>(.*?)" format="<$1>$2</a>"}%
Pop me up
%STOPSUBST%
 Format Comments 
%EXTRACT{topic="FilterPlugin" expand="off" pattern=".div class=\"text\">.*?[\r\n]+(.*?)[\r\n]+(?:.*?[\r\n]+)+?-- (.*?) on (.*?)[\r\n]+" format="| $3 | $2 | $1 ... |$n"}%
 Extract table data 
		
			|  Pos  | 
			 Description  | 
			 Hours  | 
		
		
			|  1  | 
			 onsite troubleshooting  | 
			 3  | 
		
		
			|  2  | 
			 normalizing data to new format  | 
			 10  | 
		
		
			|  3  | 
			 testing server performace  | 
			 5  | 
		
%EXTRACT{topic="FilterPlugin" 
  expand="off" 
  pattern="\|\s*(.*?)\s*\|\s*(.*?)\s*\|\s*(.*?)\s*\|" 
  format="   * it took $3 hours $2$n"
  skip="1"
}%
 MAKEINDEX example 
Compare with 
Philosophy articles needing attention
%MAKEINDEX{
  "Absolute (philosophy), Accident (philosophy), Actualism, Talk:Adam Weishaupt, Alphabet of human thought, Alterity, Analytic philosophy, Analytic-synthetic distinction, Apologism, Bundle theory, Categories (Stoic), Causal chain, Causality, Coherentism, Conscience, Context principle, Contextualism, Cosmology, De dicto and de re, Dialectical monism, Difference (philosophy), Direct reference theory, Discourse ethics, Dualism, Emergentism, Essence, Ethical naturalism, Exemplification, Existentialism, Fatalism, French materialism, Futilitarianism, Hermeneutics, Hypokeimenon, Identity and change, Idolon tribus, Immanent evaluation, Indeterminacy (Philosophy), Individual, Inherence, Kennisbank Filosofie Nederland, Lazy Reason, Mike Lesser, Libertarianism (metaphysics), Logicism, Mad pain and Martian pain, Materialism, Meaning of life, Metakosmia, Metaphysical naturalism, Milesian school, Mind, Monism, Moral imperative, Multiplicity (philosophy), Mystical philosophy of antiquity, Nature (philosophy), Neomodernism, New England Transcendentalists, Nominalism, Non-archimedean time, Non-rigid designator, Object (philosophy), Ontic, Ontological reductionism, Phenomenology, Philosophical realism, Philosophical skepticism, Philosophy, Pluralism (philosophy), Post-structuralism, Postmodern philosophy, Preferentialism Present (time), Problem of universals, Process philosophy, Rational Animal, Rationalist movement, Relativism, Self (philosophy), Solipsism, Species (metaphysics), Specters of Marx, Substance theory, Talk:The Art of Being Right, Truth-value link, Universal (metaphysics), Utilitarianism, Value judgment, World riddle" 
  cols="3"
  format="
$item
"
}%
 Plugin Installation Instructions 
 
-  Download the ZIP file from twiki.org (see below)
  -  Unzip it in your twiki installation directory. Content:       
   					|  File:  | 			 Description:  | 		
   					 data/TWiki/FilterPlugin.txt  | 			    | 		
					 lib/TWiki/Plugins/FilterPlugin/Core.pm  | 			    | 		
					 lib/TWiki/Plugins/FilterPlugin.pm  | 			    | 		
   
 
 
 
-  Visit 
configure in your TWiki installation, and enable the plugin in the {Plugins} section.
 
 
 Plugin Info 
Related Topics: TWikiPlugins, 
DeveloperDocumentationCategory, 
AdminDocumentationCategory, 
TWikiPreferences