]> git.decadent.org.uk Git - maypole.git/commitdiff
This is a (slightly dodgy) way of keeping template documentation with
authorSimon Cozens <simon@simon-cozens.org>
Sat, 13 Mar 2004 14:20:12 +0000 (14:20 +0000)
committerSimon Cozens <simon@simon-cozens.org>
Sat, 13 Mar 2004 14:20:12 +0000 (14:20 +0000)
the template, but then spitting it all out to a POD file in the end.

git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@87 48953598-375a-da11-a14b-00016c27c3ee

doc/StandardTemplates.pod
doc/makedoc.pl [new file with mode: 0644]
templates/factory/view

index dd76189fba0e5bcc1f162872ae7cdccb73956ecf..88727fd45356cd6559c04d6308dc70cd3928807d 100644 (file)
@@ -252,29 +252,7 @@ macros as we come across them.
 
 =head3 F<view> 
 
-The C<view> template takes some objects (usually just one) from
-C<objects> and displays the object's properties in a table. It gets
-the displayable form of a column's name from the hash returned from
-the C<column_names> method:
-
-    <TR>
-        <TD class="field"> [% classmetadata.colnames.$col; %] </TD>
-
-One interesting macro used in this template is C<maybe_link_view>:
-
-        maybe_link_view(item.$col);
-
-This tests whether or not the returned value is an object, and if so,
-creates a link to a page viewing that object; if not, it just displays
-the text as normal. The object is linked using its stringified name;
-by default this calls the C<name> method, or returns the object's ID
-if there is no C<name> method or other stringification method defined.
-
-The C<view> template also displays a list of other objects related to the first
-one via C<has_many> style relationships; this is done by calling the
-C<related_accessors> method - see L<Model/related_accessors> - to return
-a list of has-many accessors. Next it calls each of those accessors, and
-displays the results in a table.
+=template view
 
 =head3 F<edit>
 
diff --git a/doc/makedoc.pl b/doc/makedoc.pl
new file mode 100644 (file)
index 0000000..b6dec2f
--- /dev/null
@@ -0,0 +1,21 @@
+my @templates = <../templates/factory/*>;
+
+my %doc;
+
+for my $template (@templates) {
+    open TEMP, $template or die $!;
+    $template =~ s/.*factory\///g;
+    while (<TEMP>) {
+        next unless /^#?=for doc/... /^#?=cut/
+                    and not /(%#?\]|\[%#?)$/
+                    and not /=cut|=for doc/; # Much magic.
+        s/^\s*#//g;
+        $doc{$template} .= $_;
+    }
+}
+
+while (<>) {
+    if (!/^=template (\w+)/) { print; next; }
+    die "Can't find doc for template $1" unless $doc{$1};
+    print $doc{$1};
+}
index 64c760b11cc0f9672957bf8669828e143e5b2276..0ea412e2291831ecef58891ce43c3f22bd8ac0c2 100644 (file)
@@ -1,3 +1,13 @@
+[%#
+
+=for doc
+
+The C<view> template takes some objects (usually just one) from
+C<objects> and displays the object's properties in a table. 
+
+=cut
+
+%#]
 [% PROCESS macros %]
 [% INCLUDE header %]
 
     NEXT UNLESS item.$col;
 %]
 
-<TR>
+[%# 
+
+=for doc
+
+It gets the displayable form of a column's name from the hash returned
+from the C<column_names> method:
+
+%#]
+
+    <TR>
     <TD class="field"> [% classmetadata.colnames.$col; %] </TD>
     <TD> [%
 
+#=cut
+
     IF col == "url";  # Possibly too much magic.
                 "<A HREF="; item.url; "> "; item.url; "</A>";
     ELSE;
-    maybe_link_view(item.$col); END;
-    %] </TD>
+
+#=for doc
+
+#One interesting macro used in this template is C<maybe_link_view>:
+
+        maybe_link_view(item.$col); 
+%]
+
+[%#
+
+This tests whether or not the returned value is an object, and if so,
+creates a link to a page viewing that object; if not, it just displays
+the text as normal. The object is linked using its stringified name;
+by default this calls the C<name> method, or returns the object's ID
+if there is no C<name> method or other stringification method defined.
+
+=cut
+
+#%] 
+
+[% END; %]
+ </TD>
 </TR>
 [% END; %]
 </TABLE>
+
+[%#
+
+=for doc
+
+The C<view> template also displays a list of other objects related to the first
+one via C<has_many> style relationships; this is done by calling the
+C<related_accessors> method - see L<Model/related_accessors> - to return
+a list of has-many accessors. Next it calls each of those accessors, and
+displays the results in a table.
+
+#%]
 [%
     view_related(item);
+
+#=cut
+
     button(item, "edit");
     button(item, "delete");
 %]