From: Jakub Narebski <jnareb@gmail.com>
To: git@vger.kernel.org
Subject: [PATCH 2/2] gitweb: Use character or octal escape codes (and add span.cntrl) in esc_path
Date: Wed, 8 Nov 2006 11:50:07 +0100 [thread overview]
Message-ID: <200611081150.07469.jnareb@gmail.com> (raw)
In-Reply-To: <200611081147.52952.jnareb@gmail.com>
Instead of simply hiding control characters in esc_path by replacing
them with '?', use Character Escape Codes (CEC) i.e. alphabetic
backslash sequences like those found in C programming language and
many other languages influenced by it, such as Java and Perl. If
control characted doesn't have corresponding character escape code,
use octal char sequence to escape it.
Additionally use 'span' element with 'cntrl' attribute to mark escaped
control characters. Add style for span.cntrl in the CSS.
Below there is alternative quoting using Unicode Printable
Representation (PR), i.e. replace control characters with appropriate
Unicode Control Pictures U+2400 - U+243F (9216 - 9279), the Unicode
characters reserved for representing control characters when it is
necessary to print or display them:
sub esc_path {
my $str = shift;
$str = esc_html($str);
$str =~ s!([[:cntrl:]])!sprintf('<span class="cntrl">&#%04d;</span>', 0x2400+ord($1))!eg;
return $str;
}
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
The styling (span.cntrl style) isn't best, I agree.
gitweb/gitweb.css | 7 +++++++
gitweb/gitweb.perl | 25 ++++++++++++++++++++++++-
2 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/gitweb/gitweb.css b/gitweb/gitweb.css
index 0eda982..e19e6bc 100644
--- a/gitweb/gitweb.css
+++ b/gitweb/gitweb.css
@@ -16,6 +16,13 @@ a:hover, a:visited, a:active {
color: #880000;
}
+span.cntrl {
+ border: dashed #aaaaaa;
+ border-width: 1px;
+ padding: 0px 2px 0px 2px;
+ margin: 0px 2px 0px 2px;
+}
+
img.logo {
float: right;
border-width: 0px;
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 32926f9..c9b16b5 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -587,8 +587,31 @@ sub esc_html ($;%) {
# quote control characters and escape filename to HTML
sub esc_path {
my $str = shift;
+
+ sub quot {
+ my $seq = shift;
+ my %es = ( # character escape codes, aka escape sequences
+ "\t" => '\t', # tab (HT, TAB)
+ "\n" => '\n', # newline (NL)
+ "\r" => '\r', # return (CR)
+ "\f" => '\f', # form feed (FF)
+ "\b" => '\b', # backspace (BS)
+ "\a" => '\a', # alarm (bell) (BEL)
+ "\e" => '\e', # escape (ESC)
+ "\013" => '\v', # vertical tab (VT)
+ "\000" => '\0', # null character (NUL)
+ );
+
+ if (exists $es{$seq}) {
+ # C escape sequence, aka character escape code
+ return $es{$seq};
+ }
+ # octal char sequence
+ return sprintf('\%03o', ord($seq));
+ }
+
$str = esc_html($str);
- $str =~ s/[[:cntrl:]]/?/g; # like --hide-control-chars in ls
+ $str =~ s!([[:cntrl:]])!'<span class="cntrl">' . quot($1) . '</span>'!eg;
return $str;
}
--
1.4.3.4
next prev parent reply other threads:[~2006-11-08 10:49 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-08 10:47 [PATCH 0/2] Better unquoting of git quoted filenames; esc_path to escape pathnames for display Jakub Narebski
2006-11-08 10:48 ` [PATCH 1/2] gitweb: Better git-unquoting and gitweb-quoting of pathnames Jakub Narebski
2006-11-08 10:50 ` Jakub Narebski [this message]
2006-11-08 16:58 ` [PATCH 0/2] gitweb: New improved patchset view Jakub Narebski
2006-11-08 16:59 ` [PATCH 1/2] " Jakub Narebski
2006-11-08 18:27 ` Junio C Hamano
2006-11-08 18:57 ` Junio C Hamano
2006-11-08 19:04 ` Jakub Narebski
2006-11-08 18:41 ` [PATCH 1/2 (amend)] " Jakub Narebski
2006-11-08 17:00 ` [PATCH 2/2] gitweb: New improved formatting of chunk header in diff Jakub Narebski
2006-11-08 20:41 ` Junio C Hamano
2006-11-08 20:58 ` Jakub Narebski
2006-11-08 21:41 ` Junio C Hamano
2006-11-08 21:55 ` Jakub Narebski
2006-11-08 18:24 ` [PATCH 2/2] gitweb: Use character or octal escape codes (and add span.cntrl) in esc_path Junio C Hamano
2006-11-08 18:56 ` Jakub Narebski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200611081150.07469.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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 NNTP newsgroup(s).