bixbite 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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;
|