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.
Files changed (194) hide show
  1. data/LICENSE +20 -0
  2. data/README.markdown +49 -0
  3. data/VERSION +1 -0
  4. data/bin/bixbite +73 -0
  5. data/lib/bixbite.rb +13 -0
  6. data/lib/bixbite/command.rb +14 -0
  7. data/lib/bixbite/create.rb +76 -0
  8. data/template/Rakefile +25 -0
  9. data/template/assets/bixbite/Rakefile.rb +297 -0
  10. data/template/assets/naturaldocs/NaturalDocs/Config/Languages.txt +286 -0
  11. data/template/assets/naturaldocs/NaturalDocs/Config/Topics.txt +382 -0
  12. data/template/assets/naturaldocs/NaturalDocs/Help/customizinglanguages.html +52 -0
  13. data/template/assets/naturaldocs/NaturalDocs/Help/customizingtopics.html +74 -0
  14. data/template/assets/naturaldocs/NaturalDocs/Help/documenting.html +58 -0
  15. data/template/assets/naturaldocs/NaturalDocs/Help/documenting/reference.html +146 -0
  16. data/template/assets/naturaldocs/NaturalDocs/Help/documenting/walkthrough.html +180 -0
  17. data/template/assets/naturaldocs/NaturalDocs/Help/example/Default.css +528 -0
  18. data/template/assets/naturaldocs/NaturalDocs/Help/example/NaturalDocs.js +204 -0
  19. data/template/assets/naturaldocs/NaturalDocs/Help/examples.css +90 -0
  20. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/background.png +0 -0
  21. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/leftside.png +0 -0
  22. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/logo.png +0 -0
  23. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overbody.png +0 -0
  24. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overbodybg.png +0 -0
  25. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overleftmargin.png +0 -0
  26. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overmenu.png +0 -0
  27. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overmenubg.png +0 -0
  28. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/rightside.png +0 -0
  29. data/template/assets/naturaldocs/NaturalDocs/Help/images/logo.gif +0 -0
  30. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/about.png +0 -0
  31. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/background.png +0 -0
  32. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/bottomleft.png +0 -0
  33. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/bottomright.png +0 -0
  34. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/community.png +0 -0
  35. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/customizing.png +0 -0
  36. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/using.png +0 -0
  37. data/template/assets/naturaldocs/NaturalDocs/Help/index.html +9 -0
  38. data/template/assets/naturaldocs/NaturalDocs/Help/javascript/BrowserStyles.js +77 -0
  39. data/template/assets/naturaldocs/NaturalDocs/Help/javascript/PNGHandling.js +72 -0
  40. data/template/assets/naturaldocs/NaturalDocs/Help/keywords.html +38 -0
  41. data/template/assets/naturaldocs/NaturalDocs/Help/languages.html +32 -0
  42. data/template/assets/naturaldocs/NaturalDocs/Help/menu.html +79 -0
  43. data/template/assets/naturaldocs/NaturalDocs/Help/output.html +84 -0
  44. data/template/assets/naturaldocs/NaturalDocs/Help/running.html +40 -0
  45. data/template/assets/naturaldocs/NaturalDocs/Help/styles.css +290 -0
  46. data/template/assets/naturaldocs/NaturalDocs/Help/styles.html +52 -0
  47. data/template/assets/naturaldocs/NaturalDocs/Help/troubleshooting.html +18 -0
  48. data/template/assets/naturaldocs/NaturalDocs/Info/CSSGuide.txt +947 -0
  49. data/template/assets/naturaldocs/NaturalDocs/Info/File Parsing.txt +83 -0
  50. data/template/assets/naturaldocs/NaturalDocs/Info/HTMLTestCases.pm +269 -0
  51. data/template/assets/naturaldocs/NaturalDocs/Info/Languages.txt +107 -0
  52. data/template/assets/naturaldocs/NaturalDocs/Info/NDMarkup.txt +91 -0
  53. data/template/assets/naturaldocs/NaturalDocs/Info/Symbol Management.txt +59 -0
  54. data/template/assets/naturaldocs/NaturalDocs/Info/images/Logo.png +0 -0
  55. data/template/assets/naturaldocs/NaturalDocs/JavaScript/NaturalDocs.js +836 -0
  56. data/template/assets/naturaldocs/NaturalDocs/License-GPL.txt +341 -0
  57. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/BinaryFile.pm +294 -0
  58. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder.pm +280 -0
  59. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/Base.pm +348 -0
  60. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/FramedHTML.pm +345 -0
  61. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/HTML.pm +398 -0
  62. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/HTMLBase.pm +3693 -0
  63. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy.pm +860 -0
  64. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy/Class.pm +412 -0
  65. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy/File.pm +157 -0
  66. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ConfigFile.pm +497 -0
  67. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Constants.pm +165 -0
  68. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/DefineMembers.pm +100 -0
  69. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Error.pm +305 -0
  70. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/File.pm +540 -0
  71. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable.pm +383 -0
  72. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable/Reference.pm +44 -0
  73. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable/String.pm +110 -0
  74. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages.pm +1475 -0
  75. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/ActionScript.pm +1473 -0
  76. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Ada.pm +38 -0
  77. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced.pm +828 -0
  78. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced/Scope.pm +95 -0
  79. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced/ScopeChange.pm +70 -0
  80. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Base.pm +832 -0
  81. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/CSharp.pm +1484 -0
  82. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/PLSQL.pm +319 -0
  83. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Pascal.pm +143 -0
  84. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Perl.pm +1370 -0
  85. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Prototype.pm +92 -0
  86. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Prototype/Parameter.pm +87 -0
  87. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Simple.pm +503 -0
  88. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Tcl.pm +219 -0
  89. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Menu.pm +3406 -0
  90. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Menu/Entry.pm +201 -0
  91. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/NDMarkup.pm +76 -0
  92. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser.pm +1331 -0
  93. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/JavaDoc.pm +464 -0
  94. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/Native.pm +1060 -0
  95. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/ParsedTopic.pm +253 -0
  96. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project.pm +1402 -0
  97. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project/ImageFile.pm +160 -0
  98. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project/SourceFile.pm +113 -0
  99. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ReferenceString.pm +334 -0
  100. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Settings.pm +1418 -0
  101. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Settings/BuildTarget.pm +66 -0
  102. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB.pm +678 -0
  103. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/Extension.pm +84 -0
  104. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/File.pm +129 -0
  105. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/Item.pm +201 -0
  106. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/ItemDefinition.pm +45 -0
  107. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/WatchedFileDefinitions.pm +159 -0
  108. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/StatusMessage.pm +102 -0
  109. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolString.pm +212 -0
  110. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable.pm +1984 -0
  111. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/File.pm +186 -0
  112. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/IndexElement.pm +522 -0
  113. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/Reference.pm +273 -0
  114. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/ReferenceTarget.pm +97 -0
  115. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/Symbol.pm +428 -0
  116. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/SymbolDefinition.pm +96 -0
  117. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Topics.pm +1319 -0
  118. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Topics/Type.pm +151 -0
  119. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Version.pm +384 -0
  120. data/template/assets/naturaldocs/NaturalDocs/NaturalDocs +400 -0
  121. data/template/assets/naturaldocs/NaturalDocs/NaturalDocs.bat +17 -0
  122. data/template/assets/naturaldocs/NaturalDocs/Styles/Default.css +767 -0
  123. data/template/assets/naturaldocs/NaturalDocs/Styles/Roman.css +765 -0
  124. data/template/assets/naturaldocs/NaturalDocs/Styles/Small.css +763 -0
  125. data/template/assets/utilities/pngout +0 -0
  126. data/template/deploy/public_html/.htaccess +0 -0
  127. data/template/documentation/js/.htaccess +0 -0
  128. data/template/src/html/.htaccess +76 -0
  129. data/template/src/html/css/cmn/global.css +96 -0
  130. data/template/src/html/css/cmn/ie.css +15 -0
  131. data/template/src/html/css/cmn/ie6.css +15 -0
  132. data/template/src/html/images/cmn/.htaccess +0 -0
  133. data/template/src/html/images/tmp/.htaccess +0 -0
  134. data/template/src/html/includes/debug.inc +5 -0
  135. data/template/src/html/includes/footer.inc +52 -0
  136. data/template/src/html/includes/header.inc +61 -0
  137. data/template/src/html/includes/html.inc +3 -0
  138. data/template/src/html/includes/namespace.inc +19 -0
  139. data/template/src/html/includes/page.inc +151 -0
  140. data/template/src/html/index.html +35 -0
  141. data/template/src/html/js/cmn/bootstrap.js +74 -0
  142. data/template/src/html/js/cmn/global.js +142 -0
  143. data/template/src/html/js/cmn/lib/LAB.js +348 -0
  144. data/template/src/html/min/.htaccess +4 -0
  145. data/template/src/html/min/MinifyCLI.php +19 -0
  146. data/template/src/html/min/README.txt +132 -0
  147. data/template/src/html/min/builder/_index.js +242 -0
  148. data/template/src/html/min/builder/bm.js +36 -0
  149. data/template/src/html/min/builder/index.php +182 -0
  150. data/template/src/html/min/builder/ocCheck.php +36 -0
  151. data/template/src/html/min/builder/rewriteTest.js +1 -0
  152. data/template/src/html/min/config.php +187 -0
  153. data/template/src/html/min/groupsConfig.php +34 -0
  154. data/template/src/html/min/index.php +66 -0
  155. data/template/src/html/min/lib/FirePHP.php +1370 -0
  156. data/template/src/html/min/lib/HTTP/ConditionalGet.php +348 -0
  157. data/template/src/html/min/lib/HTTP/Encoder.php +326 -0
  158. data/template/src/html/min/lib/JSMin.php +314 -0
  159. data/template/src/html/min/lib/JSMinPlus.php +1872 -0
  160. data/template/src/html/min/lib/Minify.php +532 -0
  161. data/template/src/html/min/lib/Minify/Build.php +103 -0
  162. data/template/src/html/min/lib/Minify/CSS.php +83 -0
  163. data/template/src/html/min/lib/Minify/CSS/Compressor.php +250 -0
  164. data/template/src/html/min/lib/Minify/CSS/UriRewriter.php +270 -0
  165. data/template/src/html/min/lib/Minify/Cache/APC.php +130 -0
  166. data/template/src/html/min/lib/Minify/Cache/File.php +125 -0
  167. data/template/src/html/min/lib/Minify/Cache/Memcache.php +137 -0
  168. data/template/src/html/min/lib/Minify/ClosureCompiler.php +85 -0
  169. data/template/src/html/min/lib/Minify/CommentPreserver.php +90 -0
  170. data/template/src/html/min/lib/Minify/Controller/Base.php +202 -0
  171. data/template/src/html/min/lib/Minify/Controller/Files.php +78 -0
  172. data/template/src/html/min/lib/Minify/Controller/Groups.php +94 -0
  173. data/template/src/html/min/lib/Minify/Controller/MinApp.php +132 -0
  174. data/template/src/html/min/lib/Minify/Controller/Page.php +82 -0
  175. data/template/src/html/min/lib/Minify/Controller/Version1.php +118 -0
  176. data/template/src/html/min/lib/Minify/HTML.php +245 -0
  177. data/template/src/html/min/lib/Minify/ImportProcessor.php +157 -0
  178. data/template/src/html/min/lib/Minify/Lines.php +131 -0
  179. data/template/src/html/min/lib/Minify/Logger.php +45 -0
  180. data/template/src/html/min/lib/Minify/Packer.php +37 -0
  181. data/template/src/html/min/lib/Minify/Source.php +187 -0
  182. data/template/src/html/min/lib/Minify/YUICompressor.php +139 -0
  183. data/template/src/html/min/lib/Solar/Dir.php +199 -0
  184. data/template/src/html/min/lib/closure-compiler.jar +0 -0
  185. data/template/src/html/min/lib/yuicompressor-2.4.2.jar +0 -0
  186. data/template/src/html/min/utils.php +90 -0
  187. data/template/src/templates/css/template.css +7 -0
  188. data/template/src/templates/js/template.js +72 -0
  189. data/template/src/templates/template.html +18 -0
  190. data/template/src/yaml/config.yml +46 -0
  191. data/template/src/yaml/deploy.yml +35 -0
  192. data/test/bixbite_test.rb +7 -0
  193. data/test/test_helper.rb +10 -0
  194. metadata +278 -0
@@ -0,0 +1,84 @@
1
+ ###############################################################################
2
+ #
3
+ # Package: NaturalDocs::SourceDB::Extension
4
+ #
5
+ ###############################################################################
6
+ #
7
+ # A base package for all <SourceDB> extensions.
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::SourceDB::Extension;
19
+
20
+
21
+ ###############################################################################
22
+ # Group: Interface Functions
23
+ # These functions must be overridden by the derived class.
24
+
25
+
26
+ #
27
+ # Function: Register
28
+ #
29
+ # Override this function to register the package with <NaturalDocs::SourceDB->RegisterExtension()>.
30
+ #
31
+ sub Register
32
+ {
33
+ die "Called SourceDB::Extension->Register(). This function should be overridden by every extension.";
34
+ };
35
+
36
+
37
+ #
38
+ # Function: Load
39
+ #
40
+ # Called by <NaturalDocs::SourceDB->Load()> to load the extension's data. Returns whether it was successful.
41
+ #
42
+ # *This function might not be called.* If there's a situation that would cause all the source files to be reparsed anyway,
43
+ # <NaturalDocs::SourceDB> may skip calling Load() for the remaining extensions. You should *not* depend on this function
44
+ # for any critical initialization that needs to happen every time regardless.
45
+ #
46
+ sub Load # => bool
47
+ {
48
+ return 1;
49
+ };
50
+
51
+
52
+ #
53
+ # Function: Save
54
+ #
55
+ # Called by <NaturalDocs::SourceDB->Save()> to save the extension's data.
56
+ #
57
+ sub Save
58
+ {
59
+ };
60
+
61
+
62
+ #
63
+ # Function: OnDeletedDefinition
64
+ #
65
+ # Called for each definition deleted by <NaturalDocs::SourceDB>. This is called *after* the definition has been deleted from
66
+ # the database, so don't expect to be able to read it.
67
+ #
68
+ sub OnDeletedDefinition #(string itemString, FileName file, bool wasLastDefinition)
69
+ {
70
+ };
71
+
72
+
73
+ #
74
+ # Function: OnChangedDefinition
75
+ #
76
+ # Called for each definition changed by <NaturalDocs::SourceDB>. This is called *after* the definition has been changed, so
77
+ # don't expect to be able to read the original value.
78
+ #
79
+ sub OnChangedDefinition #(string itemString, FileName file)
80
+ {
81
+ };
82
+
83
+
84
+ 1;
@@ -0,0 +1,129 @@
1
+ ###############################################################################
2
+ #
3
+ # Package: NaturalDocs::SourceDB::File
4
+ #
5
+ ###############################################################################
6
+ #
7
+ # A class used to index items by file.
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::SourceDB::File;
19
+
20
+ use NaturalDocs::DefineMembers 'ITEMS';
21
+
22
+
23
+ #
24
+ # Variables: Members
25
+ #
26
+ # These constants serve as indexes into the object array.
27
+ #
28
+ # ITEMS - An arrayref where an <ExtensionID> is the index and the members are existence hashrefs of the item strigs defined
29
+ # in this file. The arrayref will always exist, but the hashrefs may be undef.
30
+ #
31
+
32
+
33
+ #
34
+ # Function: New
35
+ #
36
+ # Returns a new object.
37
+ #
38
+ sub New
39
+ {
40
+ my $package = shift;
41
+
42
+ my $object = [ ];
43
+ $object->[ITEMS] = [ ];
44
+
45
+ bless $object, $package;
46
+ return $object;
47
+ };
48
+
49
+
50
+ #
51
+ # Function: AddItem
52
+ #
53
+ # Adds an item to this file. Returns whether this added a new item.
54
+ #
55
+ sub AddItem #(ExtensionID extension, string itemString) => bool
56
+ {
57
+ my ($self, $extension, $itemString) = @_;
58
+
59
+ if (!defined $self->[ITEMS]->[$extension])
60
+ {
61
+ $self->[ITEMS]->[$extension] = { $itemString => 1 };
62
+ return 1;
63
+ }
64
+ elsif (!exists $self->[ITEMS]->[$extension]->{$itemString})
65
+ {
66
+ $self->[ITEMS]->[$extension]->{$itemString} = 1;
67
+ return 1;
68
+ }
69
+ else
70
+ {
71
+ return 0;
72
+ };
73
+ };
74
+
75
+
76
+ #
77
+ # Function: HasItem
78
+ #
79
+ # Returns whether the item exists in this file.
80
+ #
81
+ sub HasItem #(ExtensionID extension, string itemString) => bool
82
+ {
83
+ my ($self, $extension, $itemString) = @_;
84
+
85
+ if (defined $self->[ITEMS]->[$extension])
86
+ { return exists $self->[ITEMS]->[$extension]->{$itemString}; }
87
+ else
88
+ { return 0; };
89
+ };
90
+
91
+
92
+ #
93
+ # Function: DeleteItem
94
+ #
95
+ # Deletes the passed item. Returns whether it existed.
96
+ #
97
+ sub DeleteItem #(ExtensionID extension, string itemString) => bool
98
+ {
99
+ my ($self, $extension, $itemString) = @_;
100
+
101
+ if (!defined $self->[ITEMS]->[$extension])
102
+ { return 0; }
103
+ elsif (exists $self->[ITEMS]->[$extension]->{$itemString})
104
+ {
105
+ delete $self->[ITEMS]->[$extension]->{$itemString};
106
+ return 1;
107
+ }
108
+ else
109
+ { return 0; };
110
+ };
111
+
112
+
113
+ #
114
+ # Function: ListItems
115
+ #
116
+ # Returns an array of all the item strings defined for a particular extension, or an empty list if none.
117
+ #
118
+ sub ListItems #(ExtensionID extension) => string array
119
+ {
120
+ my ($self, $extension) = @_;
121
+
122
+ if (defined $self->[ITEMS]->[$extension])
123
+ { return keys %{$self->[ITEMS]->[$extension]}; }
124
+ else
125
+ { return ( ); };
126
+ };
127
+
128
+
129
+ 1;
@@ -0,0 +1,201 @@
1
+ ###############################################################################
2
+ #
3
+ # Package: NaturalDocs::SourceDB::Item
4
+ #
5
+ ###############################################################################
6
+ #
7
+ # A base class for something 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::SourceDB::Item;
19
+
20
+ use NaturalDocs::DefineMembers 'DEFINITIONS';
21
+
22
+
23
+ #
24
+ # Variables: Members
25
+ #
26
+ # The following constants are indexes into the object array.
27
+ #
28
+ # DEFINITIONS - A hashref that maps <FileNames> to either <NaturalDocs::SourceDB::ItemDefinition>-derived objects or
29
+ # serves as an existence hashref depending on whether the extension only tracks existence. Will be undef if
30
+ # there are none.
31
+ #
32
+
33
+
34
+ #
35
+ # Function: New
36
+ #
37
+ # Creates and returns a new object.
38
+ #
39
+ sub New
40
+ {
41
+ my $class = shift;
42
+
43
+ my $object = [ ];
44
+ bless $object, $class;
45
+
46
+ return $object;
47
+ };
48
+
49
+
50
+
51
+ ###############################################################################
52
+ #
53
+ # Group: Definition Functions
54
+ #
55
+ # These functions should be called by <NaturalDocs::SourceDB>. You should not be calling them directly. Call functions
56
+ # like <NaturalDocs::SourceDB->AddDefinition()> instead.
57
+ #
58
+
59
+
60
+ #
61
+ # Function: AddDefinition
62
+ #
63
+ # Adds a definition for the passed <FileName>. If it's already defined, the new definition will be ignored.
64
+ #
65
+ # Parameters:
66
+ #
67
+ # file - The <FileName>.
68
+ # definition - The definition, which must be an object derived from <NaturalDocs::SourceDB::ItemDefinition> or undef if
69
+ # the extension only tracks existence.
70
+ #
71
+ # Returns:
72
+ #
73
+ # Whether the definition was added, which is to say, whether this was the first definition for the passed <FileName>.
74
+ #
75
+ sub AddDefinition #(FileName file, optional NaturalDocs::SourceDB::ItemDefinition definition) => bool
76
+ {
77
+ my ($self, $file, $definition) = @_;
78
+
79
+ if (!defined $self->[DEFINITIONS])
80
+ { $self->[DEFINITIONS] = { }; };
81
+
82
+ if (!exists $self->[DEFINITIONS]->{$file})
83
+ {
84
+ if (!defined $definition)
85
+ { $definition = 1; };
86
+
87
+ $self->[DEFINITIONS]->{$file} = $definition;
88
+ return 1;
89
+ }
90
+ else
91
+ { return 0; };
92
+ };
93
+
94
+
95
+ #
96
+ # Function: ChangeDefinition
97
+ #
98
+ # Changes the definition for the passed <FileName>.
99
+ #
100
+ # Parameters:
101
+ #
102
+ # file - The <FileName>.
103
+ # definition - The definition, which must be an object derived from <NaturalDocs::SourceDB::ItemDefinition>.
104
+ #
105
+ sub ChangeDefinition #(FileName file, NaturalDocs::SourceDB::ItemDefinition definition)
106
+ {
107
+ my ($self, $file, $definition) = @_;
108
+
109
+ if (!defined $self->[DEFINITIONS] || !exists $self->[DEFINITIONS]->{$file})
110
+ { die "Tried to change a non-existant definition in SourceD::Item."; };
111
+
112
+ $self->[DEFINITIONS]->{$file} = $definition;
113
+ };
114
+
115
+
116
+ #
117
+ # Function: GetDefinition
118
+ #
119
+ # Returns the <NaturalDocs::SourceDB::ItemDefinition>-derived object for the passed <FileName>, non-zero if it only tracks
120
+ # existence, or undef if there is no definition.
121
+ #
122
+ sub GetDefinition #(FileName file) => NaturalDocs::SourceDB::ItemDefinition or bool
123
+ {
124
+ my ($self, $file) = @_;
125
+
126
+ if (defined $self->[DEFINITIONS])
127
+ { return $self->[DEFINITIONS]->{$file}; }
128
+ else
129
+ { return undef; };
130
+ };
131
+
132
+
133
+ #
134
+ # Function: DeleteDefinition
135
+ #
136
+ # Removes the definition for the passed <FileName>. Returns whether it was successful, meaning whether a definition existed
137
+ # for that file.
138
+ #
139
+ sub DeleteDefinition #(FileName file) => bool
140
+ {
141
+ my ($self, $file) = @_;
142
+
143
+ if (defined $self->[DEFINITIONS])
144
+ {
145
+ if (exists $self->[DEFINITIONS]->{$file})
146
+ {
147
+ delete $self->[DEFINITIONS]->{$file};
148
+
149
+ if (!scalar keys %{$self->[DEFINITIONS]})
150
+ { $self->[DEFINITIONS] = undef; };
151
+
152
+ return 1;
153
+ };
154
+ };
155
+
156
+ return 0;
157
+ };
158
+
159
+
160
+ #
161
+ # Function: HasDefinitions
162
+ #
163
+ # Returns whether there are any definitions for this item.
164
+ #
165
+ sub HasDefinitions # => bool
166
+ {
167
+ my $self = shift;
168
+ return (defined $self->[DEFINITIONS]);
169
+ };
170
+
171
+
172
+ #
173
+ # Function: HasDefinition
174
+ #
175
+ # Returns whether there is a definition for the passed <FileName>.
176
+ #
177
+ sub HasDefinition #(FileName file) => bool
178
+ {
179
+ my ($self, $file) = @_;
180
+
181
+ if (defined $self->[DEFINITIONS])
182
+ { return (exists $self->[DEFINITIONS]->{$file}); }
183
+ else
184
+ { return 0; };
185
+ };
186
+
187
+
188
+ #
189
+ # Function: GetAllDefinitionsHashRef
190
+ #
191
+ # Returns a hashref of all the definitions of this item. *Do not change.* The keys are the <FileNames>, and the values are
192
+ # either <NaturalDocs::SourceDB::ItemDefinition>-derived objects or it's just an existence hashref if those aren't used.
193
+ #
194
+ sub GetAllDefinitionsHashRef
195
+ {
196
+ my $self = shift;
197
+ return $self->[DEFINITIONS];
198
+ };
199
+
200
+
201
+ 1;
@@ -0,0 +1,45 @@
1
+ ###############################################################################
2
+ #
3
+ # Package: NaturalDocs::SourceDB::ItemDefinition
4
+ #
5
+ ###############################################################################
6
+ #
7
+ # A base class for all item definitions for extensions that track more than existence.
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::SourceDB::ItemDefinition;
19
+
20
+
21
+ #
22
+ # Function: Compare
23
+ #
24
+ # Returns whether the definitions are equal. This version returns true by default, you must override it in your subclasses
25
+ # to make the results relevant. This is important for <NaturalDocs::SourceDB->AnalyzeTrackedFileChanges()>.
26
+ #
27
+ # This will only be called between objects of the same <ExtensionID>. If you use multiple derived classes for the same
28
+ # <ExtensionID>, you will have to take that into account yourself.
29
+ #
30
+ # Parameters:
31
+ #
32
+ # other - Another <NaturalDocs::SourceDB::ItemDefinition>-derived object to compare this one to. It will always be from
33
+ # the same <ExtensionID>.
34
+ #
35
+ # Returns:
36
+ #
37
+ # Whether they are equal.
38
+ #
39
+ sub Compare #(other)
40
+ {
41
+ return 1;
42
+ };
43
+
44
+
45
+ 1;