bixbite 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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,159 @@
1
+ ###############################################################################
2
+ #
3
+ # Package: NaturalDocs::SourceDB::WatchedFileDefinitions
4
+ #
5
+ ###############################################################################
6
+ #
7
+ # A class to track the definitions appearing in a watched file. This is only used for extensions that track definition info with
8
+ # <NaturalDocs::SourceDB::ItemDefinition>-derived objects. Do not use it for extensions that only track existence.
9
+ #
10
+ ###############################################################################
11
+
12
+ # This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure
13
+ # Natural Docs is licensed under the GPL
14
+
15
+ use strict;
16
+ use integer;
17
+
18
+
19
+ package NaturalDocs::SourceDB::WatchedFileDefinitions;
20
+
21
+
22
+ #
23
+ # Variables: Members
24
+ #
25
+ # This object would only have one member, which is an array, so the object itself serves as that member.
26
+ #
27
+ # <ExtensionIDs> are used as indexes into this object. Each entry is a hashref that maps item strings to
28
+ # <NaturalDocs::SourceDB::ItemDefinition>-derived objects. This is only done for extensions that use those objects to track
29
+ # definitions, it's not needed for extensions that only track existence. If there are no definitions, the entry will be undef.
30
+ #
31
+
32
+
33
+ #
34
+ # Function: New
35
+ #
36
+ # Creates and returns a new object.
37
+ #
38
+ sub New
39
+ {
40
+ my $class = shift;
41
+
42
+ my $object = [ ];
43
+ bless $object, $class;
44
+
45
+ return $object;
46
+ };
47
+
48
+
49
+
50
+ ###############################################################################
51
+ # Group: Definition Functions
52
+ #
53
+
54
+
55
+ #
56
+ # Function: AddDefinition
57
+ #
58
+ # Adds a definition for the passed item string. If it's already defined, the new definition will be ignored.
59
+ #
60
+ # Parameters:
61
+ #
62
+ # extension - The <ExtensionID>.
63
+ # itemString - The item string.
64
+ # definition - The definition, which must be an object derived from <NaturalDocs::SourceDB::ItemDefinition>.
65
+ #
66
+ # Returns:
67
+ #
68
+ # Whether the definition was added, which is to say, whether this was the first definition for the passed <FileName>.
69
+ #
70
+ sub AddDefinition #(ExtensionID extension, string itemString, NaturalDocs::SourceDB::ItemDefinition definition) => bool
71
+ {
72
+ my ($self, $extension, $itemString, $definition) = @_;
73
+
74
+ if (!defined $self->[$extension])
75
+ { $self->[$extension] = { }; };
76
+
77
+ if (!exists $self->[$extension]->{$itemString})
78
+ {
79
+ $self->[$extension]->{$itemString} = $definition;
80
+ return 1;
81
+ }
82
+ else
83
+ { return 0; };
84
+ };
85
+
86
+
87
+ #
88
+ # Function: GetDefinition
89
+ #
90
+ # Returns the <NaturalDocs::SourceDB::ItemDefinition>-derived object for the passed item string or undef if there is none.
91
+ #
92
+ sub GetDefinition #(ExtensionID extension, string itemString) => NaturalDocs::SourceDB::ItemDefinition
93
+ {
94
+ my ($self, $extension, $itemString) = @_;
95
+
96
+ if (defined $self->[$extension])
97
+ { return $self->[$extension]->{$itemString}; }
98
+ else
99
+ { return undef; };
100
+ };
101
+
102
+
103
+ #
104
+ # Function: DeleteDefinition
105
+ #
106
+ # Removes the definition for the passed item string. Returns whether it was successful, meaning whether a definition existed
107
+ # for that item.
108
+ #
109
+ sub DeleteDefinition #(ExtensionID extension, string itemString) => bool
110
+ {
111
+ my ($self, $extension, $itemString) = @_;
112
+
113
+ if (defined $self->[$extension])
114
+ {
115
+ if (exists $self->[$extension]->{$itemString})
116
+ {
117
+ delete $self->[$extension]->{$itemString};
118
+
119
+ if (!scalar keys %{$self->[$extension]})
120
+ { $self->[$extension] = undef; };
121
+
122
+ return 1;
123
+ };
124
+ };
125
+
126
+ return 0;
127
+ };
128
+
129
+
130
+ #
131
+ # Function: HasDefinitions
132
+ #
133
+ # Returns whether there are any definitions for this item.
134
+ #
135
+ sub HasDefinitions #(ExtensionID extension) => bool
136
+ {
137
+ my ($self, $extension) = @_;
138
+
139
+ return (defined $self->[$extension]);
140
+ };
141
+
142
+
143
+ #
144
+ # Function: HasDefinition
145
+ #
146
+ # Returns whether there is a definition for the passed item string.
147
+ #
148
+ sub HasDefinition #(ExtensionID extension, string itemString) => bool
149
+ {
150
+ my ($self, $extension, $itemString) = @_;
151
+
152
+ if (defined $self->[$extension])
153
+ { return (exists $self->[$extension]->{$itemString}); }
154
+ else
155
+ { return 0; };
156
+ };
157
+
158
+
159
+ 1;
@@ -0,0 +1,102 @@
1
+ ###############################################################################
2
+ #
3
+ # Package: NaturalDocs::StatusMessage
4
+ #
5
+ ###############################################################################
6
+ #
7
+ # A package to handle status message updates. Automatically handles <NaturalDocs::Settings->IsQuiet()>.
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
+ package NaturalDocs::StatusMessage;
18
+
19
+
20
+ #
21
+ # var: message
22
+ # The message to display.
23
+ #
24
+ my $message;
25
+
26
+ #
27
+ # var: total
28
+ # The number of items to work through.
29
+ #
30
+ my $total;
31
+
32
+ #
33
+ # var: completed
34
+ # The number of items completed.
35
+ #
36
+ my $completed;
37
+
38
+ #
39
+ # var: lastMessageTime
40
+ # The time the last message was posted.
41
+ #
42
+ my $lastMessageTime;
43
+
44
+
45
+ #
46
+ # constant: TIME_BETWEEN_UPDATES
47
+ # The number of seconds that should occur between updates.
48
+ #
49
+ use constant TIME_BETWEEN_UPDATES => 10;
50
+
51
+
52
+
53
+ #
54
+ # Function: Start
55
+ #
56
+ # Starts the status message.
57
+ #
58
+ # Parameters:
59
+ #
60
+ # message - The message to post.
61
+ # total - The number of items that are going to be worked through.
62
+ #
63
+ sub Start #(message, total)
64
+ {
65
+ my $self = shift;
66
+
67
+ if (!NaturalDocs::Settings->IsQuiet())
68
+ {
69
+ ($message, $total) = @_;
70
+ $completed = 0;
71
+
72
+ print $message . "\n";
73
+
74
+ $lastMessageTime = time();
75
+ };
76
+ };
77
+
78
+
79
+ #
80
+ # Function: CompletedItem
81
+ #
82
+ # Should be called every time an item is completed.
83
+ #
84
+ sub CompletedItem
85
+ {
86
+ my $self = shift;
87
+
88
+ if (!NaturalDocs::Settings->IsQuiet())
89
+ {
90
+ # We scale completed by 100 since we need to anyway to get the percentage.
91
+
92
+ $completed += 100;
93
+
94
+ if (time() >= $lastMessageTime + TIME_BETWEEN_UPDATES && $completed != $total * 100)
95
+ {
96
+ print $message . ' (' . ($completed / $total) . '%)' . "\n";
97
+ $lastMessageTime = time();
98
+ };
99
+ };
100
+ };
101
+
102
+ 1;
@@ -0,0 +1,212 @@
1
+ ###############################################################################
2
+ #
3
+ # Package: NaturalDocs::SymbolString
4
+ #
5
+ ###############################################################################
6
+ #
7
+ # A package to manage <SymbolString> handling throughout the program.
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
+ package NaturalDocs::SymbolString;
18
+
19
+
20
+ #
21
+ # Function: FromText
22
+ #
23
+ # Extracts and returns a <SymbolString> from plain text.
24
+ #
25
+ # This should be the only way to get a <SymbolString> from plain text, as the splitting and normalization must be consistent
26
+ # throughout the application.
27
+ #
28
+ sub FromText #(string textSymbol)
29
+ {
30
+ my ($self, $textSymbol) = @_;
31
+
32
+ # The internal format of a symbol is all the normalized identifiers separated by 0x1F characters.
33
+
34
+ # Convert whitespace and reserved characters to spaces, and condense multiple consecutive ones.
35
+ $textSymbol =~ tr/ \t\r\n\x1C\x1D\x1E\x1F/ /s;
36
+
37
+ # DEPENDENCY: ReferenceString->MakeFrom() assumes all 0x1E characters were removed.
38
+ # DEPENDENCY: ReferenceString->MakeFrom() assumes this encoding doesn't use 0x1E characters.
39
+
40
+ # Remove spaces unless they're separating two alphanumeric/underscore characters.
41
+ $textSymbol =~ s/^ //;
42
+ $textSymbol =~ s/ $//;
43
+ $textSymbol =~ s/(\W) /$1/g;
44
+ $textSymbol =~ s/ (\W)/$1/g;
45
+
46
+ # Remove trailing empty parenthesis, so Function and Function() are equivalent.
47
+ $textSymbol =~ s/\(\)$//;
48
+
49
+ # Split the string into pieces.
50
+ my @pieces = split(/(\.|::|->)/, $textSymbol);
51
+ my $symbolString;
52
+
53
+ my $lastWasSeparator = 1;
54
+
55
+ foreach my $piece (@pieces)
56
+ {
57
+ if ($piece =~ /^(?:\.|::|->)$/)
58
+ {
59
+ if (!$lastWasSeparator)
60
+ {
61
+ $symbolString .= "\x1F";
62
+ $lastWasSeparator = 1;
63
+ };
64
+ }
65
+ elsif (length $piece)
66
+ {
67
+ $symbolString .= $piece;
68
+ $lastWasSeparator = 0;
69
+ };
70
+ # Ignore empty pieces
71
+ };
72
+
73
+ $symbolString =~ s/\x1F$//;
74
+
75
+ return $symbolString;
76
+ };
77
+
78
+
79
+ #
80
+ # Function: ToText
81
+ #
82
+ # Converts a <SymbolString> to text, using the passed separator.
83
+ #
84
+ sub ToText #(SymbolString symbolString, string separator)
85
+ {
86
+ my ($self, $symbolString, $separator) = @_;
87
+
88
+ my @identifiers = $self->IdentifiersOf($symbolString);
89
+ return join($separator, @identifiers);
90
+ };
91
+
92
+
93
+ #
94
+ # Function: ToBinaryFile
95
+ #
96
+ # Writes a <SymbolString> to the passed filehandle. Can also encode an undef.
97
+ #
98
+ # Parameters:
99
+ #
100
+ # fileHandle - The filehandle to write to.
101
+ # symbol - The <SymbolString> to write, or undef.
102
+ #
103
+ # Format:
104
+ #
105
+ # > [UInt8: number of identifiers]
106
+ # > [AString16: identifier] [AString16: identifier] ...
107
+ #
108
+ # Undef is represented by a zero for the number of identifiers.
109
+ #
110
+ sub ToBinaryFile #(FileHandle fileHandle, SymbolString symbol)
111
+ {
112
+ my ($self, $fileHandle, $symbol) = @_;
113
+
114
+ my @identifiers;
115
+ if (defined $symbol)
116
+ { @identifiers = $self->IdentifiersOf($symbol); };
117
+
118
+ print $fileHandle pack('C', scalar @identifiers);
119
+
120
+ foreach my $identifier (@identifiers)
121
+ {
122
+ print $fileHandle pack('nA*', length($identifier), $identifier);
123
+ };
124
+ };
125
+
126
+
127
+ #
128
+ # Function: FromBinaryFile
129
+ #
130
+ # Loads a <SymbolString> or undef from the filehandle and returns it.
131
+ #
132
+ # Parameters:
133
+ #
134
+ # fileHandle - The filehandle to read from.
135
+ #
136
+ # Returns:
137
+ #
138
+ # The <SymbolString> or undef.
139
+ #
140
+ # See also:
141
+ #
142
+ # See <ToBinaryFile()> for format and dependencies.
143
+ #
144
+ sub FromBinaryFile #(FileHandle fileHandle)
145
+ {
146
+ my ($self, $fileHandle) = @_;
147
+
148
+ my $raw;
149
+
150
+ # [UInt8: number of identifiers or 0 if none]
151
+
152
+ read($fileHandle, $raw, 1);
153
+ my $identifierCount = unpack('C', $raw);
154
+
155
+ my @identifiers;
156
+
157
+ while ($identifierCount)
158
+ {
159
+ # [AString16: identifier] [AString16: identifier] ...
160
+
161
+ read($fileHandle, $raw, 2);
162
+ my $identifierLength = unpack('n', $raw);
163
+
164
+ my $identifier;
165
+ read($fileHandle, $identifier, $identifierLength);
166
+
167
+ push @identifiers, $identifier;
168
+
169
+ $identifierCount--;
170
+ };
171
+
172
+ if (scalar @identifiers)
173
+ { return $self->Join(@identifiers); }
174
+ else
175
+ { return undef; };
176
+ };
177
+
178
+
179
+ #
180
+ # Function: IdentifiersOf
181
+ #
182
+ # Returns the <SymbolString> as an array of identifiers.
183
+ #
184
+ sub IdentifiersOf #(SymbolString symbol)
185
+ {
186
+ my ($self, $symbol) = @_;
187
+ return split(/\x1F/, $symbol);
188
+ };
189
+
190
+
191
+ #
192
+ # Function: Join
193
+ #
194
+ # Takes a list of identifiers and/or <SymbolStrings> and returns it as a new <SymbolString>.
195
+ #
196
+ sub Join #(string/SymbolString identifier/symbol, string/SymolString identifier/symbol, ...)
197
+ {
198
+ my ($self, @pieces) = @_;
199
+
200
+ # Can't have undefs screwing everything up.
201
+ while (scalar @pieces && !defined $pieces[0])
202
+ { shift @pieces; };
203
+
204
+ # We need to test @pieces first because joining on an empty array returns an empty string rather than undef.
205
+ if (scalar @pieces)
206
+ { return join("\x1F", @pieces); }
207
+ else
208
+ { return undef; };
209
+ };
210
+
211
+
212
+ 1;