ВОПРОС (24 апреля 2014 года): Я ищу способ избежать ручного пересмотра веб-страницы, чтобы включить ссылки на файлы в каталоге, чтобы содержимое этих файлов отображалось как фрагменты кода с использованием Syntaxhighlighter. Если вы не используете скрипт файлового менеджера (например, *.cgi или *.php), есть ли простой способ оценить файлы в определенном каталоге и включить их содержимое на веб-страницу?
Другими словами, я хотел бы иметь возможность вручную добавлять/удалять/модифицировать файл фрагмента кода из каталога и иметь сценарий для оценки каталога фрагментов (заново) каждый раз при загрузке страницы. Теперь, мне нужно будет вручную отредактировать мою веб-страницу, чтобы изменить имя license.txt
если я переименую этот файл на сервере. Я надеюсь просто указать каталог (например, /home/lawlist/public_html/code_snippets
), и сценарий оценивает содержимое этого каталога, чтобы заполнить веб-страницу содержимым файлов в этом каталоге. Поведение похоже на то, что может сделать файловый менеджер *.cgi или *.php.
Perl Script - test.cgi
:
#!/usr/bin/perl
use CGI qw(:standard);
print "Content-type: text/html\n\n";
print <<HTML;
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Document Title</title>
</head>
<body>
HTML
my $dir = '/home/lawlist/www';
my $query = new CGI;
my $name = $query->param('name');
my $file = $dir . "/" . $name;
opendir(DIR, $dir) or die $!;
while (my $file = readdir(DIR)) {
next unless (-f "$dir/$file");
next unless ($file =~ m/\.txt|\.el$/);
print '<a href="/cgi-bin/test.cgi?name=' . $file . '">' . $file . "</a>" . "<br>" . "\n\n"; }
closedir(DIR);
if ($name) {
open (DATA, $file) or return $self->print_json_error($self->language('ERR_CANNOT_OPEN', $file->{name}, $!));
read (DATA, my $file, -s DATA);
close DATA;
print '<pre class="brush: lisp">' . "\n\n" . $file . "\n" . '</pre>'; }
print <<HTML;
</body>
</html>
HTML
exit 0;
Конфигурация.htaccess
DirectoryIndex index.html index.htm index.php index.cgi
SSLOptions +StdEnvVars
# Customized server error messages:
# ErrorDocument 404 /page.not.found.basic.html
AddHandler cgi-script .pl .cgi
Options +Includes +ExecCGI
AddType text/html .shtml .shtm .html .htm
AddHandler server-parsed .shtml .shtm .html .htm
# if you want to see the list of files in a directory
# without an index.html file, then uncomment the following line:
# Options +Indexes
Options -Indexes
# Options +FollowSymLinks
# Options Indexes Includes FollowSymLinks ExecCGI
Вставка страницы:
<hr COLOR="#CCCCCC" size=1 NOSHADE>
<!--#exec cgi="/cgi-bin/test.cgi"-->
<hr COLOR="#CCCCCC" size=1 NOSHADE>
Это серверная технология. На серверном JavaScript вы можете использовать модуль nodejs fs
и выводить содержимое.
"SyntaxHighlighting" - это клиентская технология, и вы можете использовать любую библиотеку, которая вам нравится для раскраски кода.
javascript
иhtml
, и перед тем, как опубликовать его, я лучше составлю черновик своего вопроса.