81 |
{ |
{ |
82 |
my $self = shift; |
my $self = shift; |
83 |
my %h = $self->attributes; |
my %h = $self->attributes; |
84 |
return join('', |
|
85 |
|
return join('', |
86 |
'<', $self->name, |
'<', $self->name, |
87 |
map(" $_='$h{$_}'", sort $attr_sorter keys %h), '>'); |
map(" $_='\Q$h{$_}\E'", sort $attr_sorter keys %h), '>'); |
88 |
} |
} |
89 |
|
|
90 |
sub canonical_end |
sub canonical_end |
97 |
sub code_start |
sub code_start |
98 |
{ |
{ |
99 |
my $self = shift; |
my $self = shift; |
100 |
|
my %h = $self->attributes; |
101 |
|
my $code = '$OUTPUT .= "<' . $self->name; |
102 |
|
|
103 |
return sprintf ("\$OUTPUT .= \"%s\";\n", |
foreach (keys %h) |
104 |
quotemeta $self->canonical_start); |
{ |
105 |
|
if ($h{$_} =~ /^neb:(.*)$/) |
106 |
|
{ |
107 |
|
$code .= sprintf ' %s=\" . %s . \"', $_, $1; |
108 |
|
} |
109 |
|
else |
110 |
|
{ |
111 |
|
$code .= " $_=\\\"\Q$h{$_}\E\\\""; |
112 |
|
} |
113 |
|
} |
114 |
|
|
115 |
|
$code .= ">\"; \# Tag::code_start\n"; |
116 |
|
|
117 |
|
return $code; |
118 |
} |
} |
119 |
|
|
120 |
sub code_end |
sub code_end |
122 |
my $self = shift; |
my $self = shift; |
123 |
|
|
124 |
return sprintf ("\$OUTPUT .= \"%s\";\n", |
return sprintf ("\$OUTPUT .= \"%s\";\n", |
125 |
quotemeta $self->canonical_end); |
$self->canonical_end); |
126 |
} |
} |
127 |
|
|
128 |
sub code |
sub code |