regex ajout brush SyntaxHightlither
Bonjour
Voilà je patine pas mal sur l'ajout d'une brush.
En fait j'utilise un moteur de Template avec des fichiers TPL et quand je veux afficher du code html avec {VALEUR} alors celui-ci est transformer en html dans tinyMCE.
J'ai quand même essayer de suivre les explication mais là je n'y arrive plus ...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
/**
* SyntaxHighlighter
* http://alexgorbatchev.com/SyntaxHighlighter
*
* SyntaxHighlighter is donationware. If you are using it, please donate.
* http://alexgorbatchev.com/SyntaxHighlighter/donate.html
*
* @version
* 3.0.83 (July 02 2010)
*
* @copyright
* Copyright (C) 2004-2010 Alex Gorbatchev.
*
* @license
* Dual licensed under the MIT and GPL licenses.
*/
;(function()
{
// CommonJS
typeof (require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
function Brush()
{
function process(match, regexInfo)
{
var constructor = SyntaxHighlighter.Match,
code = match[0],
tag = new XRegExp('({|{)[\\s\\/\\?]*(?{name}[:\\w-\\.]+)', 'xg').exec(code),
result = []
;
if (match.attributes != null)
{
var attributes,
regex = new XRegExp('(?{name} [\\w:\\-\\.]+)' +'\\s*=\\s*' +'(?{value} ".*?"|\'.*?\'|\\w+)','xg');
while ((attributes = regex.exec(code)) != null)
{
result.push(new constructor(attributes.name, match.index + attributes.index, 'color1'));
result.push(new constructor(attributes.value, match.index + attributes.index + attributes[0].indexOf(attributes.value), 'string'));
}
}
if (tag != null)
result.push(
new constructor(tag.name, match.index + tag[0].indexOf(tag.name), 'keyword')
);
return result;
}
this.regexList = [
{ regex: new XRegExp('(\\{|{)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\}|})', 'gm'), css: 'color2' }, // <![ ... [ ... ]]>
{ regex: SyntaxHighlighter.regexLib.xmlComments, css: 'comments' }, // <!-- ... -->
{ regex: new XRegExp('({|{)[\\s\\/\\?]*(\\w+)(?<attributes>.*?)[\\s\\/\\?]*(}|})', 'sg'), func: process }
];
};
Brush.prototype = new SyntaxHighlighter.Highlighter();
Brush.aliases = ['TPL','tpl'];
SyntaxHighlighter.brushes.Tpl = Brush;
// CommonJS
typeof (exports) != 'undefined' ? exports.Brush = Brush : null;
})(); |
Au cas ou voici les regex de mon fichier Template :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
// Définition des variables à transformer dans la page
public function SetVar ( array $vars )
{
if ( !is_array ( $vars ) )
{
return false;
}
foreach ( $vars as $var => $val )
{
if ( preg_match ( "#^[A-Z\#_]{1,}$#" , $var ) )
{
$this->vars[$var] = $val;
}
}
return true;
}
// Retourne le texte de la page
public function Parse ()
{
// Transformation des blocs
foreach ( $this->blocks as $block_name => $block_content )
{
// Contenu du bloc
$block_ctn = preg_replace ( "#^(.{0,})<!--" . $block_name . ":START-->(.+)<!--" . $block_name . ":END-->(.{0,})$#sU" , "$2" , $this->texte );
$block_txt = '';
// Pour chaque ligne du bloc
foreach ( $block_content as $block_row )
{
$block_txt .= $block_ctn;
// Pour chaque variable de la ligne
foreach ( $block_row as $var => $val )
{
$block_txt = str_replace ( '{' . $block_name . ':' . $var . '}' , $val , $block_txt );
}
}
$this->texte = preg_replace ( "#^(.{0,})<!--" . $block_name . ":START-->(.+)<!--" . $block_name . ":END-->(.{0,})$#sU" , "$1" . $block_txt . "$3" , $this->texte );
}
// Transformation des variables
foreach ( $this->vars as $var => $val )
{
$this->texte = str_replace ( '{' . $var . '}' , $val , $this->texte );
}
return $this->texte;
}
// Définition d'un bloc
public function SetBlock ( $name , array $vars )
{
if ( !is_array ( $vars ) || !preg_match ( "#^[A-Z\#_]{1,}$#" , $name ) )
{
return false;
}
if ( !isset ( $this->blocks[$name] ) )
{
$this->blocks[$name] = array ();
}
$this->blocks[$name][] = $vars;
return true;
}
} |