<: @oneLine :> <% @conf main.JostracaVersion = 0.3 main.TemplateScript = perl parse.OpenInnerChar = : parse.CloseInnerChar = : %> <:! my $version = "0.4"; my $release = $version.".1"; my $top = ""; :> <: init! my %pages = getPageDescriptions(); my @pageNames = keys %pages; _setFileNameRoots( @pageNames ); _setFileNameSuffix( ".htm" ); :> <: @replace [release] $=$release$ :> <: @replace [version] $=$version$ :> <: my $page = _getFileNameRoot(); my %d = %{ $pages{$page} }; my $of = $d{'output-folder'}; if( "" eq "$of" ) { $of = "."; } _setOutputFolder( $of ); $top = "../" x ((("." ne $of)?1:0)+($of =~ tr[/][/])); :> <: @oneLine :> <: @include include/html-head.htm :> <: @include include/title.htm :> <: @include include/page-head.htm :> <: @include include/page-body.htm :> <: @include include/page-foot.htm :> <: @section ignore :> <:! sub getPageDescriptions { open( PD, "page-desc.txt" ) or die "Can't find page-desc.txt"; my $pageSpec = join('',@_=)." "; close( PD ); my %pages; while( $pageSpec =~ /([\w-]+)\s*{(.*?)}\s+/sg ) { #print "n:$1\n";# d:$2\n"; my $pageName = $1; my $pageDesc = $2; my $pageData = {}; while( $pageDesc =~ /\s*([\w-]+):\s*(.*?);/sg ) { #print "p:$1 v:$2\n"; $$pageData{$1} = $2; } # automatic data transforms if( "" eq "$$pageData{'title-part'}" ) { $$pageData{'title-part'} = $$pageData{'head'}; } $pages{ $pageName } = $pageData; } return %pages; } :> <:! sub loadContent { my $content = shift; my $content_ref = shift; my $quiet = shift; my $fileName = "include/c-$content.htm"; if( "" ne $content_ref ) { $fileName = $content_ref; } my $text = loadFile( $fileName, $quiet ); # These subsitutions must be done directly as # the content files are only read at generation time, # not template compile time. Jostraca never gets a # change to operate on the content files. $text =~ s/\[release\]/$release/g; $text =~ s/\[\'release\]/\[release\]/g; $text =~ s/\[version\]/$version/g; $text =~ s/\[\'version\]/\[version\]/g; $text =~ s/\[top\]/$top/g; $text =~ s/\[\'top\]/\[top\]/g; return $text; } :> <:! sub loadFile { my $fileName = shift; my $quiet = shift; if( open( F, $fileName ) ) { my $content; my $line; while( $line = ) { $line =~ s/\r\n/\n/g; $content .= $line; } close( F ); return $content; } else { if( "quiet" ne $quiet ) { print "Cannot open '$fileName'"; } return ""; } } :>