Changeset 221
- Timestamp:
- 04/07/07 00:11:48 (2 years ago)
- Files:
-
- trunk/lib/Document/Tools.pm (added)
- trunk/src/core/Spork/lib/Spork/Parser.pm (modified) (1 diff)
- trunk/src/plugins/ingy/Document-Formatter/Changes (added)
- trunk/src/plugins/ingy/Document-Formatter/MANIFEST (added)
- trunk/src/plugins/ingy/Document-Formatter/Makefile.PL (added)
- trunk/src/plugins/ingy/Document-Formatter/README (added)
- trunk/src/plugins/ingy/Document-Formatter/lib/Document/Parser.pm (modified) (2 diffs)
- trunk/src/plugins/ingy/Document-Formatter/lib/Document/Tools.pm (added)
- trunk/src/plugins/ingy/Document-Formatter/t (added)
- trunk/src/plugins/ingy/Document-Formatter/t/compile.t (added)
- trunk/src/plugins/modules.mk (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/core/Spork/lib/Spork/Parser.pm
r215 r221 4 4 use base 'Document::Parser'; 5 5 6 sub set_ast {6 sub create_ast { 7 7 require Document::AST::Tree; 8 my $self = shift; 9 $self->{ast} = Document::AST::Tree->new; 8 return Document::AST::Tree->new; 10 9 } 11 10 12 sub set_grammar { 13 my $self = shift; 11 sub create_grammar { 14 12 my $all_phrases = [qw(b i tt hilite)]; 15 13 my $all_blocks = [qw(indent center h2 ul pre p)]; 16 $self->{grammar} = 17 { 14 return { 18 15 top => { 19 16 blocks => $all_blocks, trunk/src/plugins/ingy/Document-Formatter/lib/Document/Parser.pm
r218 r221 17 17 my $self = shift; 18 18 $self->{input} ||= shift; 19 $self->{ grammar} or $self->set_grammar;20 $self->{ ast} or $self->set_ast;19 $self->{ast} ||= $self->set_ast; 20 $self->{grammar} ||= $self->set_grammar; 21 21 $self->parse_blocks('top'); 22 return $self->{ast}->content; 22 my $ast = $self->{ast}->content; 23 delete $self->{ast}; 24 return $ast; 25 } 26 27 sub set_ast { 28 my $self = shift; 29 $self->{ast} = shift || $self->create_ast; 30 } 31 32 sub set_grammar { 33 my $self = shift; 34 $self->{grammar} = shift || $self->create_grammar; 23 35 } 24 36 … … 170 182 1; 171 183 172 =head1 173 174 =cut 184 =head1 NAME 185 186 Document::Parser - Base Class for Creating Text Format Parsers 187 188 =head1 SYNOPSIS 189 190 package MyParser; 191 use base 'Document::Parser'; 192 193 sub create_grammar { 194 return { 195 # ... define a grammar hash here ... 196 }; 197 } 198 =head1 DESCRIPTION 199 200 Document::Parser is a base class that you can use to easily generate a parse 201 for text document markups (like Wiki or POD markups). 202 203 See this parser as an example: 204 205 http://svn.kwiki.org/kwiki/trunk/src/core/Spork/lib/Spork/Parser.pm 206 207 And this module for usage of the parser: 208 209 http://svn.kwiki.org/kwiki/trunk/src/core/Spork/lib/Spork/Formatter2.pm 210 211 =head1 AUTHOR 212 213 Ingy döt Net <ingy@cpan.org> 214 215 =head1 COPYRIGHT 216 217 Copyright (c) 2007. Ingy döt Net. All rights reserved. 218 219 This program is free software; you can redistribute it and/or modify it 220 under the same terms as Perl itself. 221 222 See http://www.perl.com/perl/misc/Artistic.html trunk/src/plugins/modules.mk
r220 r221 114 114 Document/AST.pm \ 115 115 Document/Parser.pm \ 116 Document/Tools.pm \ 116 117 Kwiki/AdSense.pm \ 117 118 Kwiki/BreadCrumbs.pm \
