Changeset 211
- Timestamp:
- 04/06/07 20:38:18 (2 years ago)
- Files:
-
- trunk/src/core/Spork/lib/Spork/Parser.pm (modified) (4 diffs)
- trunk/src/plugins/ingy/Document-Parser/lib/Document/Parser.pm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/core/Spork/lib/Spork/Parser.pm
r210 r211 1 1 package Spork::Parser; 2 2 use base 'Document::Parser'; 3 use XXX; 3 4 4 5 my $ALPHANUM = '\p{Letter}\p{Number}\pM'; … … 52 53 b => { 53 54 phrases => $all_phrases, 54 match => [ 55 qr/( 56 (?:^|(?<=[^${ALPHANUM}\*])) 57 \*\S[^\*]*\* 58 (?=[^{$ALPHANUM}\*]|\z) 59 )/x, 60 qr/(\{\*.*?\*\})/, 61 ], 55 match => [re_huggy('\*'), qr/(\{\*.*?\*\})/ ], 62 56 }, 63 57 i => { 64 match => [ 65 qr/( 66 (?:^|(?<=[^${ALPHANUM}\/])) 67 \/\S[^\/]*\/ 68 (?=[^{$ALPHANUM}\/]|\z) 69 )/x, 70 qr/(\{\/.*?\/\})/, 71 ], 58 match => [re_huggy('\/'), qr/(\{\/.*?\/\})/ ], 72 59 }, 73 60 tt => { 74 match => [ 75 qr/( 76 (?:^|(?<=[^${ALPHANUM}`])) 77 `\S[^`]*` 78 (?=[^{$ALPHANUM}`]|\z) 79 )/x, 80 qr/(\{`.*?`\})/, 81 ], 61 match => [re_huggy('`'), qr/(\{`.*?`\})/ ], 82 62 }, 83 63 hilite => { 84 match => [ 85 qr/( 86 (?:^|(?<=[^${ALPHANUM}\|])) 87 \|\S[^\|]*\| 88 (?=[^{$ALPHANUM}\|]|\z) 89 )/x, 90 qr/(\{\|.*?\|\})/, 91 ], 64 match => [re_huggy('\|'), qr/(\{\|.*?\|\})/ ], 92 65 }, 93 66 }; 67 } 68 69 sub re_huggy { 70 my $brace1 = shift; 71 my $brace2 = shift || $brace1; 72 73 return qr/ 74 (?:^|(?<=[^${ALPHANUM}${brace1}])) 75 ${brace2}(\S[^${brace2}]*)${brace2} 76 (?=[^{$ALPHANUM}${brace2}]|\z) 77 /x; 94 78 } 95 79 … … 99 83 } 100 84 101 #-------------------------------------------------------------------------------102 # Handler functions103 #104 # Each element type has a handler too. The handler writes out the begin and105 # end events, and controls how the innards are subparsed. Many times the106 # handler will mutate the matched text before it is reparsed.107 #-------------------------------------------------------------------------------108 85 sub handle_indent { 109 86 my $self = shift; … … 153 130 sub handle_hilite { 154 131 my $self = shift; 155 $self->subparse(hilite => parse_phrases => @_, sub { 156 s/^\{?\|(.*)\|\}?$/$1/s; 157 }); 132 $self->subparse(hilite => parse_phrases => @_); 158 133 } 159 134 160 135 sub handle_b { 161 136 my $self = shift; 162 $self->subparse(b => parse_phrases => @_, sub { 163 s/^\{?\*(.*)\*\}?$/$1/s; 164 }); 137 $self->subparse(b => parse_phrases => @_); 165 138 } 166 139 167 140 sub handle_tt { 168 141 my $self = shift; 169 $self->subparse(tt => parse_phrases => @_, sub { 170 s/^\{?`(.*)`\}?$/$1/s; 171 }); 142 $self->subparse(tt => parse_phrases => @_); 172 143 } 173 144 174 145 sub handle_i { 175 146 my $self = shift; 176 $self->subparse(i => parse_phrases => @_, sub { 177 s/^\{?\/(.*)\/\}?$/$1/s; 178 }); 147 $self->subparse(i => parse_phrases => @_); 179 148 } 180 149 trunk/src/plugins/ingy/Document-Parser/lib/Document/Parser.pm
r210 r211 16 16 sub parse { 17 17 my $self = shift; 18 $self->{input} = shift; 18 $self->{input} ||= shift; 19 $self->{grammar} or $self->set_grammar; 20 $self->{ast} or $self->set_grammar; 19 21 $self->parse_blocks('top'); 20 22 return $self->{ast}->content; … … 184 186 my $self = shift; 185 187 my $tag = shift; 186 $tag =~ s/-.*//; 187 $self->{output} .= "-$tag\n"; 188 die; 189 # $tag =~ s/-.*//; 190 # $self->{output} .= "-$tag\n"; 188 191 } 189 192
