build documentation body disinclined/dl.future/master disinclined/master dl.future/master master
authorDylan Lloyd <dylan@dylansserver.com>
Tue, 6 Aug 2013 08:07:51 +0000 (04:07 -0400)
committerDylan Lloyd <dylan@dylansserver.com>
Tue, 6 Aug 2013 08:07:51 +0000 (04:07 -0400)
lib/DuckDuckDocs/View/HTML.pm
root/templates/index.tx

index cc44f6d..d310ab0 100644 (file)
@@ -11,18 +11,18 @@ my $html = HTML::Tiny->new(mode => 'html');
 
 sub build_menu {
     my %menu;
-    sub recurse {
+    sub _build_menu {
         my ( $docs, $menu ) = @_;
         for (keys %{$docs}) {
             if (ref $docs->{$_} eq 'HASH') {
                 $menu->{$_} = {};
-                recurse($docs->{$_}, $menu->{$_});
+                _build_menu($docs->{$_}, $menu->{$_});
             } else {
                 $menu->{$_} = $docs->{$_};
             }
         }
     };
-    recurse shift, \%menu;
+    _build_menu shift, \%menu;
     $html->ul({ id => 'menu' }, [map {
         $html->li($html->a({ href => "#$_" }, $_))
     } grep {
@@ -30,6 +30,22 @@ sub build_menu {
     } keys %menu]);
 }
 
+sub build_docs {
+    my $body;
+    sub _build_docs {
+        my ( $docs, $body ) = @_;
+        for (keys %{$docs}) {
+            if (ref $docs->{$_} eq 'HASH') {
+                _build_docs($docs->{$_}, $body);
+            } else {
+                $$body .= $html->div({ id => $_ }, $docs->{$_});
+            }
+        }
+    };
+    _build_docs shift, \$body;
+    return $body;
+}
+
 __PACKAGE__->config(
     template_extension => '.tx',
     path => [ 'root/templates', ],
index a294c6e..7fca426 100644 (file)
@@ -4,9 +4,5 @@
 </div>
 <div id='container'>
     <h1>Docs</h1>
-    : for $docs.kv() -> $pair {
-        <div id='<: $pair.key :>'>
-            <: mark_raw($pair.value) :>
-        </div>
-    : }
+    <: mark_raw(build_docs($docs)) :>
 </div>