Changeset 23454
- Timestamp:
- 11/13/08 01:27:22 (5 years ago)
- Location:
- lang/perl/MENTA/trunk
- Files:
-
- 3 modified
-
bin/cgi-server.pl (modified) (1 diff)
-
lib/MENTA/Builder.pm (modified) (2 diffs)
-
plugins/dbi_select.pl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/MENTA/trunk/bin/cgi-server.pl
r23448 r23454 16 16 waitpid($pid, POSIX::WNOHANG); 17 17 } elsif ($pid == 0) { 18 system "$^X bin/menta.pl"; 19 chdir 'out'; 18 chdir 'app'; 20 19 my $out = MENTA::BindSTDOUT->bind(sub { 20 package main; 21 21 do './menta.cgi'; 22 22 die $@ if $@; -
lang/perl/MENTA/trunk/lib/MENTA/Builder.pm
r23450 r23454 8 8 my $OUTPUT_DIR = 'out'; 9 9 my $SOURCE_DIR = 'app'; 10 11 my $TMPL = <<'...';12 ### SHEBANG ###13 use strict;14 use warnings;15 use utf8;16 17 ### INCLUDE 'lib/MENTA.pm' ###18 ### INCLUDE 'app/menta.cgi' ###19 ...20 21 sub replace {22 my ($src, $params) = @_;23 $src =~ s{###\s+INCLUDE\s+'([^']+)'\s+###}{24 read_source($1);25 }gem;26 while (my ($key, $val) = each %$params) {27 $src =~ s/### $key ###/$val/g;28 }29 $src;30 }31 32 sub read_source {33 my $fname = shift;34 my $src = _read_and_indent($fname, 1);35 $src =~ s{require\s+['"]([^'"]+)['"]\s*;}{36 my $fname = $1;37 $fname =~ s!^\.\./*!!;38 _read_and_indent($fname, 2);39 }ge;40 $src;41 }42 43 sub _read_and_indent {44 my ($fname, $indent_level) = @_;45 my $one_level = 4;46 my $indent = ' ' x ($indent_level*$one_level);47 "{\n" . join("\n", grep { /^\s*$/ or $_ = $indent . $_; 1 }48 split("\n", read_file($fname)))49 . "\n" . (' ' x (($indent_level-1)*$one_level)) . "}\n";50 }51 10 52 11 sub run { … … 63 22 sub generate_cgi { 64 23 say "menta.cgi をつくりあげる"; 65 my $menta = $TMPL; 66 $menta = replace($menta, { 67 SHEBANG => do { 68 my ($shebang,) = split /\r\n|[\r\n]/, read_file('app/menta.cgi'); 69 $shebang; 70 }, 71 }); 24 my ($shebang,) = split /\r\n|[\r\n]/, read_file('app/menta.cgi'); 25 my $menta = "$shebang\n$TMPL"; 26 $menta .= read_file('lib/MENTA.pm'); 27 $menta .= read_file('app/menta.cgi'); 72 28 $menta =~ s/use MENTA;/package main;/g; 73 $menta =~ s /use lib 'lib';//;29 $menta =~ s!use lib '\..\/lib';!!; 74 30 say "menta.cgi を出力しています"; 75 31 write_file("$OUTPUT_DIR/menta.cgi" => $menta); -
lang/perl/MENTA/trunk/plugins/dbi_select.pl
r23419 r23454 18 18 } 19 19 20 1;
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)