* [PATCH 04/18] www: allow html_oneshot to take an array arg
2022-08-29 9:26 6% [PATCH 00/18] WWW: patch, tree, git glossary Eric Wong
@ 2022-08-29 9:26 7% ` Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2022-08-29 9:26 UTC (permalink / raw)
To: meta
Another step towards making our internal APIs more writev-like
and reducing the copies needed for `join' or `.=' concatenation.
---
lib/PublicInbox/View.pm | 4 ++--
lib/PublicInbox/ViewVCS.pm | 6 +++---
lib/PublicInbox/WWW.pm | 2 +-
lib/PublicInbox/WwwAltId.pm | 6 +++---
lib/PublicInbox/WwwStream.pm | 7 +++----
lib/PublicInbox/WwwText.pm | 2 +-
6 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index 158feb6a..5fbdd1fa 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -64,7 +64,7 @@ sub no_over_html ($) {
}
delete $ctx->{obuf};
eval { $$obuf .= html_footer($ctx, $eml) };
- html_oneshot($ctx, 200, $obuf);
+ html_oneshot($ctx, 200, $$obuf);
}
# public functions: (unstable)
@@ -1222,7 +1222,7 @@ sub pagination_footer ($$) {
$next = $next ? "$next | " : ' | ';
$prev .= qq[ | <a\nhref="$latest">latest</a>];
}
- ($next || $prev) ? \"<hr><pre>page: $next$prev</pre>" : \'';
+ ($next || $prev) ? "<hr><pre>page: $next$prev</pre>" : '';
}
sub paginate_recent ($$) {
diff --git a/lib/PublicInbox/ViewVCS.pm b/lib/PublicInbox/ViewVCS.pm
index b04a5672..23524ac0 100644
--- a/lib/PublicInbox/ViewVCS.pm
+++ b/lib/PublicInbox/ViewVCS.pm
@@ -36,11 +36,11 @@ my $BIN_DETECT = 8000; # same as git
my $SHOW_FMT = '--pretty=format:'.join('%n', '%P', '%p', '%H', '%T', '%s',
'%an <%ae> %ai', '%cn <%ce> %ci', '%b%x00');
-sub html_page ($$$) {
- my ($ctx, $code, $str) = @_;
+sub html_page ($$;@) {
+ my ($ctx, $code) = @_[0, 1];
my $wcb = delete $ctx->{-wcb};
$ctx->{-upfx} = '../../'; # from "/$INBOX/$OID/s/"
- my $res = html_oneshot($ctx, $code, \$str);
+ my $res = html_oneshot($ctx, $code, @_[2..$#_]);
$wcb ? $wcb->($res) : $res;
}
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index 77f463d3..1df5572d 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -320,7 +320,7 @@ sub get_altid_dump {
sub need {
my ($ctx, $extra) = @_;
require PublicInbox::WwwStream;
- PublicInbox::WwwStream::html_oneshot($ctx, 501, \<<EOF);
+ PublicInbox::WwwStream::html_oneshot($ctx, 501, <<EOF);
<pre>$extra is not available for this public-inbox
<a\nhref="../">Return to index</a></pre>
EOF
diff --git a/lib/PublicInbox/WwwAltId.pm b/lib/PublicInbox/WwwAltId.pm
index e107dfe0..47056160 100644
--- a/lib/PublicInbox/WwwAltId.pm
+++ b/lib/PublicInbox/WwwAltId.pm
@@ -33,14 +33,14 @@ sub sqldump ($$) {
my $altid_map = $ibx->altid_map;
my $fn = $altid_map->{$altid_pfx};
unless (defined $fn) {
- return html_oneshot($ctx, 404, \<<EOF);
+ return html_oneshot($ctx, 404, <<EOF);
<pre>`$altid_pfx' is not a valid altid for this inbox</pre>
EOF
}
if ($env->{REQUEST_METHOD} ne 'POST') {
my $url = $ibx->base_url($ctx->{env}) . "$altid_pfx.sql.gz";
- return html_oneshot($ctx, 405, \<<EOF);
+ return html_oneshot($ctx, 405, <<EOF);
<pre>A POST request is required to retrieve $altid_pfx.sql.gz
curl -d '' -O $url
@@ -54,7 +54,7 @@ or
EOF
}
- $sqlite3 //= which('sqlite3') // return html_oneshot($ctx, 501, \<<EOF);
+ $sqlite3 //= which('sqlite3') // return html_oneshot($ctx, 501, <<EOF);
<pre>sqlite3 not available
The administrator needs to install the sqlite3(1) binary
diff --git a/lib/PublicInbox/WwwStream.pm b/lib/PublicInbox/WwwStream.pm
index ab006c40..f2777fdc 100644
--- a/lib/PublicInbox/WwwStream.pm
+++ b/lib/PublicInbox/WwwStream.pm
@@ -164,8 +164,8 @@ sub getline {
$ctx->zflush(_html_end($ctx));
}
-sub html_oneshot ($$;$) {
- my ($ctx, $code, $sref) = @_;
+sub html_oneshot ($$;@) {
+ my ($ctx, $code) = @_[0, 1];
my $res_hdr = [ 'Content-Type' => 'text/html; charset=UTF-8',
'Content-Length' => undef ];
bless $ctx, __PACKAGE__;
@@ -174,8 +174,7 @@ sub html_oneshot ($$;$) {
$ctx->zmore(html_top($ctx));
$ctx->{base_url} = base_url($ctx);
};
- $ctx->zmore($$sref) if $sref;
- my $bdy = $ctx->zflush(_html_end($ctx));
+ my $bdy = $ctx->zflush(@_[2..$#_], _html_end($ctx));
$res_hdr->[3] = length($bdy);
[ $code, $res_hdr, [ $bdy ] ]
}
diff --git a/lib/PublicInbox/WwwText.pm b/lib/PublicInbox/WwwText.pm
index c6957e81..3f840c44 100644
--- a/lib/PublicInbox/WwwText.pm
+++ b/lib/PublicInbox/WwwText.pm
@@ -70,7 +70,7 @@ sub get_text {
$txt =~ s!\bPOP3\b!<a\nid=pop3>POP3</a>!;
$txt =~ s!\b(Newsgroups?)\b!<a\nid=nntp>$1</a>!;
$txt =~ s!\bIMAP\b!<a\nid=imap>IMAP</a>!;
- PublicInbox::WwwStream::html_oneshot($ctx, $code, \$txt);
+ PublicInbox::WwwStream::html_oneshot($ctx, $code, $txt);
}
sub _srch_prefix ($$) {
^ permalink raw reply related [relevance 7%]
* [PATCH 00/18] WWW: patch, tree, git glossary
@ 2022-08-29 9:26 6% Eric Wong
2022-08-29 9:26 7% ` [PATCH 04/18] www: allow html_oneshot to take an array arg Eric Wong
0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2022-08-29 9:26 UTC (permalink / raw)
To: meta
Raw format-patch and tree HTML output now supported for git
output. I suppose tags can be displayed, too, at some point...
One thing I'm not 100% sure about is adding a git-related
glossary for stuff like trees, commits, etc... It seems
to bloat the page a bit, but it could be useful in slowly
teaching basic git data concepts to beginners.
I suspect folks who have trouble learning git too focused on the
commands rather than the data concepts. (IMHO, the same goes
for learning projects based on studying code vs studying
(DB schemas || struct layouts)).
I snuck one speedup in there, hopefully more to come...
Eric Wong (18):
solver: create tmpdir lazily
viewvcs: share File::Temp::Dir with solver
viewvcs: delay stringification of solver debug log
www: allow html_oneshot to take an array arg
viewvcs: use array for highlighted blob display
viewvcs: add patch download link for single-parent commits
viewvcs: author date links to contemporary messages
view: speed up /$INBOX/ landing page by 0.5-1.0%
treewide: ditch inbox->recent method
view: /$INBOX/: show "messages from $old to $new"
view: cleanups and reuse for {obuf} preparation
www: atom: fix "changed" href to nowhere
www: provide text/help/#search anchor
solver: early make hints detection more robust
viewvcs: add tree view
viewvcs: reduce hash assignments for commit info
viewvcs: add glossary for commit
viewvcs: show "blob $OID" rather than "$OID blob"
lib/PublicInbox/ExtSearch.pm | 1 -
lib/PublicInbox/Inbox.pm | 5 -
lib/PublicInbox/LeiSavedSearch.pm | 1 -
lib/PublicInbox/LeiXSearch.pm | 7 -
lib/PublicInbox/SolverGit.pm | 22 +-
lib/PublicInbox/View.pm | 101 ++++-----
lib/PublicInbox/ViewDiff.pm | 18 +-
lib/PublicInbox/ViewVCS.pm | 341 ++++++++++++++++++++----------
lib/PublicInbox/WWW.pm | 2 +-
lib/PublicInbox/WwwAltId.pm | 6 +-
lib/PublicInbox/WwwAtomStream.pm | 1 +
lib/PublicInbox/WwwStream.pm | 7 +-
lib/PublicInbox/WwwText.pm | 3 +-
t/convert-compact.t | 2 +-
t/indexlevels-mirror.t | 10 +-
t/lei_xsearch.t | 2 +-
t/plack.t | 2 +-
t/replace.t | 4 +-
t/solver_git.t | 3 +-
t/v1-add-remove-add.t | 2 +-
t/v2-add-remove-add.t | 2 +-
21 files changed, 333 insertions(+), 209 deletions(-)
^ permalink raw reply [relevance 6%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2022-08-29 9:26 6% [PATCH 00/18] WWW: patch, tree, git glossary Eric Wong
2022-08-29 9:26 7% ` [PATCH 04/18] www: allow html_oneshot to take an array arg Eric Wong
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).