bixbite 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +20 -0
- data/README.markdown +49 -0
- data/VERSION +1 -0
- data/bin/bixbite +73 -0
- data/lib/bixbite.rb +13 -0
- data/lib/bixbite/command.rb +14 -0
- data/lib/bixbite/create.rb +76 -0
- data/template/Rakefile +25 -0
- data/template/assets/bixbite/Rakefile.rb +297 -0
- data/template/assets/naturaldocs/NaturalDocs/Config/Languages.txt +286 -0
- data/template/assets/naturaldocs/NaturalDocs/Config/Topics.txt +382 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/customizinglanguages.html +52 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/customizingtopics.html +74 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/documenting.html +58 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/documenting/reference.html +146 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/documenting/walkthrough.html +180 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/example/Default.css +528 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/example/NaturalDocs.js +204 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/examples.css +90 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/background.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/leftside.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/logo.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overbody.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overbodybg.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overleftmargin.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overmenu.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overmenubg.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/rightside.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/logo.gif +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/about.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/background.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/bottomleft.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/bottomright.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/community.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/customizing.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/using.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/index.html +9 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/javascript/BrowserStyles.js +77 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/javascript/PNGHandling.js +72 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/keywords.html +38 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/languages.html +32 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/menu.html +79 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/output.html +84 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/running.html +40 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/styles.css +290 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/styles.html +52 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/troubleshooting.html +18 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/CSSGuide.txt +947 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/File Parsing.txt +83 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/HTMLTestCases.pm +269 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/Languages.txt +107 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/NDMarkup.txt +91 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/Symbol Management.txt +59 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/images/Logo.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/JavaScript/NaturalDocs.js +836 -0
- data/template/assets/naturaldocs/NaturalDocs/License-GPL.txt +341 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/BinaryFile.pm +294 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder.pm +280 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/Base.pm +348 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/FramedHTML.pm +345 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/HTML.pm +398 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/HTMLBase.pm +3693 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy.pm +860 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy/Class.pm +412 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy/File.pm +157 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ConfigFile.pm +497 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Constants.pm +165 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/DefineMembers.pm +100 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Error.pm +305 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/File.pm +540 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable.pm +383 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable/Reference.pm +44 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable/String.pm +110 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages.pm +1475 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/ActionScript.pm +1473 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Ada.pm +38 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced.pm +828 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced/Scope.pm +95 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced/ScopeChange.pm +70 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Base.pm +832 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/CSharp.pm +1484 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/PLSQL.pm +319 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Pascal.pm +143 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Perl.pm +1370 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Prototype.pm +92 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Prototype/Parameter.pm +87 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Simple.pm +503 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Tcl.pm +219 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Menu.pm +3406 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Menu/Entry.pm +201 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/NDMarkup.pm +76 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser.pm +1331 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/JavaDoc.pm +464 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/Native.pm +1060 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/ParsedTopic.pm +253 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project.pm +1402 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project/ImageFile.pm +160 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project/SourceFile.pm +113 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ReferenceString.pm +334 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Settings.pm +1418 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Settings/BuildTarget.pm +66 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB.pm +678 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/Extension.pm +84 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/File.pm +129 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/Item.pm +201 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/ItemDefinition.pm +45 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/WatchedFileDefinitions.pm +159 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/StatusMessage.pm +102 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolString.pm +212 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable.pm +1984 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/File.pm +186 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/IndexElement.pm +522 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/Reference.pm +273 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/ReferenceTarget.pm +97 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/Symbol.pm +428 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/SymbolDefinition.pm +96 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Topics.pm +1319 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Topics/Type.pm +151 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Version.pm +384 -0
- data/template/assets/naturaldocs/NaturalDocs/NaturalDocs +400 -0
- data/template/assets/naturaldocs/NaturalDocs/NaturalDocs.bat +17 -0
- data/template/assets/naturaldocs/NaturalDocs/Styles/Default.css +767 -0
- data/template/assets/naturaldocs/NaturalDocs/Styles/Roman.css +765 -0
- data/template/assets/naturaldocs/NaturalDocs/Styles/Small.css +763 -0
- data/template/assets/utilities/pngout +0 -0
- data/template/deploy/public_html/.htaccess +0 -0
- data/template/documentation/js/.htaccess +0 -0
- data/template/src/html/.htaccess +76 -0
- data/template/src/html/css/cmn/global.css +96 -0
- data/template/src/html/css/cmn/ie.css +15 -0
- data/template/src/html/css/cmn/ie6.css +15 -0
- data/template/src/html/images/cmn/.htaccess +0 -0
- data/template/src/html/images/tmp/.htaccess +0 -0
- data/template/src/html/includes/debug.inc +5 -0
- data/template/src/html/includes/footer.inc +52 -0
- data/template/src/html/includes/header.inc +61 -0
- data/template/src/html/includes/html.inc +3 -0
- data/template/src/html/includes/namespace.inc +19 -0
- data/template/src/html/includes/page.inc +151 -0
- data/template/src/html/index.html +35 -0
- data/template/src/html/js/cmn/bootstrap.js +74 -0
- data/template/src/html/js/cmn/global.js +142 -0
- data/template/src/html/js/cmn/lib/LAB.js +348 -0
- data/template/src/html/min/.htaccess +4 -0
- data/template/src/html/min/MinifyCLI.php +19 -0
- data/template/src/html/min/README.txt +132 -0
- data/template/src/html/min/builder/_index.js +242 -0
- data/template/src/html/min/builder/bm.js +36 -0
- data/template/src/html/min/builder/index.php +182 -0
- data/template/src/html/min/builder/ocCheck.php +36 -0
- data/template/src/html/min/builder/rewriteTest.js +1 -0
- data/template/src/html/min/config.php +187 -0
- data/template/src/html/min/groupsConfig.php +34 -0
- data/template/src/html/min/index.php +66 -0
- data/template/src/html/min/lib/FirePHP.php +1370 -0
- data/template/src/html/min/lib/HTTP/ConditionalGet.php +348 -0
- data/template/src/html/min/lib/HTTP/Encoder.php +326 -0
- data/template/src/html/min/lib/JSMin.php +314 -0
- data/template/src/html/min/lib/JSMinPlus.php +1872 -0
- data/template/src/html/min/lib/Minify.php +532 -0
- data/template/src/html/min/lib/Minify/Build.php +103 -0
- data/template/src/html/min/lib/Minify/CSS.php +83 -0
- data/template/src/html/min/lib/Minify/CSS/Compressor.php +250 -0
- data/template/src/html/min/lib/Minify/CSS/UriRewriter.php +270 -0
- data/template/src/html/min/lib/Minify/Cache/APC.php +130 -0
- data/template/src/html/min/lib/Minify/Cache/File.php +125 -0
- data/template/src/html/min/lib/Minify/Cache/Memcache.php +137 -0
- data/template/src/html/min/lib/Minify/ClosureCompiler.php +85 -0
- data/template/src/html/min/lib/Minify/CommentPreserver.php +90 -0
- data/template/src/html/min/lib/Minify/Controller/Base.php +202 -0
- data/template/src/html/min/lib/Minify/Controller/Files.php +78 -0
- data/template/src/html/min/lib/Minify/Controller/Groups.php +94 -0
- data/template/src/html/min/lib/Minify/Controller/MinApp.php +132 -0
- data/template/src/html/min/lib/Minify/Controller/Page.php +82 -0
- data/template/src/html/min/lib/Minify/Controller/Version1.php +118 -0
- data/template/src/html/min/lib/Minify/HTML.php +245 -0
- data/template/src/html/min/lib/Minify/ImportProcessor.php +157 -0
- data/template/src/html/min/lib/Minify/Lines.php +131 -0
- data/template/src/html/min/lib/Minify/Logger.php +45 -0
- data/template/src/html/min/lib/Minify/Packer.php +37 -0
- data/template/src/html/min/lib/Minify/Source.php +187 -0
- data/template/src/html/min/lib/Minify/YUICompressor.php +139 -0
- data/template/src/html/min/lib/Solar/Dir.php +199 -0
- data/template/src/html/min/lib/closure-compiler.jar +0 -0
- data/template/src/html/min/lib/yuicompressor-2.4.2.jar +0 -0
- data/template/src/html/min/utils.php +90 -0
- data/template/src/templates/css/template.css +7 -0
- data/template/src/templates/js/template.js +72 -0
- data/template/src/templates/template.html +18 -0
- data/template/src/yaml/config.yml +46 -0
- data/template/src/yaml/deploy.yml +35 -0
- data/test/bixbite_test.rb +7 -0
- data/test/test_helper.rb +10 -0
- metadata +278 -0
@@ -0,0 +1,345 @@
|
|
1
|
+
###############################################################################
|
2
|
+
#
|
3
|
+
# Package: NaturalDocs::Builder::FramedHTML
|
4
|
+
#
|
5
|
+
###############################################################################
|
6
|
+
#
|
7
|
+
# A package that generates output in HTML with frames.
|
8
|
+
#
|
9
|
+
# All functions are called with Package->Function() notation.
|
10
|
+
#
|
11
|
+
###############################################################################
|
12
|
+
|
13
|
+
# This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure
|
14
|
+
# Natural Docs is licensed under the GPL
|
15
|
+
|
16
|
+
|
17
|
+
use strict;
|
18
|
+
use integer;
|
19
|
+
|
20
|
+
package NaturalDocs::Builder::FramedHTML;
|
21
|
+
|
22
|
+
use base 'NaturalDocs::Builder::HTMLBase';
|
23
|
+
|
24
|
+
|
25
|
+
###############################################################################
|
26
|
+
# Group: Implemented Interface Functions
|
27
|
+
|
28
|
+
|
29
|
+
#
|
30
|
+
# Function: INIT
|
31
|
+
#
|
32
|
+
# Registers the package with <NaturalDocs::Builder>.
|
33
|
+
#
|
34
|
+
sub INIT
|
35
|
+
{
|
36
|
+
NaturalDocs::Builder->Add(__PACKAGE__);
|
37
|
+
};
|
38
|
+
|
39
|
+
|
40
|
+
#
|
41
|
+
# Function: CommandLineOption
|
42
|
+
#
|
43
|
+
# Returns the option to follow -o to use this package. In this case, "html".
|
44
|
+
#
|
45
|
+
sub CommandLineOption
|
46
|
+
{
|
47
|
+
return 'FramedHTML';
|
48
|
+
};
|
49
|
+
|
50
|
+
|
51
|
+
#
|
52
|
+
# Function: BuildFile
|
53
|
+
#
|
54
|
+
# Builds the output file from the parsed source file.
|
55
|
+
#
|
56
|
+
# Parameters:
|
57
|
+
#
|
58
|
+
# sourcefile - The <FileName> of the source file.
|
59
|
+
# parsedFile - An arrayref of the source file as <NaturalDocs::Parser::ParsedTopic> objects.
|
60
|
+
#
|
61
|
+
sub BuildFile #(sourceFile, parsedFile)
|
62
|
+
{
|
63
|
+
my ($self, $sourceFile, $parsedFile) = @_;
|
64
|
+
|
65
|
+
my $outputFile = $self->OutputFileOf($sourceFile);
|
66
|
+
|
67
|
+
|
68
|
+
# 99.99% of the time the output directory will already exist, so this will actually be more efficient. It only won't exist
|
69
|
+
# if a new file was added in a new subdirectory and this is the first time that file was ever parsed.
|
70
|
+
if (!open(OUTPUTFILEHANDLE, '>' . $outputFile))
|
71
|
+
{
|
72
|
+
NaturalDocs::File->CreatePath( NaturalDocs::File->NoFileName($outputFile) );
|
73
|
+
|
74
|
+
open(OUTPUTFILEHANDLE, '>' . $outputFile)
|
75
|
+
or die "Couldn't create output file " . $outputFile . "\n";
|
76
|
+
};
|
77
|
+
|
78
|
+
print OUTPUTFILEHANDLE
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
# IE 6 doesn't like any doctype here at all. Add one (strict or transitional doesn't matter) and it makes the page slightly too
|
83
|
+
# wide for the frame. Mozilla and Opera handle it like champs either way because they Don't Suck(tm).
|
84
|
+
|
85
|
+
# '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" '
|
86
|
+
# . '"http://www.w3.org/TR/REC-html40/loose.dtd">' . "\n\n"
|
87
|
+
|
88
|
+
'<html><head>'
|
89
|
+
|
90
|
+
. (NaturalDocs::Settings->CharSet() ?
|
91
|
+
'<meta http-equiv="Content-Type" content="text/html; charset=' . NaturalDocs::Settings->CharSet() . '">' : '')
|
92
|
+
|
93
|
+
. '<title>'
|
94
|
+
. $self->BuildTitle($sourceFile)
|
95
|
+
. '</title>'
|
96
|
+
|
97
|
+
. '<link rel="stylesheet" type="text/css" href="' . $self->MakeRelativeURL($outputFile, $self->MainCSSFile(), 1) . '">'
|
98
|
+
|
99
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($outputFile, $self->MainJavaScriptFile(), 1) . '"></script>'
|
100
|
+
|
101
|
+
. '</head><body class="FramedContentPage" onLoad="NDOnLoad()">'
|
102
|
+
. $self->OpeningBrowserStyles()
|
103
|
+
|
104
|
+
. $self->StandardComments()
|
105
|
+
|
106
|
+
. "\n\n\n"
|
107
|
+
. $self->BuildContent($sourceFile, $parsedFile)
|
108
|
+
. "\n\n\n"
|
109
|
+
|
110
|
+
. $self->BuildToolTips()
|
111
|
+
|
112
|
+
. $self->ClosingBrowserStyles()
|
113
|
+
. '</body></html>';
|
114
|
+
|
115
|
+
|
116
|
+
close(OUTPUTFILEHANDLE);
|
117
|
+
};
|
118
|
+
|
119
|
+
|
120
|
+
#
|
121
|
+
# Function: BuildIndex
|
122
|
+
#
|
123
|
+
# Builds an index for the passed type.
|
124
|
+
#
|
125
|
+
# Parameters:
|
126
|
+
#
|
127
|
+
# type - The <TopicType> to limit the index to, or undef if none.
|
128
|
+
#
|
129
|
+
sub BuildIndex #(type)
|
130
|
+
{
|
131
|
+
my ($self, $type) = @_;
|
132
|
+
|
133
|
+
my $indexTitle = $self->IndexTitleOf($type);
|
134
|
+
my $indexFile = $self->IndexFileOf($type);
|
135
|
+
|
136
|
+
my $startIndexPage =
|
137
|
+
|
138
|
+
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" '
|
139
|
+
. '"http://www.w3.org/TR/REC-html40/loose.dtd">' . "\n\n"
|
140
|
+
|
141
|
+
. '<html><head>'
|
142
|
+
|
143
|
+
. (NaturalDocs::Settings->CharSet() ?
|
144
|
+
'<meta http-equiv="Content-Type" content="text/html; charset=' . NaturalDocs::Settings->CharSet() . '">' : '')
|
145
|
+
|
146
|
+
. '<title>';
|
147
|
+
|
148
|
+
if (defined NaturalDocs::Menu->Title())
|
149
|
+
{ $startIndexPage .= $self->StringToHTML(NaturalDocs::Menu->Title()) . ' - '; };
|
150
|
+
|
151
|
+
$startIndexPage .=
|
152
|
+
$indexTitle
|
153
|
+
. '</title>'
|
154
|
+
|
155
|
+
. '<link rel="stylesheet" type="text/css" href="' . $self->MakeRelativeURL($indexFile, $self->MainCSSFile(), 1) . '">'
|
156
|
+
|
157
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($indexFile, $self->MainJavaScriptFile(), 1) . '"></script>'
|
158
|
+
|
159
|
+
. '</head><body class="FramedIndexPage" onLoad="NDOnLoad()">'
|
160
|
+
. $self->OpeningBrowserStyles()
|
161
|
+
|
162
|
+
. "\n\n\n"
|
163
|
+
. $self->StandardComments()
|
164
|
+
. "\n\n\n"
|
165
|
+
. '<div id=Index>'
|
166
|
+
. '<div class=IPageTitle>'
|
167
|
+
. $indexTitle
|
168
|
+
. '</div>';
|
169
|
+
|
170
|
+
|
171
|
+
my $endIndexPage =
|
172
|
+
|
173
|
+
'</div><!--Index-->'
|
174
|
+
. "\n\n\n"
|
175
|
+
|
176
|
+
. $self->ClosingBrowserStyles()
|
177
|
+
|
178
|
+
. '</body></html>';
|
179
|
+
|
180
|
+
my $startSearchResultsPage =
|
181
|
+
|
182
|
+
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" '
|
183
|
+
. '"http://www.w3.org/TR/REC-html40/loose.dtd">' . "\n\n"
|
184
|
+
|
185
|
+
. '<html><head>'
|
186
|
+
|
187
|
+
. (NaturalDocs::Settings->CharSet() ?
|
188
|
+
'<meta http-equiv="Content-Type" content="text/html; charset=' . NaturalDocs::Settings->CharSet() . '">' : '')
|
189
|
+
|
190
|
+
. '<link rel="stylesheet" type="text/css" href="' . $self->MakeRelativeURL($indexFile, $self->MainCSSFile(), 1) . '">'
|
191
|
+
|
192
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($indexFile, $self->MainJavaScriptFile(), 1) . '"></script>'
|
193
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($indexFile, $self->SearchDataJavaScriptFile(), 1) . '">'
|
194
|
+
. '</script>'
|
195
|
+
|
196
|
+
. '</head><body class="FramedSearchResultsPage" onLoad="NDOnLoad()">'
|
197
|
+
. $self->OpeningBrowserStyles()
|
198
|
+
|
199
|
+
. "\n\n\n"
|
200
|
+
. $self->StandardComments()
|
201
|
+
. "\n\n\n"
|
202
|
+
|
203
|
+
. '<div id=Index>'
|
204
|
+
. '<div class=IPageTitle>'
|
205
|
+
. 'Search Results'
|
206
|
+
. '</div>';
|
207
|
+
|
208
|
+
my $endSearchResultsPage =
|
209
|
+
|
210
|
+
'</div><!--Index-->'
|
211
|
+
. "\n\n\n"
|
212
|
+
|
213
|
+
. $self->ClosingBrowserStyles()
|
214
|
+
|
215
|
+
. '</body></html>';
|
216
|
+
|
217
|
+
my $indexContent = NaturalDocs::SymbolTable->Index($type);
|
218
|
+
my $pageCount = $self->BuildIndexPages($type, $indexContent, $startIndexPage, $endIndexPage,
|
219
|
+
$startSearchResultsPage, $endSearchResultsPage);
|
220
|
+
$self->PurgeIndexFiles($type, $indexContent, $pageCount + 1);
|
221
|
+
};
|
222
|
+
|
223
|
+
|
224
|
+
#
|
225
|
+
# Function: UpdateMenu
|
226
|
+
#
|
227
|
+
# Builds the menu file. Also generates index.html.
|
228
|
+
#
|
229
|
+
sub UpdateMenu
|
230
|
+
{
|
231
|
+
my $self = shift;
|
232
|
+
|
233
|
+
my $outputDirectory = NaturalDocs::Settings->OutputDirectoryOf($self);
|
234
|
+
my $outputFile = NaturalDocs::File->JoinPaths($outputDirectory, 'menu.html');
|
235
|
+
|
236
|
+
|
237
|
+
open(OUTPUTFILEHANDLE, '>' . $outputFile)
|
238
|
+
or die "Couldn't create output file " . $outputFile . "\n";
|
239
|
+
|
240
|
+
my $title = 'Menu';
|
241
|
+
if (defined $title)
|
242
|
+
{ $title .= ' - ' . NaturalDocs::Menu->Title(); };
|
243
|
+
|
244
|
+
$title = $self->StringToHTML($title);
|
245
|
+
|
246
|
+
|
247
|
+
print OUTPUTFILEHANDLE
|
248
|
+
|
249
|
+
|
250
|
+
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" '
|
251
|
+
. '"http://www.w3.org/TR/REC-html40/loose.dtd">' . "\n\n"
|
252
|
+
|
253
|
+
. '<html><head>'
|
254
|
+
|
255
|
+
. (NaturalDocs::Settings->CharSet() ?
|
256
|
+
'<meta http-equiv="Content-Type" content="text/html; charset=' . NaturalDocs::Settings->CharSet() . '">' : '')
|
257
|
+
|
258
|
+
. '<title>'
|
259
|
+
. $title
|
260
|
+
. '</title>'
|
261
|
+
|
262
|
+
. '<base target="Content">'
|
263
|
+
|
264
|
+
. '<link rel="stylesheet" type="text/css" href="' . $self->MakeRelativeURL($outputFile, $self->MainCSSFile(), 1) . '">'
|
265
|
+
|
266
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($outputFile, $self->MainJavaScriptFile(), 1) . '"></script>'
|
267
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($outputFile, $self->SearchDataJavaScriptFile(), 1) . '">'
|
268
|
+
. '</script>'
|
269
|
+
|
270
|
+
. '</head><body class="FramedMenuPage" onLoad="NDOnLoad()">'
|
271
|
+
. $self->OpeningBrowserStyles()
|
272
|
+
|
273
|
+
. $self->StandardComments()
|
274
|
+
|
275
|
+
. "\n\n\n"
|
276
|
+
. $self->BuildMenu(undef, undef)
|
277
|
+
. "\n\n\n"
|
278
|
+
. $self->BuildFooter(1)
|
279
|
+
. "\n\n\n"
|
280
|
+
|
281
|
+
. $self->ClosingBrowserStyles()
|
282
|
+
. '</body></html>';
|
283
|
+
|
284
|
+
|
285
|
+
close(OUTPUTFILEHANDLE);
|
286
|
+
|
287
|
+
|
288
|
+
# Update index.html
|
289
|
+
|
290
|
+
my $firstMenuEntry = $self->FindFirstFile();
|
291
|
+
my $indexFile = NaturalDocs::File->JoinPaths( NaturalDocs::Settings->OutputDirectoryOf($self), 'index.html' );
|
292
|
+
|
293
|
+
# We have to check because it's possible that there may be no files with Natural Docs content and thus no files on the menu.
|
294
|
+
if (defined $firstMenuEntry)
|
295
|
+
{
|
296
|
+
open(INDEXFILEHANDLE, '>' . $indexFile)
|
297
|
+
or die "Couldn't create output file " . $indexFile . ".\n";
|
298
|
+
|
299
|
+
print INDEXFILEHANDLE
|
300
|
+
|
301
|
+
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" '
|
302
|
+
. '"http://www.w3.org/TR/REC-html40/frameset.dtd">'
|
303
|
+
|
304
|
+
. '<html>'
|
305
|
+
|
306
|
+
. '<head>'
|
307
|
+
|
308
|
+
. (NaturalDocs::Settings->CharSet() ?
|
309
|
+
'<meta http-equiv="Content-Type" content="text/html; charset=' . NaturalDocs::Settings->CharSet() . '">' : '')
|
310
|
+
|
311
|
+
. '<title>'
|
312
|
+
. $self->StringToHTML(NaturalDocs::Menu->Title())
|
313
|
+
. '</title>'
|
314
|
+
|
315
|
+
. '</head>'
|
316
|
+
|
317
|
+
. $self->StandardComments()
|
318
|
+
|
319
|
+
. '<frameset cols="185,*">'
|
320
|
+
. '<frame name=Menu src="menu.html">'
|
321
|
+
. '<frame name=Content src="'
|
322
|
+
. $self->MakeRelativeURL($indexFile, $self->OutputFileOf($firstMenuEntry->Target()), 1) . '">'
|
323
|
+
. '</frameset>'
|
324
|
+
|
325
|
+
. '<noframes>'
|
326
|
+
. 'This documentation was designed for use with frames. However, you can still use it by '
|
327
|
+
. '<a href="menu.html">starting from the menu page</a>.'
|
328
|
+
. "<script language=JavaScript><!--\n"
|
329
|
+
. 'location.href="menu.html";'
|
330
|
+
. "\n// --></script>"
|
331
|
+
. '</noframes>'
|
332
|
+
|
333
|
+
. '</html>';
|
334
|
+
|
335
|
+
close INDEXFILEHANDLE;
|
336
|
+
}
|
337
|
+
|
338
|
+
elsif (-e $indexFile)
|
339
|
+
{
|
340
|
+
unlink($indexFile);
|
341
|
+
};
|
342
|
+
};
|
343
|
+
|
344
|
+
|
345
|
+
1;
|
@@ -0,0 +1,398 @@
|
|
1
|
+
###############################################################################
|
2
|
+
#
|
3
|
+
# Package: NaturalDocs::Builder::HTML
|
4
|
+
#
|
5
|
+
###############################################################################
|
6
|
+
#
|
7
|
+
# A package that generates output in HTML.
|
8
|
+
#
|
9
|
+
# All functions are called with Package->Function() notation.
|
10
|
+
#
|
11
|
+
###############################################################################
|
12
|
+
|
13
|
+
# This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure
|
14
|
+
# Natural Docs is licensed under the GPL
|
15
|
+
|
16
|
+
|
17
|
+
use strict;
|
18
|
+
use integer;
|
19
|
+
|
20
|
+
package NaturalDocs::Builder::HTML;
|
21
|
+
|
22
|
+
use base 'NaturalDocs::Builder::HTMLBase';
|
23
|
+
|
24
|
+
|
25
|
+
###############################################################################
|
26
|
+
# Group: Implemented Interface Functions
|
27
|
+
|
28
|
+
|
29
|
+
#
|
30
|
+
# Function: INIT
|
31
|
+
#
|
32
|
+
# Registers the package with <NaturalDocs::Builder>.
|
33
|
+
#
|
34
|
+
sub INIT
|
35
|
+
{
|
36
|
+
NaturalDocs::Builder->Add(__PACKAGE__);
|
37
|
+
};
|
38
|
+
|
39
|
+
|
40
|
+
#
|
41
|
+
# Function: CommandLineOption
|
42
|
+
#
|
43
|
+
# Returns the option to follow -o to use this package. In this case, "html".
|
44
|
+
#
|
45
|
+
sub CommandLineOption
|
46
|
+
{
|
47
|
+
return 'HTML';
|
48
|
+
};
|
49
|
+
|
50
|
+
|
51
|
+
#
|
52
|
+
# Function: BuildFile
|
53
|
+
#
|
54
|
+
# Builds the output file from the parsed source file.
|
55
|
+
#
|
56
|
+
# Parameters:
|
57
|
+
#
|
58
|
+
# sourcefile - The <FileName> of the source file.
|
59
|
+
# parsedFile - An arrayref of the source file as <NaturalDocs::Parser::ParsedTopic> objects.
|
60
|
+
#
|
61
|
+
sub BuildFile #(sourceFile, parsedFile)
|
62
|
+
{
|
63
|
+
my ($self, $sourceFile, $parsedFile) = @_;
|
64
|
+
|
65
|
+
my $outputFile = $self->OutputFileOf($sourceFile);
|
66
|
+
|
67
|
+
|
68
|
+
# 99.99% of the time the output directory will already exist, so this will actually be more efficient. It only won't exist
|
69
|
+
# if a new file was added in a new subdirectory and this is the first time that file was ever parsed.
|
70
|
+
if (!open(OUTPUTFILEHANDLE, '>' . $outputFile))
|
71
|
+
{
|
72
|
+
NaturalDocs::File->CreatePath( NaturalDocs::File->NoFileName($outputFile) );
|
73
|
+
|
74
|
+
open(OUTPUTFILEHANDLE, '>' . $outputFile)
|
75
|
+
or die "Couldn't create output file " . $outputFile . "\n";
|
76
|
+
};
|
77
|
+
|
78
|
+
print OUTPUTFILEHANDLE
|
79
|
+
|
80
|
+
|
81
|
+
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" '
|
82
|
+
. '"http://www.w3.org/TR/REC-html40/strict.dtd">' . "\n\n"
|
83
|
+
|
84
|
+
. '<html><head>'
|
85
|
+
|
86
|
+
. (NaturalDocs::Settings->CharSet() ?
|
87
|
+
'<meta http-equiv="Content-Type" content="text/html; charset=' . NaturalDocs::Settings->CharSet() . '">' : '')
|
88
|
+
|
89
|
+
. '<title>'
|
90
|
+
. $self->BuildTitle($sourceFile)
|
91
|
+
. '</title>'
|
92
|
+
|
93
|
+
. '<link rel="stylesheet" type="text/css" href="' . $self->MakeRelativeURL($outputFile, $self->MainCSSFile(), 1) . '">'
|
94
|
+
|
95
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($outputFile, $self->MainJavaScriptFile(), 1) . '">'
|
96
|
+
. '</script>'
|
97
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($outputFile, $self->SearchDataJavaScriptFile(), 1) . '">'
|
98
|
+
. '</script>'
|
99
|
+
|
100
|
+
. '</head><body class="ContentPage" onLoad="NDOnLoad()">'
|
101
|
+
. $self->OpeningBrowserStyles()
|
102
|
+
|
103
|
+
. $self->StandardComments()
|
104
|
+
|
105
|
+
. "\n\n\n"
|
106
|
+
. $self->BuildContent($sourceFile, $parsedFile)
|
107
|
+
. "\n\n\n"
|
108
|
+
. $self->BuildFooter()
|
109
|
+
. "\n\n\n"
|
110
|
+
. $self->BuildMenu($sourceFile, undef)
|
111
|
+
. "\n\n\n"
|
112
|
+
. $self->BuildToolTips()
|
113
|
+
. "\n\n\n"
|
114
|
+
. '<div id=MSearchResultsWindow>'
|
115
|
+
. '<iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe>'
|
116
|
+
. '<a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a>'
|
117
|
+
. '</div>'
|
118
|
+
. "\n\n\n"
|
119
|
+
|
120
|
+
. $self->ClosingBrowserStyles()
|
121
|
+
. '</body></html>';
|
122
|
+
|
123
|
+
|
124
|
+
close(OUTPUTFILEHANDLE);
|
125
|
+
};
|
126
|
+
|
127
|
+
|
128
|
+
#
|
129
|
+
# Function: BuildIndex
|
130
|
+
#
|
131
|
+
# Builds an index for the passed type.
|
132
|
+
#
|
133
|
+
# Parameters:
|
134
|
+
#
|
135
|
+
# type - The <TopicType> to limit the index to, or undef if none.
|
136
|
+
#
|
137
|
+
sub BuildIndex #(type)
|
138
|
+
{
|
139
|
+
my ($self, $type) = @_;
|
140
|
+
|
141
|
+
my $indexTitle = $self->IndexTitleOf($type);
|
142
|
+
|
143
|
+
my $startIndexPage =
|
144
|
+
|
145
|
+
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" '
|
146
|
+
. '"http://www.w3.org/TR/REC-html40/strict.dtd">' . "\n\n"
|
147
|
+
|
148
|
+
. '<html><head>'
|
149
|
+
|
150
|
+
. (NaturalDocs::Settings->CharSet() ?
|
151
|
+
'<meta http-equiv="Content-Type" content="text/html; charset=' . NaturalDocs::Settings->CharSet() . '">' : '')
|
152
|
+
|
153
|
+
. '<title>'
|
154
|
+
. $indexTitle;
|
155
|
+
|
156
|
+
if (defined NaturalDocs::Menu->Title())
|
157
|
+
{ $startIndexPage .= ' - ' . $self->StringToHTML(NaturalDocs::Menu->Title()); };
|
158
|
+
|
159
|
+
$startIndexPage .=
|
160
|
+
'</title>'
|
161
|
+
|
162
|
+
. '<link rel="stylesheet" type="text/css" href="' . $self->MakeRelativeURL($self->IndexDirectory(),
|
163
|
+
$self->MainCSSFile()) . '">'
|
164
|
+
|
165
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($self->IndexDirectory(),
|
166
|
+
$self->MainJavaScriptFile()) . '"></script>'
|
167
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($self->IndexDirectory(),
|
168
|
+
$self->SearchDataJavaScriptFile()) . '">'
|
169
|
+
. '</script>'
|
170
|
+
|
171
|
+
. '</head><body class="IndexPage" onLoad="NDOnLoad()">'
|
172
|
+
. $self->OpeningBrowserStyles()
|
173
|
+
|
174
|
+
. $self->StandardComments()
|
175
|
+
|
176
|
+
. "\n\n\n"
|
177
|
+
|
178
|
+
. '<div id=Index>'
|
179
|
+
. '<div class=IPageTitle>'
|
180
|
+
. $indexTitle
|
181
|
+
. '</div>';
|
182
|
+
|
183
|
+
my $endIndexPage =
|
184
|
+
'</div><!--Index-->'
|
185
|
+
|
186
|
+
. "\n\n\n"
|
187
|
+
. $self->BuildFooter()
|
188
|
+
. "\n\n\n"
|
189
|
+
. $self->BuildMenu(undef, $type)
|
190
|
+
. "\n\n\n"
|
191
|
+
. '<div id=MSearchResultsWindow>'
|
192
|
+
. '<iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe>'
|
193
|
+
. '<a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a>'
|
194
|
+
. '</div>'
|
195
|
+
. "\n\n\n"
|
196
|
+
|
197
|
+
. $self->ClosingBrowserStyles()
|
198
|
+
. '</body></html>';
|
199
|
+
|
200
|
+
|
201
|
+
my $startSearchResultsPage =
|
202
|
+
|
203
|
+
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" '
|
204
|
+
. '"http://www.w3.org/TR/REC-html40/strict.dtd">' . "\n\n"
|
205
|
+
|
206
|
+
. '<html><head>'
|
207
|
+
|
208
|
+
. (NaturalDocs::Settings->CharSet() ?
|
209
|
+
'<meta http-equiv="Content-Type" content="text/html; charset=' . NaturalDocs::Settings->CharSet() . '">' : '')
|
210
|
+
|
211
|
+
. '<link rel="stylesheet" type="text/css" href="' . $self->MakeRelativeURL($self->SearchResultsDirectory(),
|
212
|
+
$self->MainCSSFile()) . '">'
|
213
|
+
|
214
|
+
. '<script language=JavaScript src="' . $self->MakeRelativeURL($self->SearchResultsDirectory(),
|
215
|
+
$self->MainJavaScriptFile()) . '"></script>'
|
216
|
+
|
217
|
+
. '</head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()">'
|
218
|
+
. $self->OpeningBrowserStyles()
|
219
|
+
|
220
|
+
. $self->StandardComments()
|
221
|
+
|
222
|
+
. "\n\n\n"
|
223
|
+
|
224
|
+
. '<div id=Index>';
|
225
|
+
|
226
|
+
|
227
|
+
my $endSearchResultsPage =
|
228
|
+
'</div>'
|
229
|
+
. $self->ClosingBrowserStyles()
|
230
|
+
. '</body></html>';
|
231
|
+
|
232
|
+
my $indexContent = NaturalDocs::SymbolTable->Index($type);
|
233
|
+
my $pageCount = $self->BuildIndexPages($type, $indexContent, $startIndexPage, $endIndexPage,
|
234
|
+
$startSearchResultsPage, $endSearchResultsPage);
|
235
|
+
$self->PurgeIndexFiles($type, $indexContent, $pageCount + 1);
|
236
|
+
};
|
237
|
+
|
238
|
+
|
239
|
+
#
|
240
|
+
# Function: UpdateMenu
|
241
|
+
#
|
242
|
+
# Updates the menu in all the output files that weren't rebuilt. Also generates index.html.
|
243
|
+
#
|
244
|
+
sub UpdateMenu
|
245
|
+
{
|
246
|
+
my $self = shift;
|
247
|
+
|
248
|
+
|
249
|
+
# Update the menu on unbuilt files.
|
250
|
+
|
251
|
+
my $filesToUpdate = NaturalDocs::Project->UnbuiltFilesWithContent();
|
252
|
+
|
253
|
+
foreach my $sourceFile (keys %$filesToUpdate)
|
254
|
+
{
|
255
|
+
$self->UpdateFile($sourceFile);
|
256
|
+
};
|
257
|
+
|
258
|
+
|
259
|
+
# Update the menu on unchanged index files.
|
260
|
+
|
261
|
+
my $indexes = NaturalDocs::Menu->Indexes();
|
262
|
+
|
263
|
+
foreach my $index (keys %$indexes)
|
264
|
+
{
|
265
|
+
if (!NaturalDocs::SymbolTable->IndexChanged($index))
|
266
|
+
{
|
267
|
+
$self->UpdateIndex($index);
|
268
|
+
};
|
269
|
+
};
|
270
|
+
|
271
|
+
|
272
|
+
# Update index.html
|
273
|
+
|
274
|
+
my $firstMenuEntry = $self->FindFirstFile();
|
275
|
+
my $indexFile = NaturalDocs::File->JoinPaths( NaturalDocs::Settings->OutputDirectoryOf($self), 'index.html' );
|
276
|
+
|
277
|
+
# We have to check because it's possible that there may be no files with Natural Docs content and thus no files on the menu.
|
278
|
+
if (defined $firstMenuEntry)
|
279
|
+
{
|
280
|
+
open(INDEXFILEHANDLE, '>' . $indexFile)
|
281
|
+
or die "Couldn't create output file " . $indexFile . ".\n";
|
282
|
+
|
283
|
+
print INDEXFILEHANDLE
|
284
|
+
'<html><head>'
|
285
|
+
. '<meta http-equiv="Refresh" CONTENT="0; URL='
|
286
|
+
. $self->MakeRelativeURL( NaturalDocs::File->JoinPaths( NaturalDocs::Settings->OutputDirectoryOf($self), 'index.html'),
|
287
|
+
$self->OutputFileOf($firstMenuEntry->Target()), 1 ) . '">'
|
288
|
+
. '</head></html>';
|
289
|
+
|
290
|
+
close INDEXFILEHANDLE;
|
291
|
+
}
|
292
|
+
|
293
|
+
elsif (-e $indexFile)
|
294
|
+
{
|
295
|
+
unlink($indexFile);
|
296
|
+
};
|
297
|
+
};
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
###############################################################################
|
302
|
+
# Group: Support Functions
|
303
|
+
|
304
|
+
|
305
|
+
#
|
306
|
+
# Function: UpdateFile
|
307
|
+
#
|
308
|
+
# Updates an output file. Replaces the menu, HTML title, and footer. It opens the output file, makes the changes, and saves it
|
309
|
+
# back to disk, which is much quicker than rebuilding the file from scratch if these were the only things that changed.
|
310
|
+
#
|
311
|
+
# Parameters:
|
312
|
+
#
|
313
|
+
# sourceFile - The source <FileName>.
|
314
|
+
#
|
315
|
+
# Dependencies:
|
316
|
+
#
|
317
|
+
# - Requires <Builder::BuildMenu()> to surround its content with the exact strings "<div id=Menu>" and "</div><!--Menu-->".
|
318
|
+
# - Requires <Builder::BuildFooter()> to surround its content with the exact strings "<div id=Footer>" and
|
319
|
+
# "</div><!--Footer-->".
|
320
|
+
#
|
321
|
+
sub UpdateFile #(sourceFile)
|
322
|
+
{
|
323
|
+
my ($self, $sourceFile) = @_;
|
324
|
+
|
325
|
+
my $outputFile = $self->OutputFileOf($sourceFile);
|
326
|
+
|
327
|
+
if (open(OUTPUTFILEHANDLE, '<' . $outputFile))
|
328
|
+
{
|
329
|
+
my $content;
|
330
|
+
|
331
|
+
read(OUTPUTFILEHANDLE, $content, -s OUTPUTFILEHANDLE);
|
332
|
+
close(OUTPUTFILEHANDLE);
|
333
|
+
|
334
|
+
|
335
|
+
$content =~ s{<title>[^<]*<\/title>}{'<title>' . $self->BuildTitle($sourceFile) . '</title>'}e;
|
336
|
+
|
337
|
+
$content =~ s/<div id=Menu>.*?<\/div><!--Menu-->/$self->BuildMenu($sourceFile, undef)/es;
|
338
|
+
|
339
|
+
$content =~ s/<div id=Footer>.*?<\/div><!--Footer-->/$self->BuildFooter()/e;
|
340
|
+
|
341
|
+
|
342
|
+
open(OUTPUTFILEHANDLE, '>' . $outputFile);
|
343
|
+
print OUTPUTFILEHANDLE $content;
|
344
|
+
close(OUTPUTFILEHANDLE);
|
345
|
+
};
|
346
|
+
};
|
347
|
+
|
348
|
+
|
349
|
+
#
|
350
|
+
# Function: UpdateIndex
|
351
|
+
#
|
352
|
+
# Updates an index's output file. Replaces the menu and footer. It opens the output file, makes the changes, and saves it
|
353
|
+
# back to disk, which is much quicker than rebuilding the file from scratch if these were the only things that changed.
|
354
|
+
#
|
355
|
+
# Parameters:
|
356
|
+
#
|
357
|
+
# type - The index <TopicType>, or undef if none.
|
358
|
+
#
|
359
|
+
sub UpdateIndex #(type)
|
360
|
+
{
|
361
|
+
my ($self, $type) = @_;
|
362
|
+
|
363
|
+
my $page = 1;
|
364
|
+
|
365
|
+
my $outputFile = $self->IndexFileOf($type, $page);
|
366
|
+
|
367
|
+
my $newMenu = $self->BuildMenu(undef, $type);
|
368
|
+
my $newFooter = $self->BuildFooter();
|
369
|
+
|
370
|
+
while (-e $outputFile)
|
371
|
+
{
|
372
|
+
open(OUTPUTFILEHANDLE, '<' . $outputFile)
|
373
|
+
or die "Couldn't open output file " . $outputFile . ".\n";
|
374
|
+
|
375
|
+
my $content;
|
376
|
+
|
377
|
+
read(OUTPUTFILEHANDLE, $content, -s OUTPUTFILEHANDLE);
|
378
|
+
close(OUTPUTFILEHANDLE);
|
379
|
+
|
380
|
+
|
381
|
+
$content =~ s/<div id=Menu>.*?<\/div><!--Menu-->/$newMenu/es;
|
382
|
+
|
383
|
+
$content =~ s/<div id=Footer>.*<\/div><!--Footer-->/$newFooter/e;
|
384
|
+
|
385
|
+
|
386
|
+
open(OUTPUTFILEHANDLE, '>' . $outputFile)
|
387
|
+
or die "Couldn't save output file " . $outputFile . ".\n";
|
388
|
+
|
389
|
+
print OUTPUTFILEHANDLE $content;
|
390
|
+
close(OUTPUTFILEHANDLE);
|
391
|
+
|
392
|
+
$page++;
|
393
|
+
$outputFile = $self->IndexFileOf($type, $page);
|
394
|
+
};
|
395
|
+
};
|
396
|
+
|
397
|
+
|
398
|
+
1;
|