[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