Thread CMS Tags parsen (29 answers)
Opened by cbxk1xg at 2010-11-26 16:27

cbxk1xg
 2011-05-25 12:43
#149151 #149151
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Ich verstehe die Kritik. Deshalb überabeite ich ja meine gruselige Syntax. Ich würde jetzt halt nur gerne Wissen, wie ich den Tag-Content, die Attribute und deren Werte an eine Sub übergeben kann um dann damit etwas zu machen.

Hier noch mal der veränderte Ansatz mit BB-konformen Code.
Code (perl): (dl )
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
#!/usr/bin/perl -T

use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use Parse::BBCode;

print "Content-type: text; charset=utf-8\n\n";

my $teststring = "[b]bold[/b] [host] [pic src=/mfolder/myimage.jpg w=100px h=50px style=test] some text
[infobox headline=Hello world!][pic w=50 h=50 style=left]hier ist mein text.[/infobox] [gallery style=cool navi=standard]my/path/[/gallery] [host]";

    my $p = Parse::BBCode->new({
                        direct_attributes => 0,
                        #close_open_tags   => 1,
            tags => {
                b   => '<b>%{parse}s</b>',
                pic => {output => '%{src}A,%{style}A,%{w}A,%{h}A,%a,%s,%{parse}s',
                                        class => 'block',
                                        single => 1
                                                },
                gallery => {output => '%{gallery}a',
                                        class => 'block',
                                        single => 0
                                                },
                infobox => {output => '%{infobox}s',
                                        class => 'block',
                                        single => 0
                                                },
                host => {output => 'http://www.example.com/',
                                        class => 'block',
                                        single => 1
                                                },
            },
            escapes => {

                pic => sub {
                    my ($w, $h) = @_;
                                        # Hier will ich die key/vals an eine Sub übergeben.
                    return "{pic $w, $h}";
                },
                gallery => sub {
                    my ($parser, $tag, $text) = @_;
                    return "{gallery $text/}";
                },
                infobox => sub {
                    my ($parser, $tag, $text) = @_;
                    return "{infobox $text/}";
                },

            },
        }
    );
    my $parsed = $p->render($teststring);

print "<h2>input</h2>\n";
print $teststring;
print "<h2>output</h2>\n";
print $parsed;

View full thread CMS Tags parsen