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,383 @@
|
|
1
|
+
###############################################################################
|
2
|
+
#
|
3
|
+
# Package: NaturalDocs::ImageReferenceTable
|
4
|
+
#
|
5
|
+
###############################################################################
|
6
|
+
#
|
7
|
+
# A <NaturalDocs::SourceDB>-based package that manages all the image references appearing in source files.
|
8
|
+
#
|
9
|
+
###############################################################################
|
10
|
+
|
11
|
+
# This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure
|
12
|
+
# Natural Docs is licensed under the GPL
|
13
|
+
|
14
|
+
use strict;
|
15
|
+
use integer;
|
16
|
+
|
17
|
+
use NaturalDocs::ImageReferenceTable::String;
|
18
|
+
use NaturalDocs::ImageReferenceTable::Reference;
|
19
|
+
|
20
|
+
|
21
|
+
package NaturalDocs::ImageReferenceTable;
|
22
|
+
|
23
|
+
use base 'NaturalDocs::SourceDB::Extension';
|
24
|
+
|
25
|
+
|
26
|
+
###############################################################################
|
27
|
+
# Group: Information
|
28
|
+
|
29
|
+
#
|
30
|
+
# Topic: Usage
|
31
|
+
#
|
32
|
+
# - <NaturalDocs::Project> and <NaturalDocs::SourceDB> must be initialized before this package can be used.
|
33
|
+
#
|
34
|
+
# - Call <Register()> before using.
|
35
|
+
#
|
36
|
+
#
|
37
|
+
# Topic: Programming Notes
|
38
|
+
#
|
39
|
+
# When working on this code, remember that there are three things it has to juggle.
|
40
|
+
#
|
41
|
+
# - The information in <NaturalDocs::SourceDB>.
|
42
|
+
# - Image file references in <NaturalDocs::Project>.
|
43
|
+
# - Source file rebuilding on changes.
|
44
|
+
#
|
45
|
+
# Managing the actual image files will be handled between <NaturalDocs::Project> and the <NaturalDocs::Builder>
|
46
|
+
# sub-packages.
|
47
|
+
#
|
48
|
+
#
|
49
|
+
# Topic: Implementation
|
50
|
+
#
|
51
|
+
# Managing image references is simpler than managing the references in <NaturalDocs::SymbolTable>. In SymbolTable,
|
52
|
+
# you have to worry about reference targets popping into and out of existence. A link may go to a file that hasn't been
|
53
|
+
# reparsed yet and the target may no longer exist. We have to deal with that when we know it, which may be after the
|
54
|
+
# reference's file was parsed. Also, a new definition may appear that serves as a better interpretation of a link than its
|
55
|
+
# current target, and again we may only know that after the reference's file has been parsed already. So we have to deal
|
56
|
+
# with scores and potential symbols and each symbol knowing exactly what links to it and so forth.
|
57
|
+
#
|
58
|
+
# Not so with image references. All possible targets (all possible image files) are known by <NaturalDocs::Project> early
|
59
|
+
# on and will remain consistent throughout execution. So because of that, we can get away with only storing reference
|
60
|
+
# counts with each image and determining exactly where a reference points to as we find them.
|
61
|
+
#
|
62
|
+
# Reference counts are stored with the image file information in <NaturalDocs::Project>. However, it is not loaded and
|
63
|
+
# saved to disk by it. Rather, it is regenerated by this package when it loads <ImageReferenceTable.nd>.
|
64
|
+
# NaturalDocs::Project only stores the last modification time (so it can add files to the build list if they've changed) and
|
65
|
+
# whether it had any references at all on the last run (so it knows whether it should care if they've changed.)
|
66
|
+
# ImageReferenceTable.nd stores each reference's target, width, and height. Whether their interpretations have changed is
|
67
|
+
# dealt with in the <Load()> function, again since the list of targets (image files) is constant.
|
68
|
+
#
|
69
|
+
# The package is based on <NaturalDocs::SourceDB>, so read it's documentation for more information on how it works.
|
70
|
+
#
|
71
|
+
|
72
|
+
|
73
|
+
###############################################################################
|
74
|
+
# Group: Variables
|
75
|
+
|
76
|
+
|
77
|
+
#
|
78
|
+
# var: extensionID
|
79
|
+
# The <ExtensionID> granted by <NaturalDocs::SourceDB>.
|
80
|
+
#
|
81
|
+
my $extensionID;
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
###############################################################################
|
86
|
+
# Group: Files
|
87
|
+
|
88
|
+
|
89
|
+
#
|
90
|
+
# File: ImageReferenceTable.nd
|
91
|
+
#
|
92
|
+
# The data file which stores all the image references from the last run of Natural Docs.
|
93
|
+
#
|
94
|
+
# Format:
|
95
|
+
#
|
96
|
+
# > [Standard Binary Header]
|
97
|
+
#
|
98
|
+
# It starts with the standard binary header from <NaturalDocs::BinaryFile>.
|
99
|
+
#
|
100
|
+
# > [Image Reference String or undef]
|
101
|
+
# > [AString16: target file]
|
102
|
+
# > [UInt16: target width or 0]
|
103
|
+
# > [UInt16: target height or 0]
|
104
|
+
#
|
105
|
+
# For each <ImageReferenceString>, it's target, width, and height are stored. The target is needed so we can tell if it
|
106
|
+
# changed from the last run, and the dimensions are needed because if the target hasn't changed but the file's dimensions
|
107
|
+
# have, the source files need to be rebuilt.
|
108
|
+
#
|
109
|
+
# <ImageReferenceStrings> are encoded by <NaturalDocs::ImageReferenceTable::String>.
|
110
|
+
#
|
111
|
+
# > [AString16: definition file or undef] ...
|
112
|
+
#
|
113
|
+
# Then comes a series of AString16s for all the files that define the reference until it hits an undef.
|
114
|
+
#
|
115
|
+
# This whole series is repeated for each <ImageReferenceString> until it hits an undef.
|
116
|
+
#
|
117
|
+
# Revisions:
|
118
|
+
#
|
119
|
+
# 1.4:
|
120
|
+
#
|
121
|
+
# - The file was added to Natural Docs.
|
122
|
+
#
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
###############################################################################
|
127
|
+
# Group: Functions
|
128
|
+
|
129
|
+
|
130
|
+
#
|
131
|
+
# Function: Register
|
132
|
+
# Registers the package with <NaturalDocs::SourceDB>.
|
133
|
+
#
|
134
|
+
sub Register
|
135
|
+
{
|
136
|
+
my $self = shift;
|
137
|
+
$extensionID = NaturalDocs::SourceDB->RegisterExtension($self, 0);
|
138
|
+
};
|
139
|
+
|
140
|
+
|
141
|
+
#
|
142
|
+
# Function: Load
|
143
|
+
#
|
144
|
+
# Loads the data from <ImageReferenceTable.nd>. Returns whether it was successful.
|
145
|
+
#
|
146
|
+
sub Load # => bool
|
147
|
+
{
|
148
|
+
my $self = shift;
|
149
|
+
|
150
|
+
if (NaturalDocs::Settings->RebuildData())
|
151
|
+
{ return 0; };
|
152
|
+
|
153
|
+
# The file format hasn't changed since it was introduced.
|
154
|
+
if (!NaturalDocs::BinaryFile->OpenForReading( NaturalDocs::Project->DataFile('ImageReferenceTable.nd') ))
|
155
|
+
{ return 0; };
|
156
|
+
|
157
|
+
|
158
|
+
# [Image Reference String or undef]
|
159
|
+
while (my $referenceString = NaturalDocs::ImageReferenceTable::String->FromBinaryFile())
|
160
|
+
{
|
161
|
+
NaturalDocs::SourceDB->AddItem($extensionID, $referenceString,
|
162
|
+
NaturalDocs::ImageReferenceTable::Reference->New());
|
163
|
+
|
164
|
+
# [AString16: target file]
|
165
|
+
# [UInt16: target width or 0]
|
166
|
+
# [UInt16: target height or 0]
|
167
|
+
|
168
|
+
my $targetFile = NaturalDocs::BinaryFile->GetAString16();
|
169
|
+
my $width = NaturalDocs::BinaryFile->GetUInt16();
|
170
|
+
my $height = NaturalDocs::BinaryFile->GetUInt16();
|
171
|
+
|
172
|
+
my $newTargetFile = $self->SetReferenceTarget($referenceString);
|
173
|
+
my $newWidth;
|
174
|
+
my $newHeight;
|
175
|
+
|
176
|
+
if ($newTargetFile)
|
177
|
+
{
|
178
|
+
NaturalDocs::Project->AddImageFileReference($newTargetFile);
|
179
|
+
($newWidth, $newHeight) = NaturalDocs::Project->ImageFileDimensions($newTargetFile);
|
180
|
+
};
|
181
|
+
|
182
|
+
my $rebuildDefinitions = ($newTargetFile ne $targetFile || $newWidth != $width || $newHeight != $height);
|
183
|
+
|
184
|
+
|
185
|
+
# [AString16: definition file or undef] ...
|
186
|
+
while (my $definitionFile = NaturalDocs::BinaryFile->GetAString16())
|
187
|
+
{
|
188
|
+
NaturalDocs::SourceDB->AddDefinition($extensionID, $referenceString, $definitionFile);
|
189
|
+
|
190
|
+
if ($rebuildDefinitions)
|
191
|
+
{ NaturalDocs::Project->RebuildFile($definitionFile); };
|
192
|
+
};
|
193
|
+
};
|
194
|
+
|
195
|
+
|
196
|
+
NaturalDocs::BinaryFile->Close();
|
197
|
+
return 1;
|
198
|
+
};
|
199
|
+
|
200
|
+
|
201
|
+
#
|
202
|
+
# Function: Save
|
203
|
+
#
|
204
|
+
# Saves the data to <ImageReferenceTable.nd>.
|
205
|
+
#
|
206
|
+
sub Save
|
207
|
+
{
|
208
|
+
my $self = shift;
|
209
|
+
|
210
|
+
my $references = NaturalDocs::SourceDB->GetAllItemsHashRef($extensionID);
|
211
|
+
|
212
|
+
NaturalDocs::BinaryFile->OpenForWriting( NaturalDocs::Project->DataFile('ImageReferenceTable.nd') );
|
213
|
+
|
214
|
+
while (my ($referenceString, $referenceObject) = each %$references)
|
215
|
+
{
|
216
|
+
# [Image Reference String or undef]
|
217
|
+
# [AString16: target file]
|
218
|
+
# [UInt16: target width or 0]
|
219
|
+
# [UInt16: target height or 0]
|
220
|
+
|
221
|
+
NaturalDocs::ImageReferenceTable::String->ToBinaryFile($referenceString);
|
222
|
+
|
223
|
+
my $target = $referenceObject->Target();
|
224
|
+
my ($width, $height);
|
225
|
+
|
226
|
+
if ($target)
|
227
|
+
{ ($width, $height) = NaturalDocs::Project->ImageFileDimensions($target); };
|
228
|
+
|
229
|
+
NaturalDocs::BinaryFile->WriteAString16( $referenceObject->Target() );
|
230
|
+
NaturalDocs::BinaryFile->WriteUInt16( ($width || 0) );
|
231
|
+
NaturalDocs::BinaryFile->WriteUInt16( ($height || 0) );
|
232
|
+
|
233
|
+
# [AString16: definition file or undef] ...
|
234
|
+
|
235
|
+
my $definitions = $referenceObject->GetAllDefinitionsHashRef();
|
236
|
+
|
237
|
+
foreach my $definition (keys %$definitions)
|
238
|
+
{ NaturalDocs::BinaryFile->WriteAString16($definition); };
|
239
|
+
|
240
|
+
NaturalDocs::BinaryFile->WriteAString16(undef);
|
241
|
+
};
|
242
|
+
|
243
|
+
NaturalDocs::ImageReferenceTable::String->ToBinaryFile(undef);
|
244
|
+
|
245
|
+
NaturalDocs::BinaryFile->Close();
|
246
|
+
};
|
247
|
+
|
248
|
+
|
249
|
+
#
|
250
|
+
# Function: AddReference
|
251
|
+
#
|
252
|
+
# Adds a new image reference.
|
253
|
+
#
|
254
|
+
sub AddReference #(FileName file, string referenceText)
|
255
|
+
{
|
256
|
+
my ($self, $file, $referenceText) = @_;
|
257
|
+
|
258
|
+
my $referenceString = NaturalDocs::ImageReferenceTable::String->Make($file, $referenceText);
|
259
|
+
|
260
|
+
if (!NaturalDocs::SourceDB->HasItem($extensionID, $referenceString))
|
261
|
+
{
|
262
|
+
my $referenceObject = NaturalDocs::ImageReferenceTable::Reference->New();
|
263
|
+
NaturalDocs::SourceDB->AddItem($extensionID, $referenceString, $referenceObject);
|
264
|
+
|
265
|
+
my $target = $self->SetReferenceTarget($referenceString);
|
266
|
+
if ($target)
|
267
|
+
{ NaturalDocs::Project->AddImageFileReference($target); };
|
268
|
+
};
|
269
|
+
|
270
|
+
NaturalDocs::SourceDB->AddDefinition($extensionID, $referenceString, $file);
|
271
|
+
};
|
272
|
+
|
273
|
+
|
274
|
+
#
|
275
|
+
# Function: OnDeletedDefinition
|
276
|
+
#
|
277
|
+
# Called for each definition deleted by <NaturalDocs::SourceDB>. This is called *after* the definition has been deleted from
|
278
|
+
# the database, so don't expect to be able to read it.
|
279
|
+
#
|
280
|
+
sub OnDeletedDefinition #(ImageReferenceString referenceString, FileName file, bool wasLastDefinition)
|
281
|
+
{
|
282
|
+
my ($self, $referenceString, $file, $wasLastDefinition) = @_;
|
283
|
+
|
284
|
+
if ($wasLastDefinition)
|
285
|
+
{
|
286
|
+
my $referenceObject = NaturalDocs::SourceDB->GetItem($extensionID, $referenceString);
|
287
|
+
my $target = $referenceObject->Target();
|
288
|
+
|
289
|
+
if ($target)
|
290
|
+
{ NaturalDocs::Project->DeleteImageFileReference($target); };
|
291
|
+
|
292
|
+
NaturalDocs::SourceDB->DeleteItem($extensionID, $referenceString);
|
293
|
+
};
|
294
|
+
};
|
295
|
+
|
296
|
+
|
297
|
+
#
|
298
|
+
# Function: GetReferenceTarget
|
299
|
+
#
|
300
|
+
# Returns the image file the reference resolves to, or undef if none.
|
301
|
+
#
|
302
|
+
# Parameters:
|
303
|
+
#
|
304
|
+
# sourceFile - The source <FileName> the reference appears in.
|
305
|
+
# text - The reference text.
|
306
|
+
#
|
307
|
+
sub GetReferenceTarget #(FileName sourceFile, string text) => FileName
|
308
|
+
{
|
309
|
+
my ($self, $sourceFile, $text) = @_;
|
310
|
+
|
311
|
+
my $referenceString = NaturalDocs::ImageReferenceTable::String->Make($sourceFile, $text);
|
312
|
+
my $reference = NaturalDocs::SourceDB->GetItem($extensionID, $referenceString);
|
313
|
+
|
314
|
+
if (!defined $reference)
|
315
|
+
{ return undef; }
|
316
|
+
else
|
317
|
+
{ return $reference->Target(); };
|
318
|
+
};
|
319
|
+
|
320
|
+
|
321
|
+
#
|
322
|
+
# Function: SetReferenceTarget
|
323
|
+
#
|
324
|
+
# Determines the best target for the passed <ImageReferenceString> and sets it on the
|
325
|
+
# <NaturalDocs::ImageReferenceTable::Reference> object. Returns the new target <FileName>. Does *not* add any source
|
326
|
+
# files to the bulid list.
|
327
|
+
#
|
328
|
+
sub SetReferenceTarget #(ImageReferenceString referenceString) => FileName
|
329
|
+
{
|
330
|
+
my ($self, $referenceString) = @_;
|
331
|
+
|
332
|
+
my $referenceObject = NaturalDocs::SourceDB->GetItem($extensionID, $referenceString);
|
333
|
+
my ($sourcePath, $text) = NaturalDocs::ImageReferenceTable::String->InformationOf($referenceString);
|
334
|
+
|
335
|
+
|
336
|
+
# Try the path relative to the source file first.
|
337
|
+
|
338
|
+
my $target;
|
339
|
+
|
340
|
+
my $imageFile = NaturalDocs::File->JoinPaths($sourcePath, $text);
|
341
|
+
my $exists = NaturalDocs::Project->ImageFileExists($imageFile);
|
342
|
+
|
343
|
+
|
344
|
+
# Then try relative image directories.
|
345
|
+
|
346
|
+
if (!$exists)
|
347
|
+
{
|
348
|
+
my $relativeImageDirectories = NaturalDocs::Settings->RelativeImageDirectories();
|
349
|
+
|
350
|
+
for (my $i = 0; $i < scalar @$relativeImageDirectories && !$exists; $i++)
|
351
|
+
{
|
352
|
+
$imageFile = NaturalDocs::File->JoinPaths($sourcePath, $relativeImageDirectories->[$i], 1);
|
353
|
+
$imageFile = NaturalDocs::File->JoinPaths($imageFile, $text);
|
354
|
+
|
355
|
+
$exists = NaturalDocs::Project->ImageFileExists($imageFile);
|
356
|
+
};
|
357
|
+
};
|
358
|
+
|
359
|
+
|
360
|
+
# Then try absolute image directories.
|
361
|
+
|
362
|
+
if (!$exists)
|
363
|
+
{
|
364
|
+
my $imageDirectories = NaturalDocs::Settings->ImageDirectories();
|
365
|
+
|
366
|
+
for (my $i = 0; $i < scalar @$imageDirectories && !$exists; $i++)
|
367
|
+
{
|
368
|
+
$imageFile = NaturalDocs::File->JoinPaths($imageDirectories->[$i], $text);
|
369
|
+
$exists = NaturalDocs::Project->ImageFileExists($imageFile);
|
370
|
+
};
|
371
|
+
};
|
372
|
+
|
373
|
+
|
374
|
+
if ($exists)
|
375
|
+
{ $target = NaturalDocs::Project->ImageFileCapitalization($imageFile); };
|
376
|
+
#else leave it as undef.
|
377
|
+
|
378
|
+
$referenceObject->SetTarget($target);
|
379
|
+
return $target;
|
380
|
+
};
|
381
|
+
|
382
|
+
|
383
|
+
1;
|
data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable/Reference.pm
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
###############################################################################
|
2
|
+
#
|
3
|
+
# Package: NaturalDocs::ImageReferenceTable::Reference
|
4
|
+
#
|
5
|
+
###############################################################################
|
6
|
+
#
|
7
|
+
# A class for references being tracked in <NaturalDocs::SourceDB>.
|
8
|
+
#
|
9
|
+
###############################################################################
|
10
|
+
|
11
|
+
# This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure
|
12
|
+
# Natural Docs is licensed under the GPL
|
13
|
+
|
14
|
+
use strict;
|
15
|
+
use integer;
|
16
|
+
|
17
|
+
|
18
|
+
package NaturalDocs::ImageReferenceTable::Reference;
|
19
|
+
|
20
|
+
use base 'NaturalDocs::SourceDB::Item';
|
21
|
+
|
22
|
+
|
23
|
+
use NaturalDocs::DefineMembers 'TARGET', 'Target()', 'SetTarget()',
|
24
|
+
'NEEDS_REBUILD', 'NeedsRebuild()', 'SetNeedsRebuild()';
|
25
|
+
|
26
|
+
|
27
|
+
#
|
28
|
+
# Variables: Members
|
29
|
+
#
|
30
|
+
# The following constants are indexes into the object array.
|
31
|
+
#
|
32
|
+
# TARGET - The image <FileName> this reference resolves to, or undef if none.
|
33
|
+
#
|
34
|
+
|
35
|
+
|
36
|
+
#
|
37
|
+
# Functions: Member Functions
|
38
|
+
#
|
39
|
+
# Target - Returns the image <FileName> this reference resolves to, or undef if none.
|
40
|
+
# SetTarget - Replaces the image <FileName> this reference resolves to, or undef if none.
|
41
|
+
#
|
42
|
+
|
43
|
+
|
44
|
+
1;
|
data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable/String.pm
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
###############################################################################
|
2
|
+
#
|
3
|
+
# Package: NaturalDocs::ImageReferenceTable::String
|
4
|
+
#
|
5
|
+
###############################################################################
|
6
|
+
#
|
7
|
+
# A package for creating and managing <ImageReferenceStrings>.
|
8
|
+
#
|
9
|
+
###############################################################################
|
10
|
+
|
11
|
+
# This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure
|
12
|
+
# Natural Docs is licensed under the GPL
|
13
|
+
|
14
|
+
use strict;
|
15
|
+
use integer;
|
16
|
+
|
17
|
+
|
18
|
+
package NaturalDocs::ImageReferenceTable::String;
|
19
|
+
|
20
|
+
|
21
|
+
#
|
22
|
+
# Type: ImageReferenceString
|
23
|
+
#
|
24
|
+
# A string representing a unique image reference. It's composed of the reference text and the directory of the source file.
|
25
|
+
# The source file name itself isn't included because two files in the same directory with the same reference text will always go
|
26
|
+
# to the same targets.
|
27
|
+
#
|
28
|
+
|
29
|
+
|
30
|
+
#
|
31
|
+
# Function: Make
|
32
|
+
#
|
33
|
+
# Converts a source <FileName> and the reference text to an <ImageReferenceString>.
|
34
|
+
#
|
35
|
+
sub Make #(FileName sourceFile, string text) => ImageReferenceString
|
36
|
+
{
|
37
|
+
my ($self, $sourceFile, $text) = @_;
|
38
|
+
|
39
|
+
my $path = NaturalDocs::File->NoFileName($sourceFile);
|
40
|
+
|
41
|
+
# Condense whitespace and remove any separator characters.
|
42
|
+
$path =~ tr/ \t\r\n\x1C/ /s;
|
43
|
+
$text =~ tr/ \t\r\n\x1C/ /s;
|
44
|
+
|
45
|
+
return $path . "\x1C" . $text;
|
46
|
+
};
|
47
|
+
|
48
|
+
|
49
|
+
#
|
50
|
+
# Function: InformationOf
|
51
|
+
#
|
52
|
+
# Returns the information contained in the <ImageReferenceString> as the array ( path, text ).
|
53
|
+
#
|
54
|
+
sub InformationOf #(ImageReferenceString referenceString)
|
55
|
+
{
|
56
|
+
my ($self, $referenceString) = @_;
|
57
|
+
return split(/\x1C/, $referenceString);
|
58
|
+
};
|
59
|
+
|
60
|
+
|
61
|
+
#
|
62
|
+
# Function: ToBinaryFile
|
63
|
+
#
|
64
|
+
# Writes an <ImageReferenceString> to <NaturalDocs::BinaryFile>. Can also encode an undef.
|
65
|
+
#
|
66
|
+
# Format:
|
67
|
+
#
|
68
|
+
# > [AString16: path] [AString16: reference text] ...
|
69
|
+
#
|
70
|
+
# Undef is represented by the first AString16 being undef.
|
71
|
+
#
|
72
|
+
sub ToBinaryFile #(ImageReferenceString referenceString)
|
73
|
+
{
|
74
|
+
my ($self, $referenceString) = @_;
|
75
|
+
|
76
|
+
if (defined $referenceString)
|
77
|
+
{
|
78
|
+
my ($path, $text) = split(/\x1C/, $referenceString);
|
79
|
+
|
80
|
+
NaturalDocs::BinaryFile->WriteAString16($path);
|
81
|
+
NaturalDocs::BinaryFile->WriteAString16($text);
|
82
|
+
}
|
83
|
+
else
|
84
|
+
{
|
85
|
+
NaturalDocs::BinaryFile->WriteAString16(undef);
|
86
|
+
};
|
87
|
+
};
|
88
|
+
|
89
|
+
|
90
|
+
#
|
91
|
+
# Function: FromBinaryFile
|
92
|
+
#
|
93
|
+
# Loads an <ImageReferenceString> or undef from <NaturalDocs::BinaryFile> and returns it.
|
94
|
+
#
|
95
|
+
sub FromBinaryFile
|
96
|
+
{
|
97
|
+
my $self = shift;
|
98
|
+
|
99
|
+
my $path = NaturalDocs::BinaryFile->GetAString16();
|
100
|
+
|
101
|
+
if (!defined $path)
|
102
|
+
{ return undef; };
|
103
|
+
|
104
|
+
my $text = NaturalDocs::BinaryFile->GetAString16();
|
105
|
+
|
106
|
+
return $path . "\x1C" . $text;
|
107
|
+
};
|
108
|
+
|
109
|
+
|
110
|
+
1;
|