Schrift
[thread]4583[/thread]

Syntax-Highlighting

Leser: 2


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
Crian
 2006-04-13 15:21
#38670 #38670
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Bei use kann ich mir das gut vorstellen, aber bei package? Da stehen doch dann meist die eigenen Packagenamen?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2006-04-13 15:33
#38671 #38671
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Du Admin bittest uns einfache Moderatoren das zu verschieben? =)

Aber ich warte mal auf Renee, ist zwar eine gute Idee, aber da er selbst verschieben kann, sollte er das dann auch machen, denk ich mal.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
esskar
 2006-04-13 15:55
#38672 #38672
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Crian,13.04.2006, 13:33]Du Admin bittest uns einfache Moderatoren das zu verschieben? =)[/quote]
Nee, das war ein befehl! :p
esskar
 2006-04-13 20:05
#38673 #38673
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
@ronnie: sind die leerzeilen zwischen den codezeilen absicht?
ansonsten: schick! :)
renee
 2006-04-12 19:15
#38674 #38674
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wir hatten ja schonmal die Diskussion über das Syntax-Highlighting im Forum. Heute habe ich etwas tolles im eStudy gesehen (Programmierprojekt meines Profs)!

Die parsen den Quellcode und machen bei Schlüsselworten wie package und use, die dann mit der perldoc verlinkt werden. So kann man den Quellcode auch analysieren...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2006-04-13 15:30
#38675 #38675
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
verschieb das doch jemand mal ins projekt forum.
vielleicht wird draus was, und man kann das Perl-Highlighting hier im Forum verbessern! Oder nicht?
Ronnie
 2006-04-13 16:13
#38676 #38676
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Mein aktuelles Doku-Erstellungs-Skript - vieleicht ist es ja bei der Diskussion nützlich. Die Links zu http://perldoc.perl.org/functions/ füge ich nachträglich ins HTML ein, was nicht sehr schön ist, aber erstmal funktioniert. Die Idee mit PPI::HTML stammt von Renee und ist super hilfreich. Mit PPI muss ich mich wohl nochmal richtig beschäftigen. Die keywords habe ich erstmal esskars Wiki-Eintrag entnommen.

Das Ganze sieht im Ergebnis beispielsweise so aus: http://www.ronnie-neumann.de/trashbin/example.html

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/perl

use strict;
use warnings;

use HTML::Template;
use HTML::Entities;
use PPI;
use PPI::HTML;
use Data::Dumper;

die "script needs at least one file to process!\n" unless @ARGV;

my @content;
my $template = HTML::Template->new(filename => "container2.html");

foreach my $source (@ARGV) {
my ($type) = $source =~ /\.(.*)$/;
my $part;

open(FILE, '<', $source) or
die "dieing while trying to open $source cause of: $!\n";

my $native = join '', (<FILE>);
if ($type eq 'pl') {
my $perldoc = PPI::Document->new( \$native );
my $highlight = PPI::HTML->new();
$part = $highlight->html( $perldoc );
} else {
$part = encode_entities($native);
}
close(FILE);

push @content, {
source => $source,
content => $part,
type => $type,
};
}

$template->param( content => \@content, );
print generate_links($template->output());

sub generate_links {
my $raw = shift;
my @keywords = qw(
bless close closedir die shift eval exit grep map open opendir print
splice split sysopen warn each values atan2 bind binmode caller chdir
chmod chomp chop chown chr chroot cmp connect continue cos crypt
dbmclose dbmopen defined delete dump endgrent endhostent endnetent
endprotoent endpwent endservent eof eq exec exists exp fcntl fileno
flock fork format formline getc getgrent getgrgid getgrnam
gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr
getnetbyname getnetent getpeername getpgrp getppid getpriority
getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid
getservbyname getservbyport getservent getsockname getsockopt glob
gmtime goto ge hex import index int ioctl join keys kill last lc
lcfirst length le link listen localtime log lstat mkdir msgctl msgget
msgrcv msgsnd next ne no no oct or ord pack pipe pop pos q qq quotemeta
qw qx read readdir readlink readpipe recv redo ref rename reset reverse
rewinddir rindex rmdir scalar seek seekdir select semctl semget semop
send setgrent sethostent setnetent setpgrp setpriority setprotoent
setpwent setservent setsockopt shift shmctl shmget shmread shmwrite
shutdown sin sleep socket socketpair sort split sprintf printf sqrt
srand rand stat shift study substr switch symlink syscall sysread
system syswrite tell telldir time times tr truncate uc ucfirst umask
undef unlink unpack unshift untie utime vec wait waitpid wantarray
write xor
);

for my $keyword (@keywords) {
$raw =~ s/\<span class=\"word\"\>$keyword\<\/span\>/\<span class=\"word\"\>\<a href=\"http:\/\/perldoc.perl.org\/functions\/$keyword.html\"\>$keyword\<\/a\>\<\/span\>/;
}
return $raw;
}

Das Template:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="perl script: project_to_html.pl" />
<title>Documentation</title>
<style type="text/css" media="screen">
/* <![CDATA[ */
h1 { color: #ff9; }
a { color: #99f; }
pre {
border-width: 1px;
border-style: solid;
padding: 4px;
background-color: 
color: #ddd;
}
strong { color: #f99; }

.default {
color: #fff;
background-color: Ƽ
font-family: Arial, Helvectia;
margin: 8px;
}

.comment { color: #6600dd; }
.keyword { color: #ff9900; }
.pragma { text-style: italic; }
.substitute { color: #eeee00; }
.operator { color: #6666ff; }
.single { color: #0c0; }
.double { color: #3c3; }
.symbol { color: #d66; }
.structure {color: #ccc;}
.word {color: #fff;}
/* ]]> */
</style>
</head>
<body class="default">
<TMPL_LOOP NAME="content">
<h1><TMPL_VAR NAME="source"></h1>
Type of file is <strong><TMPL_VAR NAME="type"></strong><br />
<pre><TMPL_VAR NAME="content"></pre><br />
<hr />
</TMPL_LOOP>
</body>
</html>
\n\n

<!--EDIT|Ronnie|1144930625-->
Ronnie
 2006-04-13 20:33
#38677 #38677
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,13.04.2006, 18:05]@ronnie: sind die leerzeilen zwischen den codezeilen absicht?
ansonsten: schick! :)[/quote]
nee, das mit den Leerzeilen, bzw. Zeilenabständen beschäftigt mich auch noch. Das doppelte verarbeiten, zumal mit Regexen missfällt mir auch. Ich muss mal sehen was man mit PPI da noch machen kann.

Freut mich aber das es dir gefällt. :)
GwenDragon
 2006-04-13 20:45
#38678 #38678
User since
2005-01-17
14540 Artikel
Admin1
[Homepage]
user image
//Mod GwenDragon Thread verschoben
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

renee
 2006-04-13 23:04
#38679 #38679
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Crian,13.04.2006, 13:21]Bei use kann ich mir das gut vorstellen, aber bei package? Da stehen doch dann meist die eigenen Packagenamen?[/quote]
Das Wort package ist mit perldoc perlfunc verlinkt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2006-04-13 15:21.