[svn:parrot] r36246 - in trunk/languages/pod: . src/Pod/DocTree src/parser
kjs at svn.parrot.org
kjs at svn.parrot.org
Sun Feb 1 13:57:10 UTC 2009
Author: kjs
Date: Sun Feb 1 13:57:10 2009
New Revision: 36246
URL: https://trac.parrot.org/parrot/changeset/36246
Log:
[pod] when using p6metaclass, use '::' to as ns separator ['A::B'], not ['A';'B'].
+ attempt to add to-html conversion, but failing miserably. There's also something wrong with the inheritance of Pod::DocTree from PCT::Node (no method 'attr', 'get_string').
Modified:
trunk/languages/pod/pod.pir
trunk/languages/pod/src/Pod/DocTree/Node.pir
trunk/languages/pod/src/parser/actions.pm
Modified: trunk/languages/pod/pod.pir
==============================================================================
--- trunk/languages/pod/pod.pir Sun Feb 1 13:24:38 2009 (r36245)
+++ trunk/languages/pod/pod.pir Sun Feb 1 13:57:10 2009 (r36246)
@@ -21,23 +21,69 @@
=cut
-.sub 'print'
- .param string arg
- print arg
-.end
+
.HLL 'pod'
-.namespace [ 'Pod';'Compiler' ]
+.loadlib 'pod_group'
+
+.include 'src/Pod/DocTree/Node.pir'
+
+.namespace [ 'Pod';'DocTree';'Compiler' ]
+
+.sub 'to_html' :method
+ .param pmc node
+ .param pmc adverbs :slurpy :named
+.end
+
+.sub 'as_html' :method :multi(_,['Pod';'DocTree';'File'])
+ .param pmc node
+ .local string html
+ html = "<html>"
+
+
+ html .= "</html>"
+
+ .return (html)
+.end
+
+.sub 'as_html' :method :multi(_,['Pod';'DocTree';'Heading'])
+ .param pmc node
+ .local string html
+ .local string level
+ # create opening heading tag, e.g. <h1>
+ html = "<h"
+ $I0 = node."level"()
+ level = $I0
+ html .= level
+ html .= ">"
+
+ # create closin heading tag, e.g. </h1>
+ html .= "</h"
+ html .= level
+ html .= ">"
+
+.end
+
+
+
+.namespace [ 'Pod';'Compiler' ]
.sub 'doctree' :method
- .param pmc match
- .param pmc namedargs :named :slurpy
- print "doctree"
+ .param pmc node
+ .param pmc adverbs :slurpy :named
.end
-.loadlib 'pod_group'
+.sub 'html' :method
+ .param pmc source
+ .param pmc adverbs :slurpy :named
+
+ $P0 = new ['Pod';'HTML';'Compiler']
+ .tailcall $P0.'to_html'(source, adverbs :flat :named)
+.end
+
+
.sub '' :anon :load :init
load_bytecode 'PCT.pbc'
@@ -64,10 +110,12 @@
## set the compilation stages in the @stages attribute
- $P0 = split ' ', 'parse doctree'
+ $P0 = split ' ', 'parse doctree html'
setattribute $P1, '@stages', $P0
.end
+
+
=item main(args :slurpy) :main
Start compilation by passing any command line C<args>
@@ -82,7 +130,7 @@
$P1 = $P0.'command_line'(args)
.end
-.include 'src/Pod/DocTree/Node.pir'
+
=back
Modified: trunk/languages/pod/src/Pod/DocTree/Node.pir
==============================================================================
--- trunk/languages/pod/src/Pod/DocTree/Node.pir Sun Feb 1 13:24:38 2009 (r36245)
+++ trunk/languages/pod/src/Pod/DocTree/Node.pir Sun Feb 1 13:57:10 2009 (r36246)
@@ -17,21 +17,21 @@
.local pmc p6meta, parent, base
p6meta = new 'P6metaclass'
parent = get_class ['PCT';'Node']
- base = p6meta.'new_class'('Pod;DocTree;Node', 'parent'=>parent)
+ base = p6meta.'new_class'('Pod::DocTree::Node', 'parent'=>parent)
- p6meta.'new_class'('Pod;DocTree;File', 'parent'=>base)
- p6meta.'new_class'('Pod;DocTree;Heading', 'parent'=>base)
- p6meta.'new_class'('Pod;DocTree;Block', 'parent'=>base)
- p6meta.'new_class'('Pod;DocTree;List', 'parent'=>base)
- p6meta.'new_class'('Pod;DocTree;Item', 'parent'=>base)
- p6meta.'new_class'('Pod;DocTree;Text', 'parent'=>base)
- p6meta.'new_class'('Pod;DocTree;Format', 'parent'=>base)
- p6meta.'new_class'('Pod;DocTree;Paragraph', 'parent'=>base)
- p6meta.'new_class'('Pod;DocTree;Literal', 'parent'=>base)
-
- .return ()
+ p6meta.'new_class'('Pod::DocTree::File', 'parent'=>base)
+ p6meta.'new_class'('Pod::DocTree::Heading', 'parent'=>base)
+ p6meta.'new_class'('Pod::DocTree::Block', 'parent'=>base)
+ p6meta.'new_class'('Pod::DocTree::List', 'parent'=>base)
+ p6meta.'new_class'('Pod::DocTree::Item', 'parent'=>base)
+ p6meta.'new_class'('Pod::DocTree::Text', 'parent'=>base)
+ p6meta.'new_class'('Pod::DocTree::Format', 'parent'=>base)
+ p6meta.'new_class'('Pod::DocTree::Paragraph', 'parent'=>base)
+ p6meta.'new_class'('Pod::DocTree::Literal', 'parent'=>base)
.end
+
+
=head1 Pod;DocTree Node Types
=head2 Pod;DocTree;Node
@@ -73,6 +73,8 @@
=cut
+
+
.namespace [ 'Pod';'DocTree';'Heading' ]
.sub 'level' :method
@@ -199,7 +201,6 @@
=cut
-
# Local Variables:
# mode: pir
# fill-column: 100
Modified: trunk/languages/pod/src/parser/actions.pm
==============================================================================
--- trunk/languages/pod/src/parser/actions.pm Sun Feb 1 13:24:38 2009 (r36245)
+++ trunk/languages/pod/src/parser/actions.pm Sun Feb 1 13:57:10 2009 (r36246)
@@ -20,7 +20,7 @@
method TOP($/) {
- my $file := Pod::DocTree::File.new();
+ my $file := PAST::Block.new();
for $<pod_section> {
$file.push( $( $_ ) );
@@ -60,7 +60,6 @@
}
method heading($/) {
- say("heading");
my $heading := Pod::DocTree::Heading.new();
## set the level of the heading
$heading.level($<digit>);
More information about the parrot-commits
mailing list