about summary refs log tree commit homepage
path: root/lib/PublicInbox/Feed.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-04-02 22:32:01 +0000
committerEric Wong <e@80x24.org>2016-04-02 22:33:56 +0000
commit0b766f54ad829d08cc7bd66fffc8ed8515241dc3 (patch)
tree5c6f10417a81ae530a78f04eb608a510ee2d580a /lib/PublicInbox/Feed.pm
parent83a6b503812e4f17ea2eab10c7ae1ade6427f821 (diff)
downloadpublic-inbox-0b766f54ad829d08cc7bd66fffc8ed8515241dc3.tar.gz
Reduce stack depth of arguments and rely more on state hashref
to store response state.  We may end up shoving everything
in ctx eventually.
Diffstat (limited to 'lib/PublicInbox/Feed.pm')
-rw-r--r--lib/PublicInbox/Feed.pm14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm
index ec6925dd..54fa6e5d 100644
--- a/lib/PublicInbox/Feed.pm
+++ b/lib/PublicInbox/Feed.pm
@@ -111,15 +111,15 @@ sub emit_atom_thread {
 }
 
 sub emit_html_index {
-        my ($cb, $ctx) = @_;
-        my $fh = $cb->([200,['Content-Type'=>'text/html; charset=UTF-8']]);
+        my ($res, $ctx) = @_;
+        my $fh = $res->([200,['Content-Type'=>'text/html; charset=UTF-8']]);
 
         my $max = $ctx->{max} || MAX_PER_PAGE;
         my $feed_opts = get_feedopts($ctx);
 
         my $title = ascii_html($feed_opts->{description} || '');
         my ($footer, $param, $last);
-        my $state = { ctx => $ctx, seen => {}, anchor_idx => 0 };
+        my $state = { ctx => $ctx, seen => {}, anchor_idx => 0, fh => $fh };
         my $srch = $ctx->{srch};
 
         my $top = "<b>$title</b> (<a\nhref=\"new.atom\">Atom feed</a>)";
@@ -144,10 +144,10 @@ sub emit_html_index {
         my $cgi = $ctx->{cgi};
         if ($cgi && !$cgi->param('r') && $srch) {
                 $state->{srch} = $srch;
-                $last = PublicInbox::View::emit_index_topics($state, $fh);
+                $last = PublicInbox::View::emit_index_topics($state);
                 $param = 'o';
         } else {
-                $last = emit_index_nosrch($ctx, $state, $fh);
+                $last = emit_index_nosrch($ctx, $state);
                 $param = 'r';
         }
         $footer = nav_footer($cgi, $last, $feed_opts, $state, $param);
@@ -161,14 +161,14 @@ sub emit_html_index {
 }
 
 sub emit_index_nosrch {
-        my ($ctx, $state, $fh) = @_;
+        my ($ctx, $state) = @_;
         my $git = $ctx->{git} ||= PublicInbox::Git->new($ctx->{git_dir});
         my (undef, $last) = each_recent_blob($ctx, sub {
                 my ($path, $commit, $ts, $u, $subj) = @_;
                 $state->{first} ||= $commit;
 
                 my $mime = do_cat_mail($git, $path) or return 0;
-                PublicInbox::View::index_entry($fh, $mime, 0, $state);
+                PublicInbox::View::index_entry($mime, 0, $state);
                 1;
         });
         Email::Address->purge_cache;