From e42c493d0c294ccb0a314c8447818c8d613195df Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Thu, 17 Jan 2008 12:56:19 +0000 Subject: removed olds docs --- docs/doctool/Config/Languages.txt | 285 -- docs/doctool/Config/Topics.txt | 386 --- docs/doctool/Help/bugs.html | 30 - docs/doctool/Help/customizinglanguages.html | 48 - docs/doctool/Help/customizingtopics.html | 59 - docs/doctool/Help/documenting.html | 160 - docs/doctool/Help/example/Default.css | 507 ---- docs/doctool/Help/example/NaturalDocs.js | 204 -- docs/doctool/Help/example/Roman.css | 507 ---- docs/doctool/Help/example/Small.css | 507 ---- docs/doctool/Help/example/showstyle.html | 43 - docs/doctool/Help/examples.css | 74 - docs/doctool/Help/favicon.ico | Bin 1406 -> 0 bytes docs/doctool/Help/images/header/background.png | Bin 229 -> 0 bytes docs/doctool/Help/images/header/leftside.png | Bin 1215 -> 0 bytes docs/doctool/Help/images/header/logo.png | Bin 12146 -> 0 bytes docs/doctool/Help/images/header/overbody.png | Bin 283 -> 0 bytes docs/doctool/Help/images/header/overbodybg.png | Bin 141 -> 0 bytes docs/doctool/Help/images/header/overleftmargin.png | Bin 188 -> 0 bytes docs/doctool/Help/images/header/overmenu.png | Bin 244 -> 0 bytes docs/doctool/Help/images/header/overmenubg.png | Bin 141 -> 0 bytes docs/doctool/Help/images/header/rightside.png | Bin 1186 -> 0 bytes docs/doctool/Help/images/menu/about.png | Bin 397 -> 0 bytes docs/doctool/Help/images/menu/background.png | Bin 187 -> 0 bytes docs/doctool/Help/images/menu/bottomleft.png | Bin 235 -> 0 bytes docs/doctool/Help/images/menu/bottomright.png | Bin 234 -> 0 bytes docs/doctool/Help/images/menu/community.png | Bin 507 -> 0 bytes docs/doctool/Help/images/menu/customizing.png | Bin 575 -> 0 bytes docs/doctool/Help/images/menu/using.png | Bin 390 -> 0 bytes docs/doctool/Help/index.html | 161 - docs/doctool/Help/javascript/BrowserStyles.js | 75 - docs/doctool/Help/javascript/PNGHandling.js | 69 - docs/doctool/Help/keywords.html | 34 - docs/doctool/Help/languages.html | 28 - docs/doctool/Help/menu.html | 50 - docs/doctool/Help/messageboards.html | 32 - docs/doctool/Help/output.html | 71 - docs/doctool/Help/running.html | 35 - docs/doctool/Help/styles.css | 259 -- docs/doctool/Help/styles.html | 43 - docs/doctool/Help/troubleshooting.html | 14 - docs/doctool/Info/CSSGuide.txt | 782 ----- docs/doctool/Info/Languages.txt | 105 - docs/doctool/Info/NDMarkup.txt | 80 - docs/doctool/JavaScript/NaturalDocs.js | 276 -- docs/doctool/License-GPL.txt | 341 --- docs/doctool/Modules/NaturalDocs/Builder.pm | 237 -- docs/doctool/Modules/NaturalDocs/Builder/Base.pm | 316 -- .../Modules/NaturalDocs/Builder/FramedHTML.pm | 294 -- docs/doctool/Modules/NaturalDocs/Builder/HTML.pm | 363 --- .../Modules/NaturalDocs/Builder/HTMLBase.pm | 3075 ------------------- docs/doctool/Modules/NaturalDocs/ClassHierarchy.pm | 861 ------ .../Modules/NaturalDocs/ClassHierarchy/Class.pm | 412 --- .../Modules/NaturalDocs/ClassHierarchy/File.pm | 157 - docs/doctool/Modules/NaturalDocs/ConfigFile.pm | 497 --- docs/doctool/Modules/NaturalDocs/Constants.pm | 229 -- docs/doctool/Modules/NaturalDocs/DefineMembers.pm | 100 - docs/doctool/Modules/NaturalDocs/Error.pm | 305 -- docs/doctool/Modules/NaturalDocs/File.pm | 521 ---- docs/doctool/Modules/NaturalDocs/Languages.pm | 1471 --------- .../Modules/NaturalDocs/Languages/ActionScript.pm | 885 ------ docs/doctool/Modules/NaturalDocs/Languages/Ada.pm | 38 - .../Modules/NaturalDocs/Languages/Advanced.pm | 801 ----- .../NaturalDocs/Languages/Advanced/Scope.pm | 95 - .../NaturalDocs/Languages/Advanced/ScopeChange.pm | 70 - docs/doctool/Modules/NaturalDocs/Languages/Base.pm | 743 ----- .../Modules/NaturalDocs/Languages/CSharp.pm | 1215 -------- .../doctool/Modules/NaturalDocs/Languages/PLSQL.pm | 313 -- .../Modules/NaturalDocs/Languages/Pascal.pm | 143 - docs/doctool/Modules/NaturalDocs/Languages/Perl.pm | 1338 --------- .../Modules/NaturalDocs/Languages/Prototype.pm | 92 - .../NaturalDocs/Languages/Prototype/Parameter.pm | 74 - .../Modules/NaturalDocs/Languages/Simple.pm | 495 --- docs/doctool/Modules/NaturalDocs/Languages/Tcl.pm | 219 -- docs/doctool/Modules/NaturalDocs/Menu.pm | 3168 -------------------- docs/doctool/Modules/NaturalDocs/Menu/Entry.pm | 201 -- docs/doctool/Modules/NaturalDocs/NDMarkup.pm | 76 - docs/doctool/Modules/NaturalDocs/Parser.pm | 1209 -------- docs/doctool/Modules/NaturalDocs/Parser/Native.pm | 926 ------ .../Modules/NaturalDocs/Parser/ParsedTopic.pm | 210 -- docs/doctool/Modules/NaturalDocs/Project.pm | 966 ------ docs/doctool/Modules/NaturalDocs/Project/File.pm | 113 - .../doctool/Modules/NaturalDocs/ReferenceString.pm | 301 -- docs/doctool/Modules/NaturalDocs/Settings.pm | 1258 -------- .../Modules/NaturalDocs/Settings/BuildTarget.pm | 91 - docs/doctool/Modules/NaturalDocs/StatusMessage.pm | 102 - docs/doctool/Modules/NaturalDocs/SymbolString.pm | 208 -- docs/doctool/Modules/NaturalDocs/SymbolTable.pm | 1810 ----------- .../Modules/NaturalDocs/SymbolTable/File.pm | 186 -- .../NaturalDocs/SymbolTable/IndexElement.pm | 522 ---- .../Modules/NaturalDocs/SymbolTable/Reference.pm | 273 -- .../NaturalDocs/SymbolTable/ReferenceTarget.pm | 97 - .../Modules/NaturalDocs/SymbolTable/Symbol.pm | 428 --- .../NaturalDocs/SymbolTable/SymbolDefinition.pm | 96 - docs/doctool/Modules/NaturalDocs/Topics.pm | 1351 --------- docs/doctool/Modules/NaturalDocs/Topics/Type.pm | 155 - docs/doctool/Modules/NaturalDocs/Version.pm | 201 -- docs/doctool/NaturalDocs | 386 --- docs/doctool/NaturalDocs.bat | 17 - docs/doctool/Styles/Default.css | 540 ---- docs/doctool/Styles/Roman.css | 541 ---- docs/doctool/Styles/Small.css | 541 ---- 102 files changed, 36597 deletions(-) delete mode 100644 docs/doctool/Config/Languages.txt delete mode 100644 docs/doctool/Config/Topics.txt delete mode 100644 docs/doctool/Help/bugs.html delete mode 100644 docs/doctool/Help/customizinglanguages.html delete mode 100644 docs/doctool/Help/customizingtopics.html delete mode 100644 docs/doctool/Help/documenting.html delete mode 100644 docs/doctool/Help/example/Default.css delete mode 100644 docs/doctool/Help/example/NaturalDocs.js delete mode 100644 docs/doctool/Help/example/Roman.css delete mode 100644 docs/doctool/Help/example/Small.css delete mode 100644 docs/doctool/Help/example/showstyle.html delete mode 100644 docs/doctool/Help/examples.css delete mode 100644 docs/doctool/Help/favicon.ico delete mode 100644 docs/doctool/Help/images/header/background.png delete mode 100644 docs/doctool/Help/images/header/leftside.png delete mode 100644 docs/doctool/Help/images/header/logo.png delete mode 100644 docs/doctool/Help/images/header/overbody.png delete mode 100644 docs/doctool/Help/images/header/overbodybg.png delete mode 100644 docs/doctool/Help/images/header/overleftmargin.png delete mode 100644 docs/doctool/Help/images/header/overmenu.png delete mode 100644 docs/doctool/Help/images/header/overmenubg.png delete mode 100644 docs/doctool/Help/images/header/rightside.png delete mode 100644 docs/doctool/Help/images/menu/about.png delete mode 100644 docs/doctool/Help/images/menu/background.png delete mode 100644 docs/doctool/Help/images/menu/bottomleft.png delete mode 100644 docs/doctool/Help/images/menu/bottomright.png delete mode 100644 docs/doctool/Help/images/menu/community.png delete mode 100644 docs/doctool/Help/images/menu/customizing.png delete mode 100644 docs/doctool/Help/images/menu/using.png delete mode 100644 docs/doctool/Help/index.html delete mode 100644 docs/doctool/Help/javascript/BrowserStyles.js delete mode 100644 docs/doctool/Help/javascript/PNGHandling.js delete mode 100644 docs/doctool/Help/keywords.html delete mode 100644 docs/doctool/Help/languages.html delete mode 100644 docs/doctool/Help/menu.html delete mode 100644 docs/doctool/Help/messageboards.html delete mode 100644 docs/doctool/Help/output.html delete mode 100644 docs/doctool/Help/running.html delete mode 100644 docs/doctool/Help/styles.css delete mode 100644 docs/doctool/Help/styles.html delete mode 100644 docs/doctool/Help/troubleshooting.html delete mode 100644 docs/doctool/Info/CSSGuide.txt delete mode 100644 docs/doctool/Info/Languages.txt delete mode 100644 docs/doctool/Info/NDMarkup.txt delete mode 100644 docs/doctool/JavaScript/NaturalDocs.js delete mode 100644 docs/doctool/License-GPL.txt delete mode 100644 docs/doctool/Modules/NaturalDocs/Builder.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Builder/Base.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Builder/FramedHTML.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Builder/HTML.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Builder/HTMLBase.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/ClassHierarchy.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/ClassHierarchy/Class.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/ClassHierarchy/File.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/ConfigFile.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Constants.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/DefineMembers.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Error.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/File.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/ActionScript.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Ada.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Advanced.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Advanced/Scope.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Advanced/ScopeChange.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Base.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/CSharp.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/PLSQL.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Pascal.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Perl.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Prototype.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Prototype/Parameter.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Simple.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Languages/Tcl.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Menu.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Menu/Entry.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/NDMarkup.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Parser.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Parser/Native.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Parser/ParsedTopic.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Project.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Project/File.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/ReferenceString.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Settings.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Settings/BuildTarget.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/StatusMessage.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/SymbolString.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/SymbolTable.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/SymbolTable/File.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/SymbolTable/IndexElement.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/SymbolTable/Reference.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/SymbolTable/ReferenceTarget.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/SymbolTable/Symbol.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/SymbolTable/SymbolDefinition.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Topics.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Topics/Type.pm delete mode 100644 docs/doctool/Modules/NaturalDocs/Version.pm delete mode 100755 docs/doctool/NaturalDocs delete mode 100644 docs/doctool/NaturalDocs.bat delete mode 100644 docs/doctool/Styles/Default.css delete mode 100644 docs/doctool/Styles/Roman.css delete mode 100644 docs/doctool/Styles/Small.css (limited to 'docs/doctool') diff --git a/docs/doctool/Config/Languages.txt b/docs/doctool/Config/Languages.txt deleted file mode 100644 index 78a77a5a..00000000 --- a/docs/doctool/Config/Languages.txt +++ /dev/null @@ -1,285 +0,0 @@ -Format: 1.35 - -# This is the main Natural Docs languages file. If you change anything here, -# it will apply to EVERY PROJECT you use Natural Docs on. If you'd like to -# change something for just one project, edit the Languages.txt in its project -# directory instead. - - -#------------------------------------------------------------------------------- -# SYNTAX: -# -# Unlike other Natural Docs configuration files, in this file all comments -# MUST be alone on a line. Some languages deal with the # character, so you -# cannot put comments on the same line as content. -# -# Also, all lists are separated with spaces, not commas, again because some -# languages may need to use them. -# -# Language: [name] -# Defines a new language. Its name can use any characters. -# -# The language Shebang Script is special. It's entry is only used for -# extensions, and files with those extensions have their shebang (#!) lines -# read to determine the real language of the file. Extensionless files are -# always treated this way. -# -# The language Text File is also special. It's treated as one big comment -# so you can put Natural Docs content in them without special symbols. Also, -# if you don't specify a package separator, ignored prefixes, or enum value -# behavior, it will copy those settings from the language that is used most -# in the source tree. -# -# Extensions: [extension] [extension] ... -# Defines the file extensions of the language's source files. You can use * -# to mean any undefined extension. -# -# Shebang Strings: [string] [string] ... -# Defines a list of strings that can appear in the shebang (#!) line to -# designate that it's part of the language. -# -# Ignore Prefixes in Index: [prefix] [prefix] ... -# Ignore [Topic Type] Prefixes in Index: [prefix] [prefix] ... -# Specifies prefixes that should be ignored when sorting symbols in an -# index. Can be specified in general or for a specific topic type. -# -#------------------------------------------------------------------------------ -# For basic language support only: -# -# Line Comments: [symbol] [symbol] ... -# Defines a space-separated list of symbols that are used for line comments, -# if any. -# -# Block Comments: [opening sym] [closing sym] [opening sym] [closing sym] ... -# Defines a space-separated list of symbol pairs that are used for block -# comments, if any. -# -# Package Separator: [symbol] -# Defines the default package separator symbol. The default is a dot. -# -# [Topic Type] Prototype Enders: [symbol] [symbol] ... -# When defined, Natural Docs will attempt to get a prototype from the code -# immediately following the topic type. It stops when it reaches one of -# these symbols. Use \n for line breaks. -# -# Line Extender: [symbol] -# Defines the symbol that allows a prototype to span multiple lines if -# normally a line break would end it. -# -# Enum Values: [global|under type|under parent] -# Defines how enum values are referenced. The default is global. -# global - Values are always global, referenced as 'value'. -# under type - Values are under the enum type, referenced as -# 'package.enum.value'. -# under parent - Values are under the enum's parent, referenced as -# 'package.value'. -# -# Perl Package: [perl package] -# Specifies the Perl package used to fine-tune the language behavior in ways -# too complex to do in this file. -# -#------------------------------------------------------------------------------ -# For full language support only: -# -# Full Language Support: [perl package] -# Specifies the Perl package that has the parsing routines necessary for full -# language support. -# -#------------------------------------------------------------------------------- - -# The following languages MUST be defined in this file: -# -# Text File, Shebang Script - -# If you add a language that you think would be useful to other developers -# and should be included in Natural Docs by default, please e-mail it to -# languages [at] naturaldocs [dot] org. - - -Language: Text File - - Extension: txt - - -Language: Shebang Script - - Extension: cgi - - -Language: C/C++ - - Extensions: c cpp h hpp cxx hxx - Ignore Function Prefix in Index: ~ - Line Comment: // - Block Comment: /* */ - Package Separator: :: - Enum Values: Global - Function Prototype Enders: ; { - Variable Prototype Enders: ; = - - -Language: C# - - Extension: cs - Ignore Prefix in Index: @ - Full Language Support: NaturalDocs::Languages::CSharp - - -Language: Java - - Extension: java - Line Comment: // - Block Comment: /* */ - Enum Values: Local - Function Prototype Ender: { - Variable Prototype Enders: ; = - - -Language: JavaScript - - Extension: js - Line Comment: // - Block Comment: /* */ - Enum Values: Local - Function Prototype Ender: { - Variable Prototype Enders: ; = - - -Language: Perl - - Extensions: pl pm - Shebang String: perl - Ignore Variable Prefixes in Index: $ @ % * - Full Language Support: NaturalDocs::Languages::Perl - - -Language: Python - - Extension: py - Shebang String: python - Line Comment: # - Function Prototype Ender: : - Variable Prototype Ender: = - Line Extender: \ - - -Language: PHP - - Extensions: inc php php3 php4 phtml - Shebang String: php - Ignore Variable Prefix in Index: $ - Line Comments: // # - Block Comment: /* */ - Function Prototype Enders: ; { - Variable Prototype Enders: ; = - - -Language: SQL - - Extension: sql - Line Comment: -- - Block Comment: /* */ - Enum Values: Global - Function Prototype Enders: , ; ) as As AS is Is IS - Variable Prototype Enders: , ; ) := default Default DEFAULT - Database Index Prototype Enders: , ; ) - Database Trigger Prototype Enders: begin Begin BEGIN as As AS - Perl Package: NaturalDocs::Languages::PLSQL - - -Language: Visual Basic - - Extensions: vb vbs bas cls frm - Line Comment: ' - Enum Values: Local - Function Prototype Ender: \n - Variable Prototype Enders: \n = - Line Extender: _ - - -Language: Pascal - - Extension: pas - Line Comment: // - Block Comments: { } (* *) - Function Prototype Ender: ; - Variable Prototype Enders: ; = - Perl Package: NaturalDocs::Languages::Pascal - - -Language: Assembly - - Extension: asm - Line Comment: ; - Variable Prototype Ender: \n - Line Extender: \ - - -Language: Ada - - Extensions: ada ads adb - Line Comment: -- - Function Prototype Enders: ; is Is IS - Variable Prototype Enders: ; := - Perl Package: NaturalDocs::Languages::Ada - - -Language: Tcl - - Extensions: tcl exp - Shebang Strings: tclsh wish expect - Line Comment: # - Package Separator: :: - Function Prototype Enders: ; { - Variable Prototype Enders: ; \n - Line Extender: \ - Perl Package: NaturalDocs::Languages::Tcl - - -Language: Ruby - - Extension: rb - Shebang String: ruby - Ignore Variable Prefixes in Index: $ @ @@ - Line Comment: # - Enum Values: Parent - Function Prototype Enders: ; \n - Variable Prototype Enders: ; \n = - Line Extender: \ - - -Language: Makefile - - Extensions: mk mak make - Line Comment: # - - -Language: ActionScript - - Extension: as - Full Language Support: NaturalDocs::Languages::ActionScript - - -Language: ColdFusion - - Extensions: cfm cfml cfc - Line Comment: // - Block Comments: /* */ - Function Prototype Enders: { < - - -Language: R - - Extension: r - Line Comment: # - Function Prototype Enders: { ; - Variable Prototype Enders: <- = ; \n - - -Language: Fortran - - Extensions: f90 f95 f03 - Line Comment: ! - Function Prototype Ender: \n - Variable Prototype Enders: \n = => - Line Extender: & diff --git a/docs/doctool/Config/Topics.txt b/docs/doctool/Config/Topics.txt deleted file mode 100644 index 34a2933a..00000000 --- a/docs/doctool/Config/Topics.txt +++ /dev/null @@ -1,386 +0,0 @@ -Format: 1.35 - -# This is the main Natural Docs topics file. If you change anything here, it -# will apply to EVERY PROJECT you use Natural Docs on. If you'd like to -# change something for just one project, edit the Topics.txt in its project -# directory instead. - - -#------------------------------------------------------------------------------- -# SYNTAX: -# -# Topic Type: [name] -# Creates a new topic type. Each type gets its own index and behavior -# settings. Its name can have letters, numbers, spaces, and these -# charaters: - / . ' -# -# The Enumeration type is special. It's indexed with Types but its members -# are indexed with Constants according to the rules in Languages.txt. -# -# Plural: [name] -# Sets the plural name of the topic type, if different. -# -# Keywords: -# [keyword] -# [keyword], [plural keyword] -# ... -# Defines a list of keywords for the topic type. They may only contain -# letters, numbers, and spaces and are not case sensitive. Plural keywords -# are used for list topics. -# -# Index: [yes|no] -# Whether the topics get their own index. Defaults to yes. Everything is -# included in the general index regardless of this setting. -# -# Scope: [normal|start|end|always global] -# How the topics affects scope. Defaults to normal. -# normal - Topics stay within the current scope. -# start - Topics start a new scope for all the topics beneath it, -# like class topics. -# end - Topics reset the scope back to global for all the topics -# beneath it. -# always global - Topics are defined as global, but do not change the scope -# for any other topics. -# -# Class Hierarchy: [yes|no] -# Whether the topics are part of the class hierarchy. Defaults to no. -# -# Variable Type: [yes|no] -# Whether the topics can be a variable type. Defaults to no. -# -# Page Title If First: [yes|no] -# Whether the topic's title becomes the page title if it's the first one in -# a file. Defaults to no. -# -# Break Lists: [yes|no] -# Whether list topics should be broken into individual topics in the output. -# Defaults to no. -# -# Can Group With: [type], [type], ... -# Defines a list of topic types that this one can possibly be grouped with. -# Defaults to none. -#------------------------------------------------------------------------------- - -# The following topics MUST be defined in this file: -# -# Generic, Class, Interface, Section, File, Group, Function, Variable, -# Property, Type, Constant, Enumeration, Event, Delegate - -# If you add something that you think would be useful to other developers -# and should be included in Natural Docs by default, please e-mail it to -# topics [at] naturaldocs [dot] org. - - -Topic Type: Generic - - Index: No - Keywords: - topic, topics - about, list - note - notes - - -Topic Type: Class - - Plural: Classes - Scope: Start - Class Hierarchy: Yes - Page Title If First: Yes - Can Group With: Interfaces - - Keywords: - class, classes - structure, structures - struct, structs - package, packages - namespace, namespaces - - -Topic Type: Interface - - Plural: Interfaces - Scope: Start - Class Hierarchy: Yes - Page Title If First: Yes - Can Group With: Classes - - Keywords: - interface, interfaces - - -Topic Type: Section - - Plural: Sections - Index: No - Scope: End - Page Title If First: Yes - - Keywords: - section - title - - -Topic Type: File - - Plural: Files - Scope: Always global - Page Title If First: Yes - - Keywords: - file, files - program, programs - script, scripts - document, documents - doc, docs - header, headers - - -Topic Type: Group - - Plural: Groups - Index: No - - Keywords: - group - - -Topic Type: Function - - Plural: Functions - Break Lists: Yes - Can Group With: Properties - - Keywords: - function, functions - func, funcs - procedure, procedures - proc, procs - routine, routines - subroutine, subroutines - sub, subs - method, methods - callback, callbacks - constructor, constructors - destructor, destructors - - -Topic Type: Variable - - Plural: Variables - Can Group With: Types, Constants, Macros, Enumerations - - Keywords: - variable, variables - var, vars - integer, integers - int, ints - uint, uints - long, longs - ulong, ulongs - short, shorts - ushort, ushorts - byte, bytes - ubyte, ubytes - sbyte, sbytes - float, floats - double, doubles - real, reals - decimal, decimals - scalar, scalars - array, arrays - arrayref, arrayrefs - hash, hashes - hashref, hashrefs - bool, bools - boolean, booleans - flag, flags - bit, bits - bitfield, bitfields - field, fields - pointer, pointers - ptr, ptrs - reference, references - ref, refs - object, objects - obj, objs - character, characters - wcharacter, wcharacters - char, chars - wchar, wchars - string, strings - wstring, wstrings - str, strs - wstr, wstrs - handle, handles - - -Topic Type: Property - - Plural: Properties - Can Group With: Functions - - Keywords: - property, properties - prop, props - - -Topic Type: Type - - Plural: Types - Can Group With: Variables, Constants, Macros, Enumerations - - Keywords: - type, types - typedef, typedefs - - -Topic Type: Constant - - Plural: Constants - Can Group With: Variables, Types, Macros, Enumerations - - Keywords: - constant, constants - const, consts - - -Topic Type: Enumeration - - Plural: Enumerations - Index: No - Can Group With: Variables, Types, Macros, Constants - - Keywords: - enum, enums - enumeration, enumerations - - -Topic Type: Event - - Plural: Events - Keywords: - event, events - - -Topic Type: Delegate - - Plural: Delegates - Keywords: - delegate, delegates - - -Topic Type: Macro - - Plural: Macros - Can Group With: Variables, Types, Constants - - Keywords: - define, defines - def, defs - macro, macros - - -Topic Type: Database - - Plural: Databases - Page Title If First: Yes - - Keywords: - database, databases - db, dbs - - -Topic Type: Database Table - - Plural: Database Tables - Scope: Start - Page Title If First: Yes - - Keywords: - table, tables - database table, database tables - databasetable, databasetables - db table, db tables - dbtable, dbtables - - -Topic Type: Database View - - Plural: Database Views - Scope: Start - Page Title If First: Yes - - Keywords: - view, views - database view, database views - databaseview, databaseviews - db view, db views - dbview, dbviews - - -Topic Type: Database Index - - Plural: Database Indexes - Keywords: - index, indexes - index, indices - database index, database indexes - database index, database indices - databaseindex, databaseindexes - databaseindex, databaseindices - db index, db indexes - db index, db indices - dbindex, dbindexes - dbindex, dbindices - key, keys - database key, database keys - databasekey, databasekeys - db key, db keys - dbkey, dbkeys - primary key, primary keys - primarykey, primarykeys - database primary key, database primary keys - databaseprimarykey, databaseprimarykeys - db primary key, db primary keys - dbprimarykey, dbprimarykeys - - -Topic Type: Database Cursor - - Plural: Database Cursors - Keywords: - cursor, cursors - database cursor, database cursors - databasecursor, databasecursors - db cursor, db cursors - dbcursor, dbcursors - - -Topic Type: Database Trigger - - Plural: Database Triggers - Keywords: - trigger, triggers - database trigger, database triggers - databasetrigger, databasetriggers - db trigger, db triggers - dbtrigger, dbtriggers - - -Topic Type: Cookie - - Plural: Cookies - Scope: Always global - - Keywords: - cookie, cookies - - -Topic Type: Build Target - - Plural: Build Targets - Keywords: - target, targets - build target, build targets - buildtarget, buildtargets diff --git a/docs/doctool/Help/bugs.html b/docs/doctool/Help/bugs.html deleted file mode 100644 index e72a7401..00000000 --- a/docs/doctool/Help/bugs.html +++ /dev/null @@ -1,30 +0,0 @@ - - -Natural Docs Bugs and Feature Requests
Natural Docs
Community
Web SiteMailing ListsMessage BoardsBugs and
Feature Requests
Bugs and Feature Requests

Although these services come from SourceForge, you do not need to have a SourceForge account to use to them.

Bug ReportsUse this database if Natural Docs isn’t behaving the way it should.
Feature RequestsUse this database if you want to see a feature in the next version of Natural Docs.
Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/customizinglanguages.html b/docs/doctool/Help/customizinglanguages.html deleted file mode 100644 index dba13599..00000000 --- a/docs/doctool/Help/customizinglanguages.html +++ /dev/null @@ -1,48 +0,0 @@ - - -Customizing Natural Docs Languages
Natural Docs
Customizing
Organizing the MenuCSS StylesTopics and KeywordsLanguages, Indexes,
and Prototypes
Customizing Languages

Natural Docs has two files called Languages.txt: one in its Config directory, and one in your project directory.  These control the language and index prefix features of Natural Docs.

You should edit the one in your project directory whenever possible.  It keeps your changes separate and easier to manage, plus you don’t have to reapply them whenever you upgrade.  Natural Docs will keep an up-to-date list of all the languages defined in the main file in it so you can override their settings easily.

However, if you’re using Natural Docs with a lot of projects and would like the changes to apply everywhere, you can edit the one in Natural Docs’ Config directory instead.  Most of the text here will assume you’re editing the project one, so be sure to read the boxes at the end that explain the differences.

Note that unlike other Natural Docs configuration files, comments can only appear on their own lines.  They cannot appear after content on the same line because settings may need to use the # symbol.  Also, all lists are space-separated instead of comma-separated, again because some settings may need to use the , symbol.

Index Prefixes

Natural Docs has the ability to ignore prefixes in the indexes.  This is necessary because in certain languages, variables are prefixed with $ or other symbols and we don’t want them to get all grouped together under the symbols heading.  Instead, they appear in the sidebar and are sorted as if they’re not there.

A
 AddProperty, SomeClass
$amount
 Average

However, we can take advantage of this simply to get around coding conventions.  Suppose you prefix all your class names with C.  They’d all form one gigantic group under C in the index.  If you want, you can have it ignored so CCat, CDog, and CMouse get filed under C, D, and M instead.  Just add this to your languages file:

Alter Language: [your language]
-   Add Ignored Class Prefix in Index: C

Now C is ignored in your indexes:

A
CAccount
CAccountHolder
 AddProperty, SomeClass
$amount
 Average

You can include any number of prefixes and can do this for any topic type.  So if you have a bunch of functions that start with COM_ and DB_, you can ignore them too:

Alter Language: [your language]
-   Add Ignored Class Prefix in Index: C
-   Add Ignored Function Prefixes in Index: COM_ DB_

Note that only one prefix will ever be removed, so if you have variable names that start with $ and want to remove m, you have to write “Ignore Variable Prefix: $m” instead of just m.

One last tip: Do this for common hierarchy levels.  For example, all of Natural Docs’ internal packages are under a top-level NaturalDocs package, so it’s package index ignores “NaturalDocs::” to stay useful.

To do this in the main languages file instead of the user one, find the existing definition and either edit the “Ignored [type] Prefixes in Index” line or add one if it’s not there.

Adding Languages

You can add basic language support for any programming language just by editing these configuration files.  Here are the most important settings:

Language: Fictional
-
-   Extensions: fsrc fhdr
-   Shebang Strings: fictional
-   Line Comment: //
-   Block Comment: /* */
-   Package Separator: ::

This tells Natural Docs that any files with the .fsrc or .fhdr extensions are part of our fictional programming language.  Also, any .cgi or extensionless files that have “fictional” in the shebang (#!) line are part of it as well.  Line comments start with // and block comments appear between /* and */.  The default package separator is ::.  Not too hard, huh?

You can also add settings to ignore prefixes in the index and detect prototypes, but those are dealt with in their own sections on this page.

File Extensions

So Natural Docs doesn’t recognize some file extension you use for your code?  No problem.

Alter Language: [your language]
-   Add Extensions: cxx hxx

If it’s scanning some files you don’t want it to scan, you can exclude extensions as well.  Just add this to the top of your file:

Ignore Extensions: c cpp

In this example, Natural Docs will ignore C++ source files, thus only scanning the headers.

To do this in the main languages file instead of the user one, find the existing language definition and add or remove from the existing “Extensions:” line.

Prototypes

So you’ve added a new language and want to detect prototypes.  Or perhaps you added a custom topic type and want to detect prototypes for that as well.  Here’s an example of the properties you need:

Function Prototype Enders: ; {
-Variable Prototype Enders: ; =

The algorithm for finding prototypes is very simple, yet it works really well in practice.  All the code following the comment is grabbed until it reaches an ender symbol or another comment.  Ender symbols appearing inside parenthesis, brackets, braces, or angle brackets don’t count.  If it reaches an ender symbol and somewhere in that code is the topic title, the code is accepted as the prototype.

So in the example above, variables end at semicolons (the end of the declaration) or equal signs (the default value expression, which we don’t want to include.)  Since the Natural Docs topic for the variable should have appeared right before the definition, that leaves us with the name and type.  Functions are handled similarly: they end at a semicolon (the end of a predeclaration) or an opening brace (the beginning of the body) leaving us with the name, parameters, and return type.

You can do this with any topic type, including custom ones.  Any prototypes that look like they have parameters will be formatted as such.

Line Breaks

For some languages, line breaks are significant.  To have them end a prototype, use \n.  If it has an extender symbol that allows the code to continue on the next line, you can specify that as well.

Function Prototype Ender: \n
-Variable Prototype Ender: \n =
-Line Extender: _
Colors

If you’re collecting prototypes for a custom topic type, they will not automatically get their own background color like the other types have.  You have to define it via CSS, which is explained in the Common Customizations section of the CSS Styles page.

Special Languages

There are two languages with special properties: Shebang Script and Text File.

In Shebang Scripts, the language is not determined by the file extension but by the shebang (#!) line.  The only relevant setting is Extensions.  Files that have those extensions will have their shebang line read and scanned for the substrings specified by the other languages’ Shebang String settings.  Files with no extension are always treated as Shebang Scripts.

In Text Files, the entire file is treated like a comment.  There are no comment symbols required, you can just put Natural Docs content there in plain text.  The most important setting is Extensions.

However, since it is possible to document classes, functions, etc. in text files, they also have their own Package Separator and Ignored [type] Prefixes in Index settings.  To make things easier on you, by default it copies these settings from whichever language has the most source files in your project.  You can override this by manually setting them, but you shouldn’t need to.

Syntax Reference

Unlike other Natural Docs configuration files, comments can only appear on their own lines.  They cannot appear after content on the same line because settings may need to use the # symbol.

Singular and plural forms are generally both supported, so you can write Extension or Extensions.  It doesn’t matter if they match how many items are set.  Also, you can use either Ignore or Ignored.

Ignore Extensions: [extension] [extension] ...

Causes the listed file extensions to be ignored, even if they were previously defined to be part of a language.  The list is space-separated.  ex. “Ignore Extensions: cvs txt

Language: [name]
-Alter Language: [name]

Creates a new language or alters an existing one.  Names can use any characters.  Note the special behavior for languages named Shebang Script and Text File.

If you’re altering an existing language and a property has an [Add/Replace] form, you have to specify whether you’re adding to or replacing the list if that property has already been defined.

General Language Properties
Extensions: [extension] [extension] ...
-[Add/Replace] Extensions: [extension] [extension] ...

Defines file extensions for the language’s source files.  The list is space-separated.  ex. “Extensions: c cpp”.  You can use extensions that were previously used by another language to redefine them.  You can use * to specify all undefined extensions.

Shebang Strings: [string] [string] ...
-[Add/Replace] Shebang Strings: [string] [string] ...

Defines a list of strings that can appear in the shebang (#!) line to designate that it’s part of this language.  They can appear anywhere in the line, so php will work for “#!/user/bin/php4”.  You can use strings that were previously used by another language to redefine them.

Ignore Prefixes in Index: [prefix] [prefix] ...
-Ignore [type] Prefixes in Index: [prefix] [prefix] ...
-
-[Add/Replace] Ignored Prefixes in Index: [prefix] [prefix] ...
-[Add/Replace] Ignored [type] Prefixes in Index: [prefix] [prefix] ...

Specifies prefixes that should be ignored when sorting symbols for an index.  Can be specified in general or for a specific topic type.  The prefixes will still appear, the symbols will just be sorted as if they’re not there.  For example, specifying ADO_ for functions will mean that ADO_DoSomething will appear under D instead of A.

Basic Language Support Properties

These attributes are only available for languages with basic language support.

Line Comments: [symbol] [symbol] ...

Defines a space-separated list of symbols that are used for line comments, if any.  ex. “Line Comment: //”.

Block Comments: [opening symbol] [closing symbol] [o.s.] [c.s.] ...

Defines a space-separated list of symbol pairs that are used for block comments, if any.  ex. “Block Comment: /* */”.

Enum Values: [global|under type|under parent]

Defines the behavior of enum values.  The default is global.

GlobalEnum values are always global and will be referenced as “Value”.
Under TypeEnum values appear under the type and will be referenced as “Package.Enum.Value”.
Under ParentEnum values appear under the parent and will be referenced as “Package.Value”
[type] Prototype Enders: [symbol] [symbol] ...

When defined, Natural Docs will attempt to collect prototypes from the code following the specified topic type.  It grabs code until the first ender symbol or the next Natural Docs comment, and if it contains the topic name, it serves as its prototype.  Use \n to specify a line break.  ex. “Function Prototype Enders: { ;”, “Variable Prototype Enders: = ;”.

Line Extender: [symbol]

Defines the symbol that allows a prototype to span multiple lines if normally a line break would end it.

Perl Package: [perl package]

Specifies the Perl package used to fine-tune the language behavior in ways too complex to do in this file.

Full Language Support Properties

These attributes are only available for languages with full language support.

Full Language Support: [perl package]

Specifies the Perl package that has the parsing routines necessary for full language support.

Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/customizingtopics.html b/docs/doctool/Help/customizingtopics.html deleted file mode 100644 index bebf0fbd..00000000 --- a/docs/doctool/Help/customizingtopics.html +++ /dev/null @@ -1,59 +0,0 @@ - - -Customizing Natural Docs Languages
Natural Docs
Customizing Topics and Keywords

Natural Docs has two files called Topics.txt: one in its Config directory, and one in your project directory.  These control the topic behavior and keywords of Natural Docs.

You should edit the one in your project directory whenever possible.  It keeps your changes separate and easier to manage, plus you don’t have to reapply them whenever you upgrade.  Natural Docs will keep an up-to-date list of all the topic types defined in the main file in it so you can override their settings easily.

However, if you’re using Natural Docs with a lot of projects and would like the changes to apply everywhere, you can edit the one in Natural Docs’ Config directory instead.

Topic Types vs. Keywords

It’s important to understand the difference between topic types and keywords.  Topic types have their own indexes and behavior settings.  You’ll reference them by name when dealing with indexes in the menu file or prototype detection in the language file, but not when documenting your code unless you make their names keywords as well.

You use keywords when documenting your code.  There can be many keywords per topic type, and they are completely interchangable.

Suppose you document a class with the Class keyword and a struct with Struct.  They are both keywords for the Class topic type by default, so they will appear in the same index.  If you wanted structs to have their own index, you would add a topic type for structs and change the Struct keyword to point to it.

Adding Topic Types

If you want to be able to document something in Natural Docs doesn’t handle by default, you want to create your own topic type for it.  Let’s say you’re working on a video game and you want to document all the sound effects because you want to keep track of what each one is for and have an index of them.  You’d add this to your topics file

Topic Type: Sound Effect
-
-   Plural: Sound Effects
-   Keywords:
-      sound
-      sound effect

Sound effects can now be documented with the sound or sound effect keywords, and they’ll get their own index.  The Plural line just specifies the plural name of the topic type.  It isn’t required, but Natural Docs will use it in some places where the plural would sound more natural, like when grouping topics or naming indexes on the menu.

Here are a couple of other things you may want to add:

Topic Type: Sound Effect
-
-   Plural: Sound Effects
-   Scope: Always Global
-   Keywords:
-      sound, sounds
-      sound effect, sound effects

You can set the scope behavior of the topic type.  Your options are:

NormalTopics stay within the current scope.
StartTopics start a new scope for all the topics beneath it, like class topics.
EndTopics reset the scope back to global for all the topics beneath it.
Always GlobalTopics are defined as global, but do not change the scope for any other topics.

Here we set it to Always Global so that if we document one as part of a class, it will still be global yet will not break the class’ scope.  In other words, we can always link to it with just its name instead of needing something like <Class.Sound>.

The other thing we did was add plural keywords, which you do by using a comma after an existing keyword.  These keywords are used for list topics so we don’t have to document each one individually with the full syntax.

There are more options, these are just the most important ones.  See the full syntax reference for the rest.

Prototypes

If you’d like to collect prototypes for your new topic type, you have to do that through Languages.txt as explained in the Prototypes section of the Customizing Languages page.

Changing Keywords
Adding and Changing

If you’re defining your own topic type or editing the main topics file, you simply add to the keywords list:

Topic Type: Sound Effect
-
-   Keywords:
-      sound, sounds
-      sound effect, sound effects

It doesn’t matter if the keyword was previously defined for a different topic type.  Just define it again and the definition will change.

If you want to add keywords to one of the main topic types from the user file so that your changes stay separate, just use Alter Topic Type instead:

Alter Topic Type: General
-
-   Keywords:
-      note
-      notes

Natural Docs will keep a list of the topic types defined in the main file in your project file so that you can do this easily.

Ignoring

Sometimes a keyword just gets in the way.  It’s too common in your comments and Natural Docs keeps accidentally picking them up as topics when that isn’t what you wanted.  You can get rid of keywords completely by either deleting them from the main file or putting this in your project file:

Ignore Keywords:
-   note
-   notes
-   title

If you only have a few, you can use this syntax as well:

Ignore Keywords: note, notes, title
Altering Behavior

You can alter the behavior of any topic type defined in the main file via your project file.  You just use Alter Topic Type and redefine any property.

Alter Topic Type: Constant
-
-   Scope: Always Global

Natural Docs will keep a list of all the topic types defined in the main file in your project file so you can do this easily.  See the syntax reference below for a full list of your options.

Syntax Reference
Ignore Keywords: [keyword], [keyword] ...
-   [keyword]
-   [keyword], [keyword]
-   ...

Ignores the keywords so that they’re not recognized as Natural Docs topics anymore.  Can be specified as a list on the same line and/or following like a normal Keywords section.

Topic Type: [name]
-Alter Topic Type: [name]

Creates a new topic type or alters an existing one.  The name can only contain letters, numbers, spaces, and these characters: . - ‘ /.  It isn’t case sensitive, although the original case is remembered for presentation.

The name General is reserved.  There are a number of default types that must be defined in the main file as well, but they will be listed there since it may change between versions.  The default types can have their keywords or behaviors changed, though, either by editing the default file or by overriding them in the user file.

Properties
Plural: [name]

Specifies the plural name of the topic type.  Defaults to the singular name.  Has the same restrictions as the topic type name.

Index: [yes|no]

Whether the topic type gets an index.  Defaults to yes.

Scope: [normal|start|end|always global]

How the topic affects scope.  Defaults to normal.

NormalTopics stay within the current scope.
StartTopics start a new scope for all the topics beneath it, like class topics.
EndTopics reset the scope back to global for all the topics beneath it.
Always GlobalTopics are defined as global, but do not change the scope for any other topics.
Class Hierarchy: [yes|no]

Whether the topic is part of the class hierarchy.  Defaults to no.

Page Title if First: [yes|no]

Whether the title of this topic becomes the page title if it is the first topic in a file.  Defaults to no.

Break Lists: [yes|no]

Whether list topics should be broken into individual topics in the output.  Defaults to no.

Can Group With: [topic type], [topic type], ...

Lists the topic types that can be grouped with this one in the output.  If two or more topic types often appear together, like Functions and Properties, this will allow them to be grouped together under one heading if it would cause too many groups otherwise.

Keywords:
-   [keyword]
-   [keyword], [plural keyword]
-   ...

A list of the topic type’s keywords.  Each line after the heading is the keyword and optionally its plural form.  This continues until the next line in “keyword: value” format.

  • Keywords can only have letters and numbers.  No punctuation or spaces are allowed.
  • Keywords are not case sensitive.
  • Subsequent keyword sections add to the list.  They don’t replace it.
  • Keywords can be redefined by other keyword sections.
Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/documenting.html b/docs/doctool/Help/documenting.html deleted file mode 100644 index caa3d801..00000000 --- a/docs/doctool/Help/documenting.html +++ /dev/null @@ -1,160 +0,0 @@ - - -Documenting Your Code - Natural Docs
Natural Docs
Using
Documenting
Your Code
KeywordsRunningTroubleshooting
Documenting Your Code

You document your code by putting Natural Docs content in the comments or in text files.  Before we go through all the specifics, here’s an example right off the bat so you have an idea of what it looks like.  Here’s your code:

/*
-   Function: Multiply
-   Multiplies two integers and returns the result.
-*/
-int Multiply (int x, int y)
-   {  return x * y;  };

And here’s what appears in your output:

Multiply

int Multiply (int x,
int y)

Multiplies two integers and returns the result.

Here’s a more elaborate example.  This is overkill for this particular function, but you get the idea.

/*
-   Function: Multiply
-
-   Multiplies two integers.
-
-   Parameters:
-
-      x - The first integer.
-      y - The second integer.
-
-   Returns:
-
-      The two integers multiplied together.
-
-   See Also:
-
-      <Divide>
-*/
-int Multiply (int x, int y)
-   {  return x * y;  };

Multiply

int Multiply (int x,
int y)

Multiplies two integers.

Parameters

xThe first integer.
yThe second integer.

Returns

The two integers multiplied together.

See Also

Divide

int Add (int x,
int y)
Adds two integers.
int Subtract (int x,
int y)
Subtracts two integers.
int Multiply (int x,
int y)
Multiplies two integers.
int Divide (int x,
int y)
Divides two integers.
bool IsEqual (int x,
int y)
Returns whether two integers are equal.

Not too scary, huh?  Notice the comments are just as readable as the output.  No tags littered about, and the structure is very natural.  This was one of the goals of Natural Docs.  Anyway, on to the details.

Comments

There is no special comment style for Natural Docs.  You just embed Natural Docs topics into regular comments, and it’s pretty tolerant as far as style goes.  You can use block comments or line comments strung together.  The only requirement is that the comments are alone on a line.  Comments appearing on the same lines as code are ignored.

/* Function: Multiply
-   Multiplies two integers and returns the result. */
-
-// Function: Multiply
-// Multiplies two integers and returns the result.

Note that when stringing line comments together, blank lines that you want to include in the documentation must start with the comment symbol as well.  If a line is completely blank, it’s considered the end of the comment and thus the end of the Natural Docs topic.

Boxes and Horizontal Lines

Natural Docs can also handle comment boxes and horizontal lines.  It doesn’t matter what symbols they use or how thick the lines are.  The boxes don’t need to be closed on the right side, and they can have different symbols for the edges and corners.

/*
- * Function: Multiply
- * Multiplies two integers and returns the result.
- */
-
-/* +-------------------------------------------------+
-   | Function: Multiply                              |
-   | Multiplies two integers and returns the result. |
-   +-------------------------------------------------+ */
-
-//////////////////////////////////////////////////////////////
-//                                                            
-//  Function: Multiply                                        
-//  ------------------                                        
-//                                                            
-//  Multiplies two integers together and returns the result.  
-//                                                            
-//////////////////////////////////////////////////////////////
POD

Perl users can use POD to do block comments.

=begin nd
-
-Function: Multiply
-Multiplies two integers and returns the result.
-
-=cut
-
-
-=nd
-
-Function: Multiply
-Multiplies two integers and returns the result.
-
-=cut

You can also use NaturalDocs or Natural Docs in place of ND.  None of them are case sensitive.  If for some reason you want to go back to POD documentation instead of using =cut, you can write =end nd.

Important:  The second form of just =nd is offered as a convenience but is not valid POD.  Perl will skip over it and execute fine, but POD parsers will give errors and possibly include the unformatted text in the output.  Use the longer, valid form unless you know for certain that no one will ever try to run POD on your code.

Text Files

Alternately, documentation can be included in text files.  Any file with a .txt extension appearing in the source tree will be scanned for Natural Docs topics.  It will be treated the same as a source file, meaning it will appear in the menu, its topics will be in the indexes, and its topics can be linked to from anywhere in the documentation.  The only difference is you don’t need comment symbols.

Note that you still need to include topic headers, though.  Anything before the first header will be ignored, and if the file doesn’t have any header lines at all, it will be ignored completely.

This method is convenient for documenting file formats, configuration settings, the general program architecture, or anything else that isn’t directly tied to a source file.

Keywords, Topics, and Scope

As you may have guessed, a topic in Natural Docs starts with a “keyword: name” line.  You can have multiple topics per comment as long as you separate them with a blank line.  The keywords aren’t case sensitive.

The list of keywords is pretty predictable: Function, Class, Variable, etc.  Just use what they are.  There are many synonyms as well, so you can use keywords like Func, Procedure, Proc, Method and Constructor.  Look at the full list of keywords to see everything that’s available.

The list of keywords is separated into topic types.  Each type gets its own index, and which specific keyword you use doesn’t matter.  Some also have scoping rules or other behavior as noted.

Scope

Like the code it’s documenting, Natural Docs topics have scope.  This mostly has to do with linking: if you’re in a class you can link to its members by their name alone, but if you’re not, you have to use a notation like class.member or class::member.

If you have full language support and are documenting something that appears in the code, the scope will be handled automatically.  If you’re using text files or only have basic language support, scoping follows these basic rules:

List Topics

If you looked at the list, you saw that most of the keywords have plural forms.  That’s for list topics, which let you document many small things without using the full syntax.  Anything that appears in definition lists within that topic will be treated as if it had its own topic.  It will appear in the indexes and be linkable, just like normal topics.

Function list topics will automatically break apart in the output as well, so it will look the same as if you documented each one individually.

Formatting and Layout

As you saw in the more elaborate example, you can apply additional formatting and layout to your Natural Docs content, all in ways that will appear very natural in the source code.

Paragraphs

First of all, you break paragraphs by leaving blank lines between them.  So we have this in our content:

The first paragraph blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah.
-
-The second paragraph blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah.

and we get this in our output:

The first paragraph blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.

The second paragraph blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.

Bold and Underline

You can apply bold to a stretch of text by surrounding it with asterisks.  You can apply underlining by surrounding it with underscores instead.  With underlining, it doesn’t matter if you use an underscore for every space between words or not; they’ll be converted to spaces if you do.

Some *bold text* and some _underlined text_
-and yet _more_underlined_text_.

Some bold text and some underlined text and yet more underlined text.

Headings

You can add headings to your output just by ending a line with a colon and having a blank line above it.

Some text before the heading.
-
-Heading:
-Some text under the heading.

Some text before the heading.

Heading

Some text under the heading.

You must have a blank line above the heading or it will not work.  You can skip the blank after it but not before.

Bullet Lists

You can add bullet lists by starting a line with a dash, an asterisk, an o, or a plus.  Bullets can have blank lines between them if you want, and subsequent lines don’t have to be indented.  You end a list by skipping a line and doing something else.

- Bullet one.
-- Bullet two.
-  Bullet two continued.
-- Bullet three.
-
-Some text after the bullet list.
-
-o Spaced bullet one.
-
-o Spaced bullet two.
-Spaced bullet two continued.
-
-o Spaced bullet three.
-
-Some text after the spaced bullet list.
  • Bullet one.
  • Bullet two.  Bullet two continued.
  • Bullet three.

Some text after the bullet list.

  • Spaced bullet one.
  • Spaced bullet two.  Spaced bullet two continued.
  • Spaced bullet three.

Some text after the spaced bullet list.

Definition Lists

You can add a definition list by using the format below, specifically “text space dash space text”.  Like bullet lists, you can have blank lines between them if you want, subsequent lines don’t have to be indented, and you end the list by skipping a line and doing something else.  The first line of the list must be after a blank line or something like a header; it can’t be

First  - This is the first item.
-Second - This is the second item.
-         This is more of the second item.
-Third  - This is the third item.
-This is more of the third item.
-
-Some text after the definition list.
FirstThis is the first item.
SecondThis is the second item.  This is more of the second item.
ThirdThis is the third item.  This is more of the third item.

Some text after the definition list.

Remember that with definition lists, if you’re using the plural form of the keywords each entry is a symbol and can be linked to just as if it had its own topic.

Code and Text Diagrams

Finally, you can add example code or text diagrams by starting each line with >, |, or :.  If you have a vertical line or text box with the comment, you must separate these symbols from it with a space.

: a = b + c;
-
->   +-----+     +-----+
->   |  A  | --> |  B  |
->   +-----+     +-----+
->                  |
->               +-----+
->               |  C  |
->               +-----+
a = b + c;
+-----+     +-----+
-|  A  | --> |  B  |
-+-----+     +-----+
-               |
-            +-----+
-            |  C  |
-            +-----+

For long stretches, this may be too tedious.  You can start a code section by placing (start code) or just (code) alone on a line.  You end it with either (end code) or just (end).  You can’t put any other content on these lines other than any line or text box symbols you may be using with the comment.

(start code)
-
-if (x == 0) {
-   DoSomething();
-}
-
-return x;
-
-(end)
if (x == 0) {
-   DoSomething();
-}
-
-return x;

You can also use example, diagram, or table instead of code.  Just use whatever’s appropriate.  Always flexible, it will accept begin for start and it will accept finish or done for end so you don’t have to remember the exact word.

Linking

Linking is the one place where Natural Docs has some negative effect on the readability of the comments.  Of course, the alternative would be to automatically guess where links should be, but systems that do that typically pepper your sentences with unintentional links to functions called “is” or “on”.  However, the Natural Docs syntax is still as minimal as possible.  Simply surround any topic you want to link to with angle brackets.  Natural Docs will keep track off all the topics and where they are defined, so you don’t need to use HTML-like syntax or remember what file anything is in.  Also, if the link can’t be resolved to anything, Natural Docs leaves the angle brackets in the output so if something wasn’t intended to be a link (such as #include <somefile.h>) it won’t be mangled.

Let's link to function <Multiply>.

Let’s link to function Multiply.

Links and topic names are case sensitive, regardless of whether the language is or not.

When linking to functions, it doesn’t matter if you include empty parenthesis or not.  Both <Function> and <Function()> will work.  However, if you documented the function with parameters as part of the name, you will need to include those parameters whenever linking to it.  It is recommended that you only include parameters in the topic name if you need to distinguish between two functions with the same name.

If the topic has a summary sentence, hovering over the link will give it to you as a tooltip.  If the topic has a prototype, that will be included as well.  You can try it above.

Scope

If a topic is considered part of a class, they are linked to using any of the three most common class/member notations:  class.member, class::member, and class->member.  Natural Docs will not be confused by <class->member>.  Like in the language itself, if the topic you’re writing is in that class’ scope you can link to it simply as <member>.

If you have multi-level classes and packages, links can be relative as well.  So if you’re in Project::UI::Window::Base and you want to link to Project::UI::Button::Base, just using <Button::Base> will work.  Links will try to resolve to globals before relative because not everyone wants to use relative links, and this way they can ignore it without anything getting messed up.

Plurals and Possessives

To make the documentation easier to write and easier to read in the source file, you can include plurals and possessives inside the angle brackets.  In other words, you don’t have to use awkward syntax like <Object>s, although that’s supported as well.  You can simply write <Objects> and it will link to the symbol Object just fine.  It can handle any plural and/or possessive form you can throw at it.  I’m not kidding: Foxes, Fox’s, Foxes’, Children, Mice, Alumni, Indices, Amoebae, Teeth, just try to trip it up.

URLs and E-Mail

You can also link to URLs and e-mail addresses.  It will detect them automatically, but you can also put them in angle brackets if you like.

Visit <http://www.website.com> or send messages to
-email@address.com.

E-mail addresses are protected in a way that should avoid spam crawlers.  Although the link above looks and acts like a regular link (try it) the HTML code actually looks like this:

<a href="#" 
- onClick="location.href='mai' + 'lto:' + 'em' + 'ail' + '@'
-          + 'addre' + 'ss.com'; return false;">
-    em<span style="display: none">.nosp@m.</span>ail
-    <span>@</span>
-    addre<span style="display: none">.nosp@m.</span>ss.com
-</a>
Page Titles

Natural Docs automatically determines the page title as follows:

  • If there’s only one topic in the file, that topic’s title becomes the page title.
  • Otherwise, if the first topic in the file is a class, section, or file, that topic’s title becomes the page title.
  • Otherwise, the file name becomes the page title.

This should be enough for most people.  However, if you don’t like the page title Natural Docs has chosen for you, add a “Title: [name]” comment to the top of the file to override it.  Title is a synonym of Section, so that will satisfy the second rule and make it the page title.

Summaries

Summaries are automatically generated for every file, class, and section.  You don’t have to do anything special to get them.

There are two things you may want to keep in mind when documenting your code so that the summaries are nicer.  The first is that they use the first sentence in the topic as the description, so long as it’s plain text and not something like a bullet list.  It will also appear in the tooltip whenever that topic is linked to.

The second is that you may want to manually add group topics to divide long lists and make the summaries easier to navigate.  Natural Docs will automatically group them by type if you do not, but sometimes you want to be more specific.  You don’t need to provide a description, just adding a “Group: [name]” comment is sufficient.  Note that once you manually add a group automatic grouping is completely turned off for that class.

Here’s an example summary.  Note that as before, when you hover over a link, you’ll get the prototype and summary line as a tooltip.

Summary
A example class that does arithmetic with functions for people scared of operators.
Adds two integers.
Subtracts two integers.
Multiplies two integers.
Divides two integers.
Returns whether two integers are equal.
That’s It!

Here’s our overkill example again, just to refresh your memory.  You can see examples of what a complete project’s output would look like on our web site.

Make sure you visit the troubleshooting page if things aren’t working the way you expect them to.

/*
-   Function: Multiply
-
-   Multiplies two integers.
-
-   Parameters:
-
-      x - The first integer.
-      y - The second integer.
-
-   Returns:
-
-      The two integers multiplied together.
-
-   See Also:
-
-      <Divide>
-*/
-int Multiply (int x, int y)
-   {  return x * y;  };

Multiply

int Multiply (int x,
int y)

Multiplies two integers.

Parameters

xThe first integer.
yThe second integer.

Returns

The two integers multiplied together.

See Also

Divide

Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/example/Default.css b/docs/doctool/Help/example/Default.css deleted file mode 100644 index c54fdba2..00000000 --- a/docs/doctool/Help/example/Default.css +++ /dev/null @@ -1,507 +0,0 @@ -/* - IMPORTANT: If you're editing this file in the output directory of one of - your projects, your changes will be overwritten the next time you run - Natural Docs. Instead, copy this file to your project directory, make your - changes, and you can use it with -s. Even better would be to make a CSS - file in your project directory with only your changes, which you can then - use with -s [original style] [your changes]. - - On the other hand, if you're editing this file in the Natural Docs styles - directory, the changes will automatically be applied to all your projects - that use this style the next time Natural Docs is run on them. - - This file is part of Natural Docs, which is Copyright © 2003-2004 Greg Valure - Natural Docs is licensed under the GPL -*/ - -body { - font-family: Verdana, Arial, sans-serif; - color: #000000; - margin: 0px; padding: 0px } - -body.UnframedPage { - background-color: #E8E8E8 } - - -a:link, -a:visited { color: #900000; text-decoration: none } -a:hover { color: #900000; text-decoration: underline } -a:active { color: #FF0000; text-decoration: underline } - -td { - vertical-align: top } - -/* - Comment out this line to use web-style paragraphs (blank line between - paragraphs, no indent) instead of print-style paragraphs (no blank line, - indented.) -*/ -p { - text-indent: 5ex; margin: 0 } - - -/* Can't use something like display: none or it won't break. */ -.HB { - font-size: 1px } - - - - -body.FramedMenuPage, -.MenuSection { - font-size: 9pt; - background-color: #E8E8E8; - padding: 10px 0 0 0 } - -.MenuSection { - width: 27ex } - - - .MTitle { - font-size: 16pt; font-weight: bold; font-variant: small-caps; - text-align: center; - padding: 5px 10px 15px 10px; - border-bottom: 1px dotted #000000; - margin-bottom: 15px } - - .MSubTitle { - font-size: 9pt; font-weight: normal; font-variant: normal; - margin-top: 1ex; margin-bottom: 5px } - - - .MEntry a:link, - .MEntry a:hover, - .MEntry a:visited { color: #606060; margin-right: 0 } - .MEntry a:active { color: #A00000; margin-right: 0 } - - - .MGroup { - font-variant: small-caps; font-weight: bold; - margin: 1em 0 1em 10px } - - /* Konqueror just can't do margins. */ - .KHTML .MGroup { - margin-bottom: 0; padding-bottom: 1em } - - .MGroupContent { - font-variant: normal; font-weight: normal } - - .MGroup a:link, - .MGroup a:hover, - .MGroup a:visited { color: #545454; margin-right: 10px } - .MGroup a:active { color: #A00000; margin-right: 10px } - - - .MFile, - .MText, - .MLink, - .MIndex { - padding: 1px 17px 2px 10px; - margin: .25em 0 .25em 0 } - - .MText { - font-size: 8pt; font-style: italic } - - .MLink { - font-style: italic } - - #MSelected { - color: #000000; background-color: #FFFFFF; - /* Replace padding with border. */ - padding: 0 10px 0 10px; - border-width: 1px 2px 2px 0; border-style: solid; border-color: #000000; - margin-right: 5px } - - /* Close off the left side when its in a group. */ - .MGroup #MSelected { - padding-left: 9px; border-left-width: 1px } - - /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ - .Gecko #MSelected { - -moz-border-radius-topright: 10px; - -moz-border-radius-bottomright: 10px } - .Gecko .MGroup #MSelected { - -moz-border-radius-topleft: 10px; - -moz-border-radius-bottomleft: 10px } - - - - -body.FramedContentPage, -.ContentSection { - background-color: #FFFFFF; - padding-bottom: 15px } - -.ContentSection { - border-width: 0 0 1px 1px; border-style: solid; border-color: #000000 } - - - .CTopic { - font-size: 10pt; - /* This should be a margin but Konq 3.1.1 sucks. */ - padding-bottom: 3em } - - - .CTitle { - font-size: 12pt; font-weight: bold; - border-width: 0 0 1px 0; border-style: solid; border-color: #A0A0A0; - margin: 0 15px .5em 15px } - - .CGroup .CTitle { - font-size: 16pt; font-variant: small-caps; - padding-left: 15px; padding-right: 15px; - border-width: 0 0 2px 0; border-color: #000000; - margin-left: 0; margin-right: 0 } - - .CClass .CTitle, - .CInterface .CTitle, - .CDatabase .CTitle, - .CDatabaseTable .CTitle, - .CSection .CTitle { - font-size: 18pt; - color: #FFFFFF; background-color: #A0A0A0; - padding: 10px 15px 10px 15px; - border-width: 2px 0; border-color: #000000; - margin-left: 0; margin-right: 0 } - - #MainTopic .CTitle { - font-size: 20pt; - color: #FFFFFF; background-color: #7070C0; - padding: 10px 15px 10px 15px; - border-width: 0 0 3px 0; border-color: #000000; - margin-left: 0; margin-right: 0 } - - .CBody { - margin-left: 15px; margin-right: 15px } - - - .CToolTip { - position: absolute; visibility: hidden; - left: 0; top: 0; max-width: 50%; - background-color: #FFFFE0; - padding: 5px; - border-width: 1px 2px 2px 1px; border-style: solid; border-color: #000000; - font-size: 8pt } - - /* Opera 6 gives it a huge height otherwise. */ - .Opera6 .CTooltip, .Opera5 .CTooltip { - max-width: 100% } - - .CHeading { - font-weight: bold; font-size: 10pt; - margin-top: 1.5em; margin-bottom: .5em } - - .CCode { - font: 10pt "Courier New", Courier, monospace; - overflow: auto; - } - - .CBulletList { - /* I don't know why CBody's margin doesn't apply, but it's consistent across browsers so whatever. - Reapply it here as padding. */ - padding-left: 15px; padding-right: 15px; - margin: .5em 5ex .5em 5ex; - } - - .CDescriptionList { - margin: .5em 5ex 0 5ex } - - /* IE 4 and Konqueror always makes it too long. */ - .IE4 .CDescriptionList, - .KHTML .CDescriptionList { - width: 85% } - - .CDLEntry { - font: 10pt "Courier New", Courier, monospace; color: #808080; - padding-bottom: .25em; - white-space: nowrap } - - .CDLDescription { - font-size: 10pt; /* For browsers that don't inherit correctly, like Opera 5. */ - padding-bottom: .5em; padding-left: 5ex } - - - - -.Prototype { - font: 10pt "Courier New", Courier, monospace; - padding: 5px 3ex; - border-width: 1px; border-style: solid; - margin: 0 5ex 1.5em 5ex; - } - - .Prototype td { - font-size: 10pt; - } - - .PDefaultValue, - .PTypePrefix { - color: #8F8F8F; - } - .PTypePrefix { - text-align: right; - } - - .IE .Prototype table { - padding: 0; - } - - .CFunction .Prototype { - background-color: #F4F4F4; border-color: #D0D0D0 } - .CProperty .Prototype { - background-color: #F4F4FF; border-color: #C0C0E8 } - .CVariable .Prototype { - background-color: #FFFFF0; border-color: #E0E0A0 } - - .CDatabaseIndex .Prototype, - .CConstant .Prototype { - background-color: #D0D0D0; border-color: #000000 } - .CType .Prototype { - background-color: #FFF8F8; border-color: #E8C8C8 } - .CDatabaseTrigger .Prototype, - .CEvent .Prototype, - .CDelegate .Prototype { - background-color: #F0FCF0; border-color: #B8E4B8 } - - .CToolTip .Prototype { - margin: 0 0 .5em 0; - white-space: nowrap; - } - - - - - -.Summary { - margin: 1.5em 5ex 0 5ex } - - .STitle { - font-size: 12pt; font-weight: bold; - margin-bottom: .5em } - - - .SBorder { - background-color: #FFFFF0; - padding: 15px; - border: 1px solid #C0C060 } - - /* Let's observe the evolution of IE's brokeness, shall we? - IE 4 always makes them too long, there's no way around it. */ - .IE4 .SBorder { - width: 85% } - /* IE 5 will make them too long unless you set the width to 100%. Isn't this implied for a div? */ - .IE5 .SBorder { - width: 100% } - /* IE 6 behaves like 5 when it's in a frame, but without frames it will be correct without a width or slightly too long - (but not enough to scroll) with a width. This arbitrary weirdness simply astounds me. */ - body.FramedContentPage .IE6 .SBorder { - width: 100% } - - /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ - .Gecko .SBorder { - -moz-border-radius: 20px } - - - .STable { - font-size: 9pt; width: 100% } - - .SEntrySize { - width: 30% } - .SDescriptionSize { - width: 70% } - - - .SMarked { - background-color: #F8F8D8 } - - - .SEntry .SIndent1 { - margin-left: 1.5ex } - .SEntry .SIndent2 { - margin-left: 3ex } - .SEntry .SIndent3 { - margin-left: 4.5ex } - .SEntry .SIndent4 { - margin-left: 6ex } - .SEntry .SIndent5 { - margin-left: 7.5ex } - - .SDescription { - padding-left: 3ex } - - .SDescription a { color: #800000} - .SDescription a:active { color: #A00000 } - - - .SGroup { - margin-top: .5em; margin-bottom: .25em } - - .SGroup .SEntry { - font-weight: bold; font-variant: small-caps } - - .SGroup .SEntry a { color: #800000 } - .SGroup .SEntry a:active { color: #F00000 } - - - .SMain .SEntry, - .SClass .SEntry, - .SDatabase .SEntry, - .SDatabaseTable .SEntry, - .SSection .SEntry { - font-weight: bold; font-size: 10pt; - margin-bottom: .25em } - - .SClass, - .SDatabase, - .SDatabaseTable, - .SSection { - margin-top: 1em } - - .SMain .SEntry a, - .SClass .SEntry a, - .SDatabase .SEntry a, - .SDatabaseTable .SEntry a, - .SSection .SEntry a { color: #000000 } - - .SMain .SEntry a:active, - .SClass .SEntry a:active, - .SDatabase .SEntry a:active, - .SDatabaseTable .SEntry a:active, - .SSection .SEntry a:active { color: #A00000 } - - - - - -.ClassHierarchy { - margin: 0 15px 1em 15px } - - .CHEntry { - border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; - margin-bottom: 3px; - padding: 2px 2ex; - font-size: 10pt; - background-color: #F4F4F4; color: #606060; - } - - .Gecko .CHEntry { - -moz-border-radius: 4px; - } - - .CHCurrent .CHEntry { - font-weight: bold; - border-color: #000000; - color: #000000; - } - - .CHChildNote .CHEntry { - font-style: italic; - font-size: 8pt; - } - - .CHIndent { - margin-left: 3ex; - } - - .CHEntry a:link, - .CHEntry a:visited, - .CHEntry a:hover { - color: #606060; - } - .CHEntry a:active { - color: #800000; - } - - - - - -body.FramedIndexPage, -.IndexSection { - background-color: #FFFFFF; - font-size: 10pt; - padding: 15px } - -.IndexSection { - border-width: 0 0 1px 1px; border-style: solid; border-color: #000000 } - - .IPageTitle { - font-size: 20pt; font-weight: bold; - color: #FFFFFF; background-color: #7070C0; - padding: 10px 15px 10px 15px; - border-width: 0 0 3px 0; border-color: #000000; border-style: solid; - margin: -15px -15px 0 -15px } - - .INavigationBar { - text-align: center; - background-color: #FFFFF0; - padding: 5px; - border-bottom: solid 1px black; - margin: 0 -15px 15px -15px } - - .INavigationBar a { - font-weight: bold } - - .IHeading { - font-size: 16pt; font-weight: bold; - padding: 2.5em 0 .5em 0; - text-align: center; - width: 3.5ex; - } - #IFirstHeading { - padding-top: 0; - } - - .IEntry { - padding-left: 1ex; } - - .ISubIndex { - padding-left: 3ex; padding-bottom: .5em } - - /* While it may cause some entries to look like links when they aren't, I found it's much easier to read the - index if everything's the same color. */ - .ISymbol { - font-weight: bold; color: #900000 } - - .ISymbolPrefix { - text-align: right; - color: #C47C7C; - background-color: #F8F8F8; - border-right: 3px solid #E0E0E0; - border-left: 1px solid #E0E0E0; - padding: 0 1px 0 2px; - } - #IFirstSymbolPrefix { - border-top: 1px solid #E0E0E0; - } - #ILastSymbolPrefix { - border-bottom: 1px solid #E0E0E0; - } - #IOnlySymbolPrefix { - border-top: 1px solid #E0E0E0; - border-bottom: 1px solid #E0E0E0; - } - - a.IParent, - a.IFile { - display: block; - } - - - - -.Footer { - font-size: 8pt; color: #909090 } - -body.UnframedPage .Footer { - text-align: right; - margin: 2px } - -body.FramedMenuPage .Footer { - text-align: center; - margin: 5em 10px 0 10px} - - .Footer a:link, - .Footer a:hover, - .Footer a:visited { color: #909090 } - .Footer a:active { color: #A00000 } diff --git a/docs/doctool/Help/example/NaturalDocs.js b/docs/doctool/Help/example/NaturalDocs.js deleted file mode 100644 index 2af84cf5..00000000 --- a/docs/doctool/Help/example/NaturalDocs.js +++ /dev/null @@ -1,204 +0,0 @@ - -// -// Browser Styles -// ____________________________________________________________________________ - -var agt=navigator.userAgent.toLowerCase(); -var browserType; -var browserVer; - -if (agt.indexOf("opera") != -1) - { - browserType = "Opera"; - - if (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1) - { browserVer = "Opera5"; } - else if (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1) - { browserVer = "Opera6"; } - else if (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1) - { browserVer = "Opera7"; } - } - -else if (agt.indexOf("khtml") != -1 || agt.indexOf("konq") != -1 || agt.indexOf("safari") != -1) - { - browserType = "KHTML"; - } - -else if (agt.indexOf("msie") != -1) - { - browserType = "IE"; - - if (agt.indexOf("msie 4") != -1) - { browserVer = "IE4"; } - else if (agt.indexOf("msie 5") != -1) - { browserVer = "IE5"; } - else if (agt.indexOf("msie 6") != -1) - { browserVer = "IE6"; } - } - -else if (agt.indexOf("gecko") != -1) - { - browserType = "Gecko"; - } - -// Opera already taken care of. -else if (agt.indexOf("mozilla") != -1 && agt.indexOf("compatible") == -1 && agt.indexOf("spoofer") == -1 && - agt.indexOf("webtv") == -1 && agt.indexOf("hotjava") == -1) - { - browserType = "Netscape"; - - if (agt.indexOf("mozilla/4") != -1) - { browserVer = "Netscape4"; } - } - - -// -// Menu -// ____________________________________________________________________________ - - -function ToggleMenu(id) - { - if (!window.document.getElementById) - { return; }; - - var display = window.document.getElementById(id).style.display; - - if (display == "none") - { display = "block"; } - else - { display = "none"; } - - window.document.getElementById(id).style.display = display; - } - - -// -// Tooltips -// ____________________________________________________________________________ - - -var tooltipTimer = 0; - -function ShowTip(event, tooltipID, linkID) - { - if (tooltipTimer) - { clearTimeout(tooltipTimer); }; - - var docX = event.clientX + window.pageXOffset; - var docY = event.clientY + window.pageYOffset; - - var showCommand = "ReallyShowTip('" + tooltipID + "', '" + linkID + "', " + docX + ", " + docY + ")"; - - // KHTML cant handle showing on a timer right now. - - if (browserType != "KHTML") - { tooltipTimer = setTimeout(showCommand, 1000); } - else - { eval(showCommand); }; - } - -function ReallyShowTip(tooltipID, linkID, docX, docY) - { - tooltipTimer = 0; - - var tooltip; - var link; - - if (document.getElementById) - { - tooltip = document.getElementById(tooltipID); - link = document.getElementById(linkID); - } - else if (document.all) - { - tooltip = eval("document.all['" + tooltipID + "']"); - link = eval("document.all['" + linkID + "']"); - } - - if (tooltip) - { - var left = 0; - var top = 0; - - // Not everything supports offsetTop/Left/Width, and some, like Konqueror and Opera 5, think they do but do it badly. - - if (link && link.offsetWidth != null && browserType != "KHTML" && browserVer != "Opera5") - { - var item = link; - while (item != document.body) - { - left += item.offsetLeft; - item = item.offsetParent; - } - - item = link; - while (item != document.body) - { - top += item.offsetTop; - item = item.offsetParent; - } - top += link.offsetHeight; - } - - // The fallback method is to use the mouse X and Y relative to the document. We use a separate if and test if its a number - // in case some browser snuck through the above if statement but didn't support everything. - - if (!isFinite(top) || top == 0) - { - left = docX; - top = docY; - } - - // Some spacing to get it out from under the cursor. - - top += 10; - - // Make sure the tooltip doesnt get smushed by being too close to the edge, or in some browsers, go off the edge of the - // page. We do it here because Konqueror does get offsetWidth right even if it doesnt get the positioning right. - - if (tooltip.offsetWidth != null) - { - var width = tooltip.offsetWidth; - var docWidth = document.body.clientWidth; - - if (left + width > docWidth) - { left = docWidth - width - 1; } - } - - // Opera 5 chokes on the px extension, so it can use the Microsoft one instead. - - if (tooltip.style.left != null && browserVer != "Opera5") - { - tooltip.style.left = left + "px"; - tooltip.style.top = top + "px"; - } - else if (tooltip.style.pixelLeft != null) - { - tooltip.style.pixelLeft = left; - tooltip.style.pixelTop = top; - } - - tooltip.style.visibility = "visible"; - } - } - -function HideTip(tooltipID) - { - if (tooltipTimer) - { - clearTimeout(tooltipTimer); - tooltipTimer = 0; - } - - var tooltip; - - if (document.getElementById) - { tooltip = document.getElementById(tooltipID); } - else if (document.all) - { tooltip = eval("document.all['" + tooltipID + "']"); } - - if (tooltip) - { tooltip.style.visibility = "hidden"; } - } - diff --git a/docs/doctool/Help/example/Roman.css b/docs/doctool/Help/example/Roman.css deleted file mode 100644 index 54acc6e3..00000000 --- a/docs/doctool/Help/example/Roman.css +++ /dev/null @@ -1,507 +0,0 @@ -/* - IMPORTANT: If you're editing this file in the output directory of one of - your projects, your changes will be overwritten the next time you run - Natural Docs. Instead, copy this file to your project directory, make your - changes, and you can use it with -s. Even better would be to make a CSS - file in your project directory with only your changes, which you can then - use with -s [original style] [your changes]. - - On the other hand, if you're editing this file in the Natural Docs styles - directory, the changes will automatically be applied to all your projects - that use this style the next time Natural Docs is run on them. - - This file is part of Natural Docs, which is Copyright © 2003-2004 Greg Valure - Natural Docs is licensed under the GPL -*/ - -body { - font-family: "Times New Roman", Roman, serif; - color: #000000; - margin: 0px; padding: 0px } - -body.UnframedPage { - background-color: #E8E8E8 } - - -a:link, -a:visited { color: #900000; text-decoration: none } -a:hover { color: #900000; text-decoration: underline } -a:active { color: #FF0000; text-decoration: underline } - -td { - vertical-align: top } - -/* - Comment out this line to use web-style paragraphs (blank line between - paragraphs, no indent) instead of print-style paragraphs (no blank line, - indented.) -*/ -p { - text-indent: 5ex; margin: 0 } - - -/* Can't use something like display: none or it won't break. */ -.HB { - font-size: 1px } - - - - -body.FramedMenuPage, -.MenuSection { - font-size: 10pt; - background-color: #E8E8E8; - padding: 10px 0 0 0 } - -.MenuSection { - width: 27ex } - - - .MTitle { - font-size: 18pt; font-weight: bold; font-variant: small-caps; - text-align: center; - padding: 5px 10px 15px 10px; - border-bottom: 1px dotted #000000; - margin-bottom: 15px } - - .MSubTitle { - font-size: 10pt; font-weight: normal; font-variant: normal; - margin-top: 1ex; margin-bottom: 5px } - - - .MEntry a:link, - .MEntry a:hover, - .MEntry a:visited { color: #606060; margin-right: 0 } - .MEntry a:active { color: #A00000; margin-right: 0 } - - - .MGroup { - font-variant: small-caps; font-weight: bold; - margin: 1em 0 1em 10px } - - /* Konqueror just can't do margins. */ - .KHTML .MGroup { - margin-bottom: 0; padding-bottom: 1em } - - .MGroupContent { - font-variant: normal; font-weight: normal } - - .MGroup a:link, - .MGroup a:hover, - .MGroup a:visited { color: #545454; margin-right: 10px } - .MGroup a:active { color: #A00000; margin-right: 10px } - - - .MFile, - .MText, - .MLink, - .MIndex { - padding: 1px 17px 2px 10px; - margin: .25em 0 .25em 0 } - - .MText { - font-size: 8pt; font-style: italic } - - .MLink { - font-style: italic } - - #MSelected { - color: #000000; background-color: #FFFFFF; - /* Replace padding with border. */ - padding: 0 10px 0 10px; - border-width: 1px 2px 2px 0; border-style: solid; border-color: #000000; - margin-right: 5px } - - /* Close off the left side when its in a group. */ - .MGroup #MSelected { - padding-left: 9px; border-left-width: 1px } - - /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ - .Gecko #MSelected { - -moz-border-radius-topright: 10px; - -moz-border-radius-bottomright: 10px } - .Gecko .MGroup #MSelected { - -moz-border-radius-topleft: 10px; - -moz-border-radius-bottomleft: 10px } - - - - -body.FramedContentPage, -.ContentSection { - background-color: #FFFFFF; - padding-bottom: 15px } - -.ContentSection { - border-width: 0 0 1px 1px; border-style: solid; border-color: #000000 } - - - .CTopic { - font-size: 12pt; - /* This should be a margin but Konq 3.1.1 sucks. */ - padding-bottom: 3em } - - - .CTitle { - font-size: 16pt; font-weight: bold; - border-width: 0 0 1px 0; border-style: solid; border-color: #A0A0A0; - margin: 0 15px .5em 15px } - - .CGroup .CTitle { - font-size: 18pt; font-variant: small-caps; - padding-left: 15px; padding-right: 15px; - border-width: 0 0 2px 0; border-color: #000000; - margin-left: 0; margin-right: 0 } - - .CClass .CTitle, - .CInterface .CTitle, - .CDatabase .CTitle, - .CDatabaseTable .CTitle, - .CSection .CTitle { - font-size: 20pt; - color: #FFFFFF; background-color: #A0A0A0; - padding: 10px 15px 10px 15px; - border-width: 2px 0; border-color: #000000; - margin-left: 0; margin-right: 0 } - - #MainTopic .CTitle { - font-size: 24pt; - color: #FFFFFF; background-color: #7070C0; - padding: 10px 15px 10px 15px; - border-width: 0 0 3px 0; border-color: #000000; - margin-left: 0; margin-right: 0 } - - .CBody { - margin-left: 15px; margin-right: 15px } - - - .CToolTip { - position: absolute; visibility: hidden; - left: 0; top: 0; max-width: 50%; - background-color: #FFFFE0; - padding: 5px; - border-width: 1px 2px 2px 1px; border-style: solid; border-color: #000000; - font-size: 10pt } - - /* Opera 6 gives it a huge height otherwise. */ - .Opera6 .CTooltip, .Opera5 .CTooltip { - max-width: 100% } - - .CHeading { - font-weight: bold; - margin-top: 1.5em; margin-bottom: .5em } - - .CCode { - font: 10pt "Courier New", Courier, monospace; - overflow: auto; - } - - .CBulletList { - /* I don't know why CBody's margin doesn't apply, but it's consistent across browsers so whatever. - Reapply it here as padding. */ - padding-left: 15px; padding-right: 15px; - margin: .5em 5ex .5em 5ex; - } - - .CDescriptionList { - margin: .5em 5ex 0 5ex } - - /* IE 4 and Konqueror always makes it too long. */ - .IE4 .CDescriptionList, - .KHTML .CDescriptionList { - width: 85% } - - .CDLEntry { - font: 10pt "Courier New", Courier, monospace; color: #808080; - padding-bottom: .25em; - white-space: nowrap } - - .CDLDescription { - font-size: 12pt; /* For browsers that don't inherit correctly, like Opera 5. */ - padding-bottom: .5em; padding-left: 5ex } - - - - - -.Prototype { - font: 10pt "Courier New", Courier, monospace; - padding: 5px 3ex; - border-width: 1px; border-style: solid; - margin: 0 5ex 1.5em 5ex; - } - - .Prototype td { - font-size: 10pt; - } - - .PDefaultValue, - .PTypePrefix { - color: #8F8F8F; - } - .PTypePrefix { - text-align: right; - } - - .IE .Prototype table { - padding: 0; - } - - .CFunction .Prototype { - background-color: #F4F4F4; border-color: #D0D0D0 } - .CProperty .Prototype { - background-color: #F4F4FF; border-color: #C0C0E8 } - .CVariable .Prototype { - background-color: #FFFFF0; border-color: #E0E0A0 } - - .CDatabaseIndex .Prototype, - .CConstant .Prototype { - background-color: #D0D0D0; border-color: #000000 } - .CType .Prototype { - background-color: #FFF8F8; border-color: #E8C8C8 } - .CDatabaseTrigger .Prototype, - .CEvent .Prototype, - .CDelegate .Prototype { - background-color: #F0FCF0; border-color: #B8E4B8 } - - .CToolTip .Prototype { - margin: 0 0 .5em 0; - white-space: nowrap; - } - - - - - -.Summary { - margin: 1.5em 5ex 0 5ex } - - .STitle { - font-size: 14pt; font-weight: bold; - margin-bottom: .5em } - - - .SBorder { - background-color: #FFFFF0; - padding: 15px; - border: 1px solid #C0C060 } - - /* Let's observe the evolution of IE's brokeness, shall we? - IE 4 always makes them too long, there's no way around it. */ - .IE4 .SBorder { - width: 85% } - /* IE 5 will make them too long unless you set the width to 100%. Isn't this implied for a div? */ - .IE5 .SBorder { - width: 100% } - /* IE 6 behaves like 5 when it's in a frame, but without frames it will be correct without a width or slightly too long - (but not enough to scroll) with a width. This arbitrary weirdness simply astounds me. */ - body.FramedContentPage .IE6 .SBorder { - width: 100% } - - /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ - .Gecko .SBorder { - -moz-border-radius: 20px } - - - .STable { - font-size: 10pt; width: 100% } - - .SEntrySize { - width: 30% } - .SDescriptionSize { - width: 70% } - - - .SMarked { - background-color: #F8F8D8 } - - - .SEntry .SIndent1 { - margin-left: 1.5ex } - .SEntry .SIndent2 { - margin-left: 3ex } - .SEntry .SIndent3 { - margin-left: 4.5ex } - .SEntry .SIndent4 { - margin-left: 6ex } - .SEntry .SIndent5 { - margin-left: 7.5ex } - - .SDescription { - padding-left: 3ex } - - .SDescription a { color: #800000} - .SDescription a:active { color: #A00000 } - - - .SGroup { - margin-top: .5em; margin-bottom: .25em } - - .SGroup .SEntry { - font-weight: bold; font-variant: small-caps } - - .SGroup .SEntry a { color: #800000 } - .SGroup .SEntry a:active { color: #F00000 } - - - .SMain .SEntry, - .SClass .SEntry, - .SDatabase .SEntry, - .SDatabaseTable .SEntry, - .SSection .SEntry { - font-weight: bold; font-size: 12pt; - margin-bottom: .25em } - - .SClass, - .SDatabase, - .SDatabaseTable, - .SSection { - margin-top: 1em } - - .SMain .SEntry a, - .SClass .SEntry a, - .SDatabase .SEntry a, - .SDatabaseTable .SEntry a, - .SSection .SEntry a { color: #000000 } - - .SMain .SEntry a:active, - .SClass .SEntry a:active, - .SDatabase .SEntry a:active, - .SDatabaseTable .SEntry a:active, - .SSection .SEntry a:active { color: #A00000 } - - - - - -.ClassHierarchy { - margin: 0 15px 1em 15px } - - .CHEntry { - border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; - margin-bottom: 3px; - padding: 2px 2ex; - font-size: 12pt; - background-color: #F4F4F4; color: #606060; - } - - .Gecko .CHEntry { - -moz-border-radius: 4px; - } - - .CHCurrent .CHEntry { - font-weight: bold; - border-color: #000000; - color: #000000; - } - - .CHChildNote .CHEntry { - font-style: italic; - font-size: 8pt; - } - - .CHIndent { - margin-left: 3ex; - } - - .CHEntry a:link, - .CHEntry a:visited, - .CHEntry a:hover { - color: #606060; - } - .CHEntry a:active { - color: #800000; - } - - - - - -body.FramedIndexPage, -.IndexSection { - background-color: #FFFFFF; - font: 12pt "Times New Roman", serif; - padding: 15px } - -.IndexSection { - border-width: 0 0 1px 1px; border-style: solid; border-color: #000000 } - - .IPageTitle { - font-size: 24pt; font-weight: bold; - color: #FFFFFF; background-color: #7070C0; - padding: 10px 15px 10px 15px; - border-width: 0 0 3px 0; border-color: #000000; border-style: solid; - margin: -15px -15px 0 -15px } - - .INavigationBar { - text-align: center; - background-color: #FFFFF0; - padding: 5px; - border-bottom: solid 1px black; - margin: 0 -15px 15px -15px } - - .INavigationBar a { - font-weight: bold } - - .IHeading { - font-size: 20pt; font-weight: bold; - padding: 2.5em 0 .5em 0; - text-align: center; - width: 3.5ex; - } - #IFirstHeading { - padding-top: 0; - } - - .IEntry { - padding-left: 1ex; } - - .ISubIndex { - padding-left: 3ex; padding-bottom: .5em } - - /* While it may cause some entries to look like links when they aren't, I found it's much easier to read the - index if everything's the same color. */ - .ISymbol { - font-weight: bold; color: #900000 } - - .ISymbolPrefix { - text-align: right; - color: #C47C7C; - background-color: #F8F8F8; - border-right: 3px solid #E0E0E0; - border-left: 1px solid #E0E0E0; - padding: 0 1px 0 2px; - } - #IFirstSymbolPrefix { - border-top: 1px solid #E0E0E0; - } - #ILastSymbolPrefix { - border-bottom: 1px solid #E0E0E0; - } - #IOnlySymbolPrefix { - border-top: 1px solid #E0E0E0; - border-bottom: 1px solid #E0E0E0; - } - - a.IParent, - a.IFile { - display: block; - } - - - -.Footer { - font-size: 8pt; color: #909090 } - -body.UnframedPage .Footer { - text-align: right; - margin: 2px } - -body.FramedMenuPage .Footer { - text-align: center; - margin: 5em 10px 0 10px} - - .Footer a:link, - .Footer a:hover, - .Footer a:visited { color: #909090 } - .Footer a:active { color: #A00000 } diff --git a/docs/doctool/Help/example/Small.css b/docs/doctool/Help/example/Small.css deleted file mode 100644 index 0cb7be1c..00000000 --- a/docs/doctool/Help/example/Small.css +++ /dev/null @@ -1,507 +0,0 @@ -/* - IMPORTANT: If you're editing this file in the output directory of one of - your projects, your changes will be overwritten the next time you run - Natural Docs. Instead, copy this file to your project directory, make your - changes, and you can use it with -s. Even better would be to make a CSS - file in your project directory with only your changes, which you can then - use with -s [original style] [your changes]. - - On the other hand, if you're editing this file in the Natural Docs styles - directory, the changes will automatically be applied to all your projects - that use this style the next time Natural Docs is run on them. - - This file is part of Natural Docs, which is Copyright © 2003-2004 Greg Valure - Natural Docs is licensed under the GPL -*/ - -body { - font-family: Verdana, Arial, sans-serif; - color: #000000; - margin: 0px; padding: 0px } - -body.UnframedPage { - background-color: #E8E8E8 } - - -a:link, -a:visited { color: #900000; text-decoration: none } -a:hover { color: #900000; text-decoration: underline } -a:active { color: #FF0000; text-decoration: underline } - -td { - vertical-align: top } - -/* - Comment out this line to use web-style paragraphs (blank line between - paragraphs, no indent) instead of print-style paragraphs (no blank line, - indented.) -*/ -p { - text-indent: 5ex; margin: 0 } - - -/* Can't use something like display: none or it won't break. */ -.HB { - font-size: 1px } - - - - -body.FramedMenuPage, -.MenuSection { - font-size: 8pt; - background-color: #E8E8E8; - padding: 10px 0 0 0 } - -.MenuSection { - width: 27ex } - - - .MTitle { - font-size: 16pt; font-weight: bold; font-variant: small-caps; - text-align: center; - padding: 5px 10px 15px 10px; - border-bottom: 1px dotted #000000; - margin-bottom: 15px } - - .MSubTitle { - font-size: 9pt; font-weight: normal; font-variant: normal; - margin-top: 1ex; margin-bottom: 5px } - - - .MEntry a:link, - .MEntry a:hover, - .MEntry a:visited { color: #606060; margin-right: 0 } - .MEntry a:active { color: #A00000; margin-right: 0 } - - - .MGroup { - font-variant: small-caps; font-weight: bold; - margin: 1em 0 1em 10px } - - /* Konqueror just can't do margins. */ - .KHTML .MGroup { - margin-bottom: 0; padding-bottom: 1em } - - .MGroupContent { - font-variant: normal; font-weight: normal } - - .MGroup a:link, - .MGroup a:hover, - .MGroup a:visited { color: #545454; margin-right: 10px } - .MGroup a:active { color: #A00000; margin-right: 10px } - - - .MFile, - .MText, - .MLink, - .MIndex { - padding: 1px 17px 2px 10px; - margin: .25em 0 .25em 0 } - - .MText { - font-size: 8pt; font-style: italic } - - .MLink { - font-style: italic } - - #MSelected { - color: #000000; background-color: #FFFFFF; - /* Replace padding with border. */ - padding: 0 10px 0 10px; - border-width: 1px 2px 2px 0; border-style: solid; border-color: #000000; - margin-right: 5px } - - /* Close off the left side when its in a group. */ - .MGroup #MSelected { - padding-left: 9px; border-left-width: 1px } - - /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ - .Gecko #MSelected { - -moz-border-radius-topright: 10px; - -moz-border-radius-bottomright: 10px } - .Gecko .MGroup #MSelected { - -moz-border-radius-topleft: 10px; - -moz-border-radius-bottomleft: 10px } - - - - -body.FramedContentPage, -.ContentSection { - background-color: #FFFFFF; - padding-bottom: 15px } - -.ContentSection { - border-width: 0 0 1px 1px; border-style: solid; border-color: #000000 } - - - .CTopic { - font-size: 8pt; - /* This should be a margin but Konq 3.1.1 sucks. */ - padding-bottom: 3em } - - - .CTitle { - font-size: 11pt; font-weight: bold; - border-width: 0 0 1px 0; border-style: solid; border-color: #A0A0A0; - margin: 0 15px .5em 15px } - - .CGroup .CTitle { - font-size: 16pt; font-variant: small-caps; - padding-left: 15px; padding-right: 15px; - border-width: 0 0 2px 0; border-color: #000000; - margin-left: 0; margin-right: 0 } - - .CClass .CTitle, - .CInterface .CTitle, - .CDatabase .CTitle, - .CDatabaseTable .CTitle, - .CSection .CTitle { - font-size: 18pt; - color: #FFFFFF; background-color: #A0A0A0; - padding: 10px 15px 10px 15px; - border-width: 2px 0; border-color: #000000; - margin-left: 0; margin-right: 0 } - - #MainTopic .CTitle { - font-size: 20pt; - color: #FFFFFF; background-color: #7070C0; - padding: 10px 15px 10px 15px; - border-width: 0 0 3px 0; border-color: #000000; - margin-left: 0; margin-right: 0 } - - .CBody { - margin-left: 15px; margin-right: 15px } - - - .CToolTip { - position: absolute; visibility: hidden; - left: 0; top: 0; max-width: 50%; - background-color: #FFFFE0; - padding: 5px; - border-width: 1px 2px 2px 1px; border-style: solid; border-color: #000000; - font-size: 8pt } - - /* Opera 6 gives it a huge height otherwise. */ - .Opera6 .CTooltip, .Opera5 .CTooltip { - max-width: 100% } - - .CHeading { - font-weight: bold; font-size: 9pt; - margin-top: 1.5em; margin-bottom: .5em } - - .CCode { - font: 8pt "Courier New", Courier, monospace; - overflow: auto; - } - - .CBulletList { - /* I don't know why CBody's margin doesn't apply, but it's consistent across browsers so whatever. - Reapply it here as padding. */ - padding-left: 15px; padding-right: 15px; - margin: .5em 5ex .5em 5ex; - } - - .CDescriptionList { - margin: .5em 5ex 0 5ex } - - /* IE 4 and Konqueror always makes it too long. */ - .IE4 .CDescriptionList, - .KHTML .CDescriptionList { - width: 85% } - - .CDLEntry { - font: 8pt "Courier New", Courier, monospace; color: #808080; - padding-bottom: .25em; - white-space: nowrap } - - .CDLDescription { - font-size: 8pt; /* For browsers that don't inherit correctly, like Opera 5. */ - padding-bottom: .5em; padding-left: 5ex } - - - - - -.Prototype { - font: 8pt "Courier New", Courier, monospace; - padding: 5px 3ex; - border-width: 1px; border-style: solid; - margin: 0 5ex 1.5em 5ex; - } - - .Prototype td { - font-size: 8pt; - } - - .PDefaultValue, - .PTypePrefix { - color: #8F8F8F; - } - .PTypePrefix { - text-align: right; - } - - .IE .Prototype table { - padding: 0; - } - - .CFunction .Prototype { - background-color: #F4F4F4; border-color: #D0D0D0 } - .CProperty .Prototype { - background-color: #F4F4FF; border-color: #C0C0E8 } - .CVariable .Prototype { - background-color: #FFFFF0; border-color: #E0E0A0 } - - .CDatabaseIndex .Prototype, - .CConstant .Prototype { - background-color: #D0D0D0; border-color: #000000 } - .CType .Prototype { - background-color: #FFF8F8; border-color: #E8C8C8 } - .CDatabaseTrigger .Prototype, - .CEvent .Prototype, - .CDelegate .Prototype { - background-color: #F0FCF0; border-color: #B8E4B8 } - - .CToolTip .Prototype { - margin: 0 0 .5em 0; - white-space: nowrap; - } - - - - - -.Summary { - margin: 1.5em 5ex 0 5ex } - - .STitle { - font-size: 11pt; font-weight: bold; - margin-bottom: .5em } - - - .SBorder { - background-color: #FFFFF0; - padding: 15px; - border: 1px solid #C0C060 } - - /* Let's observe the evolution of IE's brokeness, shall we? - IE 4 always makes them too long, there's no way around it. */ - .IE4 .SBorder { - width: 85% } - /* IE 5 will make them too long unless you set the width to 100%. Isn't this implied for a div? */ - .IE5 .SBorder { - width: 100% } - /* IE 6 behaves like 5 when it's in a frame, but without frames it will be correct without a width or slightly too long - (but not enough to scroll) with a width. This arbitrary weirdness simply astounds me. */ - body.FramedContentPage .IE6 .SBorder { - width: 100% } - - /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ - .Gecko .SBorder { - -moz-border-radius: 20px } - - - .STable { - font-size: 8pt; width: 100% } - - .SEntrySize { - width: 30% } - .SDescriptionSize { - width: 70% } - - - .SMarked { - background-color: #F8F8D8 } - - - .SEntry .SIndent1 { - margin-left: 1.5ex } - .SEntry .SIndent2 { - margin-left: 3ex } - .SEntry .SIndent3 { - margin-left: 4.5ex } - .SEntry .SIndent4 { - margin-left: 6ex } - .SEntry .SIndent5 { - margin-left: 7.5ex } - - .SDescription { - padding-left: 3ex } - - .SDescription a { color: #800000} - .SDescription a:active { color: #A00000 } - - - .SGroup { - margin-top: .5em; margin-bottom: .25em } - - .SGroup .SEntry { - font-weight: bold; font-variant: small-caps } - - .SGroup .SEntry a { color: #800000 } - .SGroup .SEntry a:active { color: #F00000 } - - - .SMain .SEntry, - .SClass .SEntry, - .SDatabase .SEntry, - .SDatabaseTable .SEntry, - .SSection .SEntry { - font-weight: bold; font-size: 9pt; - margin-bottom: .25em } - - .SClass, - .SDatabase, - .SDatabaseTable, - .SSection { - margin-top: 1em } - - .SMain .SEntry a, - .SClass .SEntry a, - .SDatabase .SEntry a, - .SDatabaseTable .SEntry a, - .SSection .SEntry a { color: #000000 } - - .SMain .SEntry a:active, - .SClass .SEntry a:active, - .SDatabase .SEntry a:active, - .SDatabaseTable .SEntry a:active, - .SSection .SEntry a:active { color: #A00000 } - - - - - -.ClassHierarchy { - margin: 0 15px 1em 15px } - - .CHEntry { - border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; - margin-bottom: 3px; - padding: 2px 2ex; - font-size: 8pt; - background-color: #F4F4F4; color: #606060; - } - - .Gecko .CHEntry { - -moz-border-radius: 4px; - } - - .CHCurrent .CHEntry { - font-weight: bold; - border-color: #000000; - color: #000000; - } - - .CHChildNote .CHEntry { - font-style: italic; - font-size: 8pt; - } - - .CHIndent { - margin-left: 3ex; - } - - .CHEntry a:link, - .CHEntry a:visited, - .CHEntry a:hover { - color: #606060; - } - .CHEntry a:active { - color: #800000; - } - - - - - -body.FramedIndexPage, -.IndexSection { - background-color: #FFFFFF; - font-size: 8pt; - padding: 15px } - -.IndexSection { - border-width: 0 0 1px 1px; border-style: solid; border-color: #000000 } - - .IPageTitle { - font-size: 20pt; font-weight: bold; - color: #FFFFFF; background-color: #7070C0; - padding: 10px 15px 10px 15px; - border-width: 0 0 3px 0; border-color: #000000; border-style: solid; - margin: -15px -15px 0 -15px } - - .INavigationBar { - text-align: center; - background-color: #FFFFF0; - padding: 5px; - border-bottom: solid 1px black; - margin: 0 -15px 15px -15px } - - .INavigationBar a { - font-weight: bold } - - .IHeading { - font-size: 14pt; font-weight: bold; - padding: 2.5em 0 .5em 0; - text-align: center; - width: 3.5ex; - } - #IFirstHeading { - padding-top: 0; - } - - .IEntry { - padding-left: 1ex; } - - .ISubIndex { - padding-left: 3ex; padding-bottom: .5em } - - /* While it may cause some entries to look like links when they aren't, I found it's much easier to read the - index if everything's the same color. */ - .ISymbol { - font-weight: bold; color: #900000 } - - .ISymbolPrefix { - text-align: right; - color: #C47C7C; - background-color: #F8F8F8; - border-right: 3px solid #E0E0E0; - border-left: 1px solid #E0E0E0; - padding: 0 1px 0 2px; - } - #IFirstSymbolPrefix { - border-top: 1px solid #E0E0E0; - } - #ILastSymbolPrefix { - border-bottom: 1px solid #E0E0E0; - } - #IOnlySymbolPrefix { - border-top: 1px solid #E0E0E0; - border-bottom: 1px solid #E0E0E0; - } - - a.IParent, - a.IFile { - display: block; - } - - - -.Footer { - font-size: 8pt; color: #909090 } - -body.UnframedPage .Footer { - text-align: right; - margin: 2px } - -body.FramedMenuPage .Footer { - text-align: center; - margin: 5em 10px 0 10px} - - .Footer a:link, - .Footer a:hover, - .Footer a:visited { color: #909090 } - .Footer a:active { color: #A00000 } diff --git a/docs/doctool/Help/example/showstyle.html b/docs/doctool/Help/example/showstyle.html deleted file mode 100644 index e71b8b9c..00000000 --- a/docs/doctool/Help/example/showstyle.html +++ /dev/null @@ -1,43 +0,0 @@ - - -CSS Sample - Project - - - - - - - - - - - - - - -
This is the style.  Back
- - - - - - -

CSS Sample

Here’s what the output would look like with the currently selected CSS style.  The CSS structure is well-documented so you can easily alter it or make your own.

Here’s a paragraph break.  Natural Docs defaults to print-style paragraphs, where each one is indented rather than separated with a blank line.  If you open the CSS file it will tell you which line to remove to go back to web-style paragraphs.

Header

There’s a header, just so you know what one looks like in this style.  As you can tell, the quality of the text here is going to go downhill fast as I’m really just blathering on to fill up the page.  If you’re actually reading this, you can safely stop now.  No, really.  I’m not going to say anything important from here on down.  Reading it will be just as boring as writing it was.

  • Here’s a bullet.  Thought you should see that.
  • Here’s another one.  Well look at that.
  • And a third.  Looks just like all the others, but I’m going to give it some more text.  So there you go.

Now lets look at a text diagram, shall we?  Are you still reading this?  What’s wrong with you?

+------+     +------+
-| Moby | --> | Dick |
-+------+     +------+
-   |
-   V
-+----------+
-| Musician |
-+----------+
Summary
Here’s what the output would look like with the currently selected CSS style.
Ah, here’s our first function.
This is another function, much like DoSomething(), but different, in that it does something else.
This is my variable.

DoSomething

int DoSomething(int one,
int two,
float four)

Ah, here’s our first function.  I have nothing to say about it just like I had nothing to say about anything else.  Typing, typing, typing to fill up space.  Just a random stream-of-consciousness about nothing.

Parameters

oneThis is the first parameter, aptly named one.
twoBet you can’t guess what the next one is called?
fourHah!  Did that just to screw you up.

Returns

Sometimes it returns, sometimes it doesn’t.  It’s moody that way.

DoSomethingElse

bool DoSomethingElse()

This is another function, much like DoSomething(), but different, in that it does something else.  Hover over DoSomething(), will ya?  See the nice DHTML tooltip goodness.  Here, here’s a link to myVariable too.  Hover over that.

Variables

myVariable

int myVariable

This is my variable.  See how the prototype is colored differently on the default styles?  I thought that was cool too, since you can tell where you are in the documentation easier.  Or maybe you didn’t think it was cool.  I shouldn’t make assumptions like that.  See, now you went and hurt my feelings.  Shame on you.

Um, why are you still reading this?  Didn’t you learn by now?

int DoSomething(int one,
int two,
float four)
Ah, here’s our first function.
bool DoSomethingElse()
This is another function, much like DoSomething(), but different, in that it does something else.
int myVariable
This is my variable.
diff --git a/docs/doctool/Help/examples.css b/docs/doctool/Help/examples.css deleted file mode 100644 index df6692f4..00000000 --- a/docs/doctool/Help/examples.css +++ /dev/null @@ -1,74 +0,0 @@ -@import URL(example/Default.css); - - -body { - margin: 25px; - } - -.NDContent { - color #000000; background-color: #FFFFFF; - padding: 15px 0; - border-style: solid; - border-width: 1px 3px 3px 1px; - border-color: #c0c0c0 #808080 #808080 #c0c0c0; - margin: 1em 5ex; - -moz-border-radius: 12px; - } - - .NDContent p, - .NDContent li, - .NDContent td, - .NDMenu td, - .NDSummary td, - .NDIndex td { - font-size: 10pt; - line-height: normal; - } - .NDContent .CTopic { - padding-bottom: 0; - } - .Prototype td { - font: 10pt Courier New, monospace; - } - .NDIndex .IHeading { - font-size: 16pt; - } - - -.NDMenu { - font: 9pt Verdana, Arial, sans-serif; - color: #000000; background-color: #E8E8E8; - width: 27ex; - padding: 10px 0; - border-style: solid; - border-width: 1px 3px 3px 1px; - border-color: #808080 #606060 #606060 #808080; - margin: 1em 0 1em 5ex; - -moz-border-radius: 12px; - } - - -.NDSummary { - padding: 15px; - border-style: solid; - border-width: 1px 3px 3px 1px; - border-color: #c0c0c0 #808080 #808080 #c0c0c0; - margin: 1em 5ex; - -moz-border-radius: 12px; - } - - .NDSummary .Summary { - margin-top: 0; - } - - -.NDIndex { - color #000000; background-color: #FFFFFF; - padding: 15px; - border-style: solid; - border-width: 1px 3px 3px 1px; - border-color: #c0c0c0 #808080 #808080 #c0c0c0; - margin: 1em 5ex; - -moz-border-radius: 12px; - } - diff --git a/docs/doctool/Help/favicon.ico b/docs/doctool/Help/favicon.ico deleted file mode 100644 index f6e0c496..00000000 Binary files a/docs/doctool/Help/favicon.ico and /dev/null differ diff --git a/docs/doctool/Help/images/header/background.png b/docs/doctool/Help/images/header/background.png deleted file mode 100644 index 09a2ea46..00000000 Binary files a/docs/doctool/Help/images/header/background.png and /dev/null differ diff --git a/docs/doctool/Help/images/header/leftside.png b/docs/doctool/Help/images/header/leftside.png deleted file mode 100644 index 7d093865..00000000 Binary files a/docs/doctool/Help/images/header/leftside.png and /dev/null differ diff --git a/docs/doctool/Help/images/header/logo.png b/docs/doctool/Help/images/header/logo.png deleted file mode 100644 index 9317a1b6..00000000 Binary files a/docs/doctool/Help/images/header/logo.png and /dev/null differ diff --git a/docs/doctool/Help/images/header/overbody.png b/docs/doctool/Help/images/header/overbody.png deleted file mode 100644 index 6b86af15..00000000 Binary files a/docs/doctool/Help/images/header/overbody.png and /dev/null differ diff --git a/docs/doctool/Help/images/header/overbodybg.png b/docs/doctool/Help/images/header/overbodybg.png deleted file mode 100644 index b4284ec1..00000000 Binary files a/docs/doctool/Help/images/header/overbodybg.png and /dev/null differ diff --git a/docs/doctool/Help/images/header/overleftmargin.png b/docs/doctool/Help/images/header/overleftmargin.png deleted file mode 100644 index 3d02af7f..00000000 Binary files a/docs/doctool/Help/images/header/overleftmargin.png and /dev/null differ diff --git a/docs/doctool/Help/images/header/overmenu.png b/docs/doctool/Help/images/header/overmenu.png deleted file mode 100644 index d720d986..00000000 Binary files a/docs/doctool/Help/images/header/overmenu.png and /dev/null differ diff --git a/docs/doctool/Help/images/header/overmenubg.png b/docs/doctool/Help/images/header/overmenubg.png deleted file mode 100644 index 69339d8c..00000000 Binary files a/docs/doctool/Help/images/header/overmenubg.png and /dev/null differ diff --git a/docs/doctool/Help/images/header/rightside.png b/docs/doctool/Help/images/header/rightside.png deleted file mode 100644 index f8ef976a..00000000 Binary files a/docs/doctool/Help/images/header/rightside.png and /dev/null differ diff --git a/docs/doctool/Help/images/menu/about.png b/docs/doctool/Help/images/menu/about.png deleted file mode 100644 index ca65ea4e..00000000 Binary files a/docs/doctool/Help/images/menu/about.png and /dev/null differ diff --git a/docs/doctool/Help/images/menu/background.png b/docs/doctool/Help/images/menu/background.png deleted file mode 100644 index db8b557b..00000000 Binary files a/docs/doctool/Help/images/menu/background.png and /dev/null differ diff --git a/docs/doctool/Help/images/menu/bottomleft.png b/docs/doctool/Help/images/menu/bottomleft.png deleted file mode 100644 index 0f608c8b..00000000 Binary files a/docs/doctool/Help/images/menu/bottomleft.png and /dev/null differ diff --git a/docs/doctool/Help/images/menu/bottomright.png b/docs/doctool/Help/images/menu/bottomright.png deleted file mode 100644 index 10c9e029..00000000 Binary files a/docs/doctool/Help/images/menu/bottomright.png and /dev/null differ diff --git a/docs/doctool/Help/images/menu/community.png b/docs/doctool/Help/images/menu/community.png deleted file mode 100644 index 0021013a..00000000 Binary files a/docs/doctool/Help/images/menu/community.png and /dev/null differ diff --git a/docs/doctool/Help/images/menu/customizing.png b/docs/doctool/Help/images/menu/customizing.png deleted file mode 100644 index d56d25b3..00000000 Binary files a/docs/doctool/Help/images/menu/customizing.png and /dev/null differ diff --git a/docs/doctool/Help/images/menu/using.png b/docs/doctool/Help/images/menu/using.png deleted file mode 100644 index 1de988d2..00000000 Binary files a/docs/doctool/Help/images/menu/using.png and /dev/null differ diff --git a/docs/doctool/Help/index.html b/docs/doctool/Help/index.html deleted file mode 100644 index 7a80c412..00000000 --- a/docs/doctool/Help/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - -Natural Docs
Natural Docs
Version 1.35

This is the Natural Docs help file, a subset of the documentation available at the web site.  Everything you need is on the menu to the left.

Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/javascript/BrowserStyles.js b/docs/doctool/Help/javascript/BrowserStyles.js deleted file mode 100644 index d7eb360c..00000000 --- a/docs/doctool/Help/javascript/BrowserStyles.js +++ /dev/null @@ -1,75 +0,0 @@ - -// -// Browser Styles -// ____________________________________________________________________________ - -var agt=navigator.userAgent.toLowerCase(); -var browserType; -var browserVer; - -if (agt.indexOf("opera") != -1) - { - browserType = "Opera"; - - if (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1) - { browserVer = "Opera5"; } - else if (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1) - { browserVer = "Opera6"; } - else if (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1) - { browserVer = "Opera7"; } - } - -else if (agt.indexOf("khtml") != -1 || agt.indexOf("konq") != -1 || agt.indexOf("safari") != -1) - { - browserType = "KHTML"; - } - -else if (agt.indexOf("msie") != -1) - { - browserType = "IE"; - - if (agt.indexOf("msie 4") != -1) - { browserVer = "IE4"; } - else if (agt.indexOf("msie 5") != -1) - { browserVer = "IE5"; } - else if (agt.indexOf("msie 6") != -1) - { browserVer = "IE6"; } - } - -else if (agt.indexOf("gecko") != -1) - { - browserType = "Gecko"; - } - -// Opera already taken care of. -else if (agt.indexOf("mozilla") != -1 && agt.indexOf("compatible") == -1 && agt.indexOf("spoofer") == -1 && - agt.indexOf("webtv") == -1 && agt.indexOf("hotjava") == -1) - { - browserType = "Netscape"; - - if (agt.indexOf("mozilla/4") != -1) - { browserVer = "Netscape4"; } - } - - -function OpeningBrowserTags() - { - if (browserType) - { - document.write('
'); - - if (browserVer) - { document.write('
'); } - } - }; - -function ClosingBrowserTags() - { - if (browserType) - { - document.write('
'); - - if (browserVer) - { document.write('
'); } - } - }; diff --git a/docs/doctool/Help/javascript/PNGHandling.js b/docs/doctool/Help/javascript/PNGHandling.js deleted file mode 100644 index 89698058..00000000 --- a/docs/doctool/Help/javascript/PNGHandling.js +++ /dev/null @@ -1,69 +0,0 @@ -// Parts derived from: -// Opacity Displayer, Version 1.0 -// Copyright Michael Lovitt, 6/2002. -// Distribute freely, but please leave this notice intact. -// http://www.alistapart.com/articles/pngopacity/ - -// Parts derived from: -// Natural Docs -// Copyright (C) 2003-2004 Greg Valure -// http://www.naturaldocs.org/ - - -var pngTransform; -var pngNormal; - -var agt=navigator.userAgent.toLowerCase(); - -if (agt.indexOf("opera") != -1) - { - if ( (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1) && - agt.indexOf("mac") != -1) - { - pngNormal = 1; - } - else if (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1 || - agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1) - { - pngNormal = 1; - } - } - -else if (agt.indexOf("msie") != -1) - { - if (agt.indexOf("msie 5.5") != -1 || agt.indexOf("msie 6") != -1) - { - if (agt.indexOf("mac") != -1) - { pngNormal = 1; } - else if (agt.indexOf("win") != -1) - { pngTransform = 1; }; - } - - else if (agt.indexOf("msie 5") != -1) - { - if (agt.indexOf("mac") != -1) - { pngNormal = 1; }; - } - } - -else if (agt.indexOf("gecko") != -1) - { - pngNormal = 1; - } - - -function PNGGIF(strPath, intWidth, intHeight, strAlt, strID) - { - if (pngTransform) - { - document.write('
'); - } - else if (pngNormal) - { - document.write(''+strAlt+''); - } - else - { - document.write(''+strAlt+''); - } - }; diff --git a/docs/doctool/Help/keywords.html b/docs/doctool/Help/keywords.html deleted file mode 100644 index 36d22f82..00000000 --- a/docs/doctool/Help/keywords.html +++ /dev/null @@ -1,34 +0,0 @@ - - -Natural Docs Topics and Keywords
Natural Docs
Topics and Keywords

Keywords are not case sensitive and are interchangable within their topic type.  The plural forms denote list topics where every item in its description lists are treated like they have their own topic.

General Topics
Generic
topictopics
aboutlist
note
notes
Section
Ends Scope
section
title
Group
group
File
Always Global
filefiles
programprograms
scriptscripts
documentdocuments
docdocs
headerheaders
Code Topics
Class
Starts Scope
classclasses
structurestructures
structstructs
packagepackages
namespacenamespaces
Interface
Starts Scope
interfaceinterfaces
Type
typetypes
typedeftypedefs
Constant
constantconstants
constconsts
Enumeration
Topic indexed under Types
Members indexed under Constants
enumerationenumerations
enumenums
Function
List topics break apart
functionfunctions
funcfuncs
procedureprocedures
procprocs
routineroutines
subroutinesubroutines
subsubs
methodmethods
callbackcallbacks
constructorconstructors
destructordestructors
Property
propertyproperties
propprops
Event
eventevents
Delegate
delegatedelegates
Macro
macromacros
definedefines
defdefs
Variable
variablevariables
varvars
integerintegers
intints
uintuints
longlongs
ulongulongs
shortshorts
ushortushorts
bytebytes
ubyteubytes
sbytesbytes
floatfloats
doubledoubles
realreals
decimaldecimals
scalarscalars
arrayarrays
arrayrefarrayrefs
hashhashes
hashrefhashrefs
boolbools
booleanbooleans
flagflags
bitbits
bitfieldbitfields
fieldfields
pointerpointers
ptrptrs
referencereferences
refrefs
objectobjects
objobjs
charactercharacters
wcharacterwcharacters
charchars
wcharwchars
stringstrings
wstringwstrings
strstrs
wstrwstrs
handlehandles
Database Topics
Database
databasedatabases
dbdbs
Database Table
Starts Scope
tabletables
database tabledatabase tables
db tabledb tables
Database View
Starts Scope
viewviews
database viewdatabase views
db viewdb views
Database Cursor
cursorcursors
database cursordatabase cursors
db cursordb cursors
Database Index
indexindexes
indices
database indexdatabase indexes
database indices
db indexdb indexes
db indices
keykeys
database keydatabase keys
db keydb keys
primary keyprimary keys
database primary keydatabase primary keys
db primary keydb primary keys
Database Trigger
triggertriggers
database triggerdatabase triggers
db triggerdb triggers
Miscellaneous Topics
Cookie
Always global
cookiecookies
Build Target
targettargets
build targetbuild targets
Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/languages.html b/docs/doctool/Help/languages.html deleted file mode 100644 index 8d48a23b..00000000 --- a/docs/doctool/Help/languages.html +++ /dev/null @@ -1,28 +0,0 @@ - - -Natural Docs Language Support
Natural Docs
About
Language SupportOutput Formats
Language Support
Full Language Support

The following languages have full language support, which means you get:

Full code documentation.  All functions, variables, and classes will appear in the output regardless of whether you wrote anything for them.  This can be turned off with the -do command line option.

Inheritance diagrams.  They will appear in the output wherever appropriate.

Auto-scoping.  The class a topic is part of is determined by the source code rather than class and section topics.

  • C#
  • Perl
  • ActionScript 2
Basic Language Support

The following languages have basic language support, which means you have:

Explicit documentation only.  Only things you write Natural Docs topics for will appear in the output.

No inheritance diagrams.  Sorry.

Topic scoping.  The class a topic is part of is determined by the topic scoping rules.

  • C/C++
  • Java
  • PHP
  • Python
  • PL/SQL
  • Visual Basic
  • Pascal/Delphi
  • Ada
  • JavaScript
  • Ruby
  • Tcl
  • Flash ActionScript
  • ColdFusion
  • Assembly
  • Fortran (free-format only)
  • R
  • Makefiles
  • Plain Text
  • Custom Languages
Getting Full Language Support

This is the current order in which languages will be getting full support.  The order is roughly determined by the total donation amount, then the number of votes, and then the language’s general importance.  It’s not an absolute formula — a large number of one thing can override something else.  For example, C++ and Java’s very high prominence overrides the vote counts, but a high total donation amount could override even them.  A particularly high total donation amount would cause me to start working on that language immediately.

You vote by sending me an e-mail telling me which language you want me to give full support to.  You donate towards a language by donating to the project and filling in the “Donate towards a language?” field on the second page.  You can split it any way you want, and it can be refunded at any point before serious work starts on that language.

  • C/C++  (High importance, $45 in donations, 15 votes)
  • Ada  ($120 in donations, 5 votes)
  • Java  (High importance, 3 votes)
  • PHP  ($10 in donations, 11 votes)
  • Pascal  (8 votes)
  • Python  (5 votes)
  • PL/SQL  (4 votes)
  • ColdFusion  (4 votes)
  • Visual Basic  (3 votes)
  • JavaScript (2 votes)
  • Ruby  ($10 in donations, 1 vote)
  • (2 votes)
  • Fortran  (2 votes)
  • C# 2.0  (1 vote)
List last updated on March 20th.
Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/menu.html b/docs/doctool/Help/menu.html deleted file mode 100644 index 7dbe0a85..00000000 --- a/docs/doctool/Help/menu.html +++ /dev/null @@ -1,50 +0,0 @@ - - -Organizing the Menu - Natural Docs
Natural Docs
Organizing the Menu

Natural Docs creates a file called Menu.txt in the project directory that you can edit to organize the menu.  Natural Docs will take care of adding and deleting entries as necessary, and it will even attempt to organize them by directory, but you have the option of improving it manually.

Order and Titles

If you’ve never edited it before, the menu file will be some comments explaining how to edit it and a list like you see below.

File: ClassA  (ClassA.h)
-File: ClassB  (ClassB.h)
-File: Globals  (Globals.h)

The list gets turned into a menu that looks like this:

It should be obvious what everything on each line is.  When Natural Docs made the menu, it decided on its own what each item should be titled and then put them in alphabetical order.  However, suppose we don’t like this.  We want Globals above the classes and we want spaces in the menu titles.  So we edit the file.

File: Globals  (Globals.h)
-File: Class A  (ClassA.h)
-File: Class B  (ClassB.h)

Run Natural Docs again and the menu is updated.

However, open the menu file again and you’ll see something interesting.

File: Globals  (Globals.h)
-File: Class A  (no auto-title, ClassA.h)
-File: Class B  (no auto-title, ClassB.h)

Natural Docs detected that you edited a couple of the titles and added a no auto-title attribute to each one.  This tells it never to change the titles on those entries.  You don’t have to worry about adding this attribute, Natural Docs will do it automatically.  However, to go back to automatic titles you have to manually delete it.

Grouping

This menu is good for our example, but in the real world, they get much much longer.  We can add groups to organize them further.  Natural Docs will create its own groups by directory, but you can add your own manually if that’s not good enough.

You can manually add groups as shown below.

File: Globals  (Globals.h)
-Group: Classes {
-   File: Class A  (no auto-title, ClassA.h)
-   File: Class B  (no auto-title, ClassB.h) }

You can also nest them inside each other.

File: Globals  (Globals.h)
-Group: Classes {
-   File: Class A  (no auto-title, ClassA.h)
-   Group: Nested Group {
-      File: Class B  (no auto-title, ClassB.h)  }
-   }

Open up the menu file again and take a look.

File: Globals  (Globals.h)
-
-Group: Classes  {
-
-   File: Class A  (no auto-title, ClassA.h)
-   File: Class B  (no auto-title, ClassB.h)
-   }  # Group: Classes

Natural Docs reformatted it.  When you’re organizing the menu, you don’t have to worry about the indentation or otherwise keeping it neat.  The file is reformatted every time it changes, so you can make quick and dirty edits and Natural Docs will keep it readable.

Besides making the menu easier to read, groups also serve another purpose.  Clicking on a group’s name will make it expand and collapse on modern browsers.  Go ahead and try it in the examples.  When the menu gets too long, certain groups will start being collapsed by default  This allows Natural Docs to work with large projects, where showing the entire menu at once is impractical.  For compatibility, this only happens on browsers that support it.  If a browser can’t expand or collapse menus, it always defaults to being completely open.

Indexes

Natural Docs will automatically determine what indexes your project needs and add them to the menu.  The entries will look like this:

Group: Index {
-
-   Index: Everything
-   Class Index: Classes
-   Function Index: Functions
-   }  # Group: Index

Like file entries, you can rename them by editing the title and reorder them by cutting and pasting.  However, if you decide you don’t want a particular index to be generated, just delete its entry and it will go away.  Again, like file entries, Natural Docs will detect this and add something new:

Don't Index: Functions

Like no auto-title, you have to delete that to make it automatic again.

Automatic Changes

You already saw that file entries default to being auto-titled.  Natural Docs tries to guess what the title of each of these files should be.  For example, if the first documented topic is a class, it will use the class name.  If you want to override a file’s title in the file itself instead of in the menu, add a “Title: [title]” comment to the top of it.  This way the title is stays with the file.

When Natural Docs needs to add a file to the menu, it will look for the best group to put it in by directory.  If your grouping mirrors the source tree somewhat, this will be a lot more accurate.  Also, if the group it’s putting it in is alphabetized, Natural Docs will maintain that alphabetization.  If an auto-title changes, it will reorganize the group to maintain its previous alphabetization, if any.

The only exceptions in alphabetization are for the indexes.  If a group only contains indexes, it can be the last item on the menu or in its parent group without making it count as unsorted.  Also, within groups that only contain indexes, the general index can be first, also without making the group count as unsorted.

Finally, if Natural Docs adds some files to a group and causes it to become too long, it will attempt to sub-group it based on directory.  However, it will only do this when its adding files on its own, so you don’t have to worry about it constantly messing up your groups.  Since new files aren’t added to a project that often, if you change the menu manually, it should stay that way for quite some time.

Extras
Title and Subtitle

In addition to files and groups, you can add a title and subtitle to your menu.

Title: My Project
-SubTitle: Something That Does Something
-
-File: Globals  (Globals.h)
-Group: Classes
-   File: Class A  (no auto-title, ClassA.h)
-   File: Class B  (no auto-title, ClassB.h)
My Project
Something That Does Something

In addition to adding the title to the menu, the Title tag will also change the HTML page titles from “file title” to “file title - menu title”, making bookmarks clearer.

Text and Web Links

You can also add arbitrary text and web links to your menu.

File: Globals  (Globals.h)
-Group: Classes  {
-   Text: I couldn't think of good names for these classes.
-   File: Class A  (no auto-title, ClassA.h)
-   File: Class B  (no auto-title, ClassB.h)
-   }
-Link: Built with Natural Docs  (http://www.naturaldocs.org)
Classes

Even though comments use the # character, adding an anchor to a link (such as “http://www.website.com/page.html#anchor”) will still work.

Footers

Finally, you can add a footer to all your pages, such as a copyright notice.  Natural Docs will change any (c)’s to real copyright symbols.

Footer: Copyright (C) 2003 Me

You can see an example of a footer on the Natural Docs web site.

Errors

If there’s ever an error in the menu file, Natural Docs will tell you when it’s run.  It follows the GNU standards, so if you’re running it as part of a build process in an IDE, they will be even easier to find.

NaturalDocs:Menu.txt:6: txet is not a valid keyword

Also, it adds a comment for each error in the menu file so that you can search for them in a text editor.

# There is an error in this file.  Search for ERROR to find it.
-
-File: Globals  (Globals.h)
-Group: Classes  {
-# ERROR: Txet is not a valid keyword.
-   Txet: I couldn't think of good names for these classes.
-   File: Class A  (no auto-title, ClassA.h)
-   File: Class B  (no auto-title, ClassB.h)
-   }

Remember that Natural Docs reformats the menu file whenever it’s run, so you only need to correct the error.  Natural Docs will remove the error comments on its own.

Portability and Versioning Systems

If you only use one input directory, all the files in the menu will have relative paths.  However, if you have more, Natural Docs will use the absolute path instead.

This is not a problem.  The menu file can still be shared between machines even if they don’t keep the source tree in the exact same location.  As long as you have the same layout within the source tree and point to the same base directories in the command line, Natural Docs will be able to convert the paths automatically to the new machine.

However, if you’re putting the menu file in a versioning system like CVS or SourceSafe, it might be very desirable to only have relative paths so anybody can check it in and only the real changes show.  In that case, instead of using multiple input directories, see if it’s possible to only have one input directory and use the -xi command line option to exclude the subdirectories you don’t want scanned.

That’s It!

And we’re done.  The syntax to do all of this is included in the menu file itself, so you don’t need to memorize everything.  You shouldn’t need to organize the menu very often, just after a lot of new files have been added and if you don’t like the default.

Note that if you’re using the non-framed HTML output format, changing the menu does require every output file to be updated.  However, Natural Docs has a special process just for this so it won’t take nearly as long as if it were rebuilding them all from scratch.  Still, if you’re working on a large project, it may be worth considering the framed HTML output format.

Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/messageboards.html b/docs/doctool/Help/messageboards.html deleted file mode 100644 index 0d1a128f..00000000 --- a/docs/doctool/Help/messageboards.html +++ /dev/null @@ -1,32 +0,0 @@ - - -Natural Docs Message Boards
Natural Docs
Message Boards

Although the message boards are hosted by SourceForge, you do not need a SourceForge account to use to them.

General DiscussionUse this forum to discuss anything about Natural Docs that does not fit into the categories below.
SupportUse this forum if you are having trouble using Natural Docs.
StylesUse this forum if you’re working on styling Natural Docs’ output via CSS.
DevelopmentThis forum is for development-related issues only.  Use this forum if you’re working on Natural Docs or an extension to it.
Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/output.html b/docs/doctool/Help/output.html deleted file mode 100644 index ce78349a..00000000 --- a/docs/doctool/Help/output.html +++ /dev/null @@ -1,71 +0,0 @@ - - -Output Formats - Natural Docs
Natural Docs
About
Language SupportOutput Formats
Output Formats

These are the output formats that are currently implemented in Natural Docs.

HTMLHTML output.  Each page is self-contained.  Linking to specific pages is easy, but every file has to be updated whenever the menu changes.  It’s done much faster than a full rebuild, though.
FramedHTMLHTML output based on frames.  The menu is updated quickly, but linking to individual pages is difficult and some people just plain hate frames.
HTML Compatibility

These are the browsers Natural Docs’ HTML output has been tested with.  Note that a browser not being able to collapse the menu isn’t a compatibility concern.  The menu defaults to completely open if the browser can’t handle collapsing it, so it’s always usable.  It’s just better on browsers that support it.

Gecko
Mozilla, FireFox, etc.
Works on 1.0+Mozilla 1.4 works flawlessly.
Mozilla 1.0.2 has trivial padding issues with prototypes in tooltips.
Mozilla-only bonus: rounded corners.
Internet ExplorerWorks on 4+IE 6.0 works flawlessly.
IE 5.0 occasionally mispositions the tooltips, but they’re still usable and are usually fine.
IE 4.0 can’t collapse the menu, makes tooltips the full page width, and lets wide prototypes stretch the whole page.
OperaWorks on 5+Opera 7.02 works flawlessly.
Opera 6.05 can’t collapse the menu and lets wide prototypes stretch the whole page.
Opera 5.12 can’t collapse the menu, can’t size/position the tooltips very well (they’re usable most of the time) and lets wide prototypes stretch the whole page.
KHTML
Konqueror, Safari
Works on 3+Konqueror 3.1.1 has some margin issues and shows tooltips immediately because it has problems doing so on a timer.  Konqueror hasn’t been tested for some time so there may be other issues not noted here.
Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/running.html b/docs/doctool/Help/running.html deleted file mode 100644 index f344f3ac..00000000 --- a/docs/doctool/Help/running.html +++ /dev/null @@ -1,35 +0,0 @@ - - -Running Natural Docs
Natural Docs
Running Natural Docs
 
How and When

Probably the best way to run Natural Docs is as part of the build process.  This way every time you compile your code, your documentation is updated as well and you always have a current reference.  Natural Docs has a differential build process so it will not rebuild the entire set of documentation every time it’s run.

If you’d like to run it manually instead, you should determine the command line you need and save it as a shortcut, batch file, or script since you should be running it often and will rarely need to fiddle with the parameters.

Remember that if you’re using Windows, you’ll need to install a copy of Perl if you haven’t already done so.  You can download ActiveState’s ActivePerl for free.

Command Line
NaturalDocs -i [input (source) directory]
-            -o [output format] [output directory]
-            -p [project directory]
-            [options]
Required Parameters:
-i [dir]
--input [dir]
--source [dir]

The input (source) directory.  Natural Docs will seach this and all its subdirectories for files with Natural Docs content.  It can be specified multiple times.  See the list of supported programming languages.

-o [fmt] [dir]
--output [fmt] [dir]

The output format and directory.  This can be specified multiple times, but only once per directory.  Natural Docs will place all generated output for each format in its directory.  See the list of supported output formats.

-p [dir]
--project [dir]

The project directory.  Natural Docs needs to store some project data, such as where each topic is located and when each file was last modified, so it will put that data in this directory.  Each project you document with Natural Docs needs its own separate directory.

Optional Parameters:
-do
--documented-only

Tells Natural Docs to only include what you explicitly document in the output, and not to find undocumented classes, functions, and variables.  This option is only relevant if you have full language support.

-s [style]
--style [style] ([style] ...)

Selects the CSS style for HTML output.  See the default list of styles.

You can use any CSS file in your project directory or Natural Docs’ Styles directory just by using its name without the .css extension.  If you include more than one, they will all be included in the HTML that order.

-xi [dir]
--exclude-input [dir]
--exclude-source [dir]

Excludes a subdirectory from being scanned.  The output and project directories are automatically excluded.

-r
--rebuild

Rebuilds everything from scratch.  All source files will be rescanned and all output files will be rebuilt

-ro
--rebuild-output

Rebuilds all output files from scratch.

-t [len]
--tab-length [len]

Sets the number of spaces tabs should be expanded to.  This only needs to be set if you use tabs in example code or text diagrams.  The default is 4.

-cs [charset]
--charset [charset]
--character-set [charset]

Sets the character set property of the generated HTML, such as UTF-8 or Shift_JIS.  The default leaves it unspecified.

-nag
--no-auto-group

Tells Natural Docs to not automatically create group topics if you don’t add them yourself.

-q
--quiet

Suppresses all non-error output.

-?
-h
--help

Prints the syntax reference.

Depreciated Parameters:
These options are no longer supported.
-ho
--headers-only

This used to check only the headers and not the source files in C and C++.  Edit Languages.txt instead and add the line “Ignore Extensions: c cpp cxx”.

-s Custom
--style Custom

This used to tell Natural Docs not to alter the CSS file in the output directory.  Copy your custom CSS file to your project directory and use it with -s instead.

-ag [level]
--auto-group [level]

This used to set the level of auto-grouping between Full, Basic, and None.  The algorithm was improved so there’s no need for separate levels anymore.  You can use -nag if you want to turn it off completely.

Examples
NaturalDocs -i C:\My Project\Source
-            -o FramedHTML C:\My Project\Docs
-            -p C:\My Project\Natural Docs
-
-NaturalDocs -i /project/src
-            -o HTML /project/doc
-            -p /project/ndinfo
-            -s Small -t 2
Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/styles.css b/docs/doctool/Help/styles.css deleted file mode 100644 index a51e76c2..00000000 --- a/docs/doctool/Help/styles.css +++ /dev/null @@ -1,259 +0,0 @@ - -body { - background: #FFFFFF; - margin: 25px; - } - -body, -td, -li { - font: 9pt Verdana, sans-serif; - } -p, -td, -li { - line-height: 150%; - } - -p { - text-indent: 4ex; - margin: 0; - } - -td { - vertical-align: top; - } - -a:link, -a:visited { color: #900000; text-decoration: none } -a:hover { color: #900000; text-decoration: underline } -a:active { color: #FF0000; text-decoration: underline } - - - -.NoIndent p - { text-indent: 0; } - -img { - border: none; - } - -.First { - margin-top: 0 !important; - padding-top: 0 !important; - } -.Last { - margin-bottom: 0 !important; - padding-bottom: 0 !important; - } - -.Header { - background-image: URL("images/header/background.png"); - background-color: #7070C0; - } -.SideMenuTop { - background: URL("images/header/overmenubg.png"); - } -.SideMenuBottom { - vertical-align: bottom; - } -.BodyTop { - background: URL("images/header/overbodybg.png"); - text-align: right; - } -.BodyBottom { - vertical-align: bottom; - text-align: right; - font: italic 8pt Georgia, serif; - color: #D0D0D0; - } - -.Body { - padding: 15px 20px 0 25px; - } - - - -pre, code, .Example { - font: 10pt Courier New, Courier, monospace; - color: #606060; - } -a code { - color: #C06060; - } -.Example { - overflow: auto; - } - -.PageTitle { - font: italic small-caps 24pt Georgia, serif; letter-spacing: .1ex; - margin-bottom: .5em } - - -.Topic { - margin-bottom: 2em } - - -.TopicTitle { - font: 18pt Georgia, serif; - border-width: 0 0 1px 0; border-style: solid; border-color: #C0C0C0; - margin-bottom: .5em - } - -.SubTopic { - font-weight: bold; font-size: 10pt; - padding-top: 1.5em; padding-bottom: .5em; - } - - -.TOC { - text-align: center; - font: 8pt Verdana, sans-serif; - text-transform: uppercase; - background-color: #F8F8F8; - border-width: 1px; border-style: solid; border-color: #C0C0C0; - margin-bottom: 1.5em; - padding: 2px 0; - -moz-border-radius: 14px; - } - - .TOC a { - margin: 0 0.75ex; } - - .TOC a:link, - .TOC a:hover, - .TOC a:visited { - color: #404040 } - - -.Example { - background-color: #FDFDFD; - padding: 15px; - border: 1px solid #C0C0C0; - border-width: 1px 1px 1px 6px; - border-style: dashed dashed dashed solid; - color: #707070; - margin: 15px 5ex; - } - - -.LastUpdated { - font: italic 10pt Georgia, serif; - color: #A0A0A0; - margin: 1em 0; - } - - - -.FAQSummary { - margin-bottom: 3em; - } -.FAQSummaryGroup { - font: bold 12pt Georgia, serif; - margin: 1em 0 .25em 0; - } -.FAQGroup { - font: 18pt Georgia, serif; - border-bottom: 1px solid #C0C0C0; - margin-bottom: .5em; - margin-top: 1.5em; - } -.FAQSummaryEntry:link, -.FAQSummaryEntry:visited, -.FAQSummaryEntry:hover, -.FAQSummaryEntry:active { - } - -.FAQEntry { - margin-bottom: 3em; - } -.FAQEntryTitle { - font: bold 12pt Georgia, serif; - margin-bottom: .5em; - } -.FAQEntry .SubTopic { - font: italic 9pt Verdana, sans-serif; - } - - - -.SideMenu { - width: 175px; /* 195 minus padding */ - text-align: center; - padding-top: 15px; - background-color: #F0F0F0; - } -.SideMenuBottom { - background-color: #F0F0F0; - } -.SideMenuBottomRight { - text-align: right; - } - -.SideMenuSection { - margin-bottom: 3em; - } - -.SideMenuTitle { - padding-bottom: 3px; - border-bottom: 1px solid #D0D0D0; - } - -.SideMenuBody { - padding-top: 1em; - background: URL("images/menu/background.png") repeat-x; - } - -.SideMenuEntry { - font: 8pt Verdana, sans-serif; - margin: 0 10px 1em 10px; - display: block; - } - -a.SideMenuEntry:link, -a.SideMenuEntry:visited { - color: #000000; - padding: 1px 10px 2px 9px; - } -a.SideMenuEntry:hover, -a.SideMenuEntry:active, -#SelectedSideMenuEntry { - border-color: #606060; - border-style: solid; - border-width: 1px 2px 2px 1px; - padding: 0 8px; - text-decoration: none; - -moz-border-radius: 10px; - } -a.SideMenuEntry:hover, -a.SideMenuEntry:active { - border-color: #C8C8C8; - background-color: #F8F8F8; - } -#SelectedSideMenuEntry { - border-color: #606060; - background-color: #FFFFFF; - } - -.SideMenuSourceForge { - padding-top: 5px; - } - - - -/* Needed by the release notes for 1.3 */ - -.ExPrototype { - font: 10pt Courier New, Courier, monospace; - padding: 5px 3ex; - background-color: #F4F4F4; - border: 1px solid #D0D0D0; - margin: 1em 0; - } -.ExPrototype td { - font: 10pt Courier New, Courier, monospace; - } -.ExPrototype .Fade { - color: #8F8F8F; - } - diff --git a/docs/doctool/Help/styles.html b/docs/doctool/Help/styles.html deleted file mode 100644 index da77e2fa..00000000 --- a/docs/doctool/Help/styles.html +++ /dev/null @@ -1,43 +0,0 @@ - - -CSS Styles - Natural Docs
Natural Docs
CSS Styles
Default Styles

These are the styles that come with Natural Docs.  They all follow the same color scheme and general layout; the choices are more so that you can choose the style of text you want.

You choose which style you want for your project by adding “-s [style name]” to the command line.

DefaultViewThis is the default style that Natural Docs uses.  Most of the text is 10pt Verdana.
SmallViewSmaller fonts than Default with most of the text using 8pt Verdana.  Some people like the small fonts because you can fit more on the screen at once.  However, some people hate them and find them hard to read.
RomanViewSerif fonts with most of the text using 12pt Roman.  Some people prefer Roman fonts, usually those that have decent anti-aliasing displays like Mac OS X or Windows XP with ClearType.
Customizing

There are two ways to customize the CSS files.  One is to build your own file from scratch, and the other is to make a touch-up file that gets applied after one of the default styles.  Either way you want to create your own CSS file in your project directory (the one you use with -p) or if you plan on sharing it between many projects, in Natural Docs’ Styles directory.

To use a custom file, no matter where you put it, you just use it with -s without the CSS extension.  So if you made Red.css, you use “-s Red”.  If you made a touch-up file instead, you use it after one of the default styles, such as with “-s Default Red”.  If you’re so inclined, you can string as many touch-up files together as you want or use one of your own as a base.

The CSS Guide documents the page structure and CSS styles of Natural Docs’ output.  Always remember to check its revisions section every time you upgrade Natural Docs because it may change between releases.  Visit our message board if you need help.  If you create a new style and would like to make it available for everyone to download, e-mail it to me.

Common Customizations
Web-Style Paragraphs

Natural Docs defaults to print-style paragraphs like the one you are reading.  Each one is indented and there are no blank lines between them.  To switch to web-style paragraphs, which have blank lines and no indents, add this to your custom CSS file:

p {
-  text-indent: 0;
-  margin-bottom: 1em;
-  }
Prototype Colors

If you’ve added a custom topic type and have it finding prototypes for you, you may want to have them appear in a different color than the default black and white.  Add this to your custom CSS file:

.C[type] .Prototype {
background-color: [color];
border-color: [color];
}

Replace [type] with the name of your topic type, minus any symbols and spaces.  So if you added a type “Sound Effect”, you would apply the style to “.CSoundEffect .Prototype”.

Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Help/troubleshooting.html b/docs/doctool/Help/troubleshooting.html deleted file mode 100644 index b031feb7..00000000 --- a/docs/doctool/Help/troubleshooting.html +++ /dev/null @@ -1,14 +0,0 @@ - - -Troubleshooting - Natural Docs
Natural Docs
Troubleshooting
Natural Docs Issues
I don’t get any documentation
Is it recognizing your source files?

If Natural Docs has never said “Parsing n files...” when you run it, or n was way too low a number, it is not finding your source files.

If it has, try this test.  Run Natural Docs once.  Edit one of your source files and save it.  Run Natural Docs again.  If it doesn’t say “Parsing 1 file...” it is not recognizing your file.

No, it’s not recognizing them

The most likely scenario is that Natural Docs doesn’t associate the file extension you’re using with your programming language.  Open Languages.txt and find your language.  Underneath it you should see a line that says something like “Extensions: c cpp cxx h hpp hxx”.  Add the file extensions you use and try again.

If you use extensionless or .cgi files, do the same thing but instead look for a line that says something like “Shebang Strings: tclsh wish expect”.  If it is not there, you may need to add it yourself.  Edit it to include whatever appears in your shebang (#!) line that would say this file belongs to your language.

Otherwise just make sure you included the directory or one of its parents with -i on the command line.

Yes, it’s recognizing them

First note that unless you have full language support, Natural Docs will only include what you write for it.  It will not be able to scan your code and pick out all the classes and functions on its own.

If the problem is with text files, the most likely scenario is that you’re not including topic lines.  Like in comments, only things that appear under “keyword: name” lines count as Natural Docs content.

If this is happening in code, remember that comments must appear alone on a line.  You cannot put Natural Docs comments on the same line as code.  This includes having anything appear after a closing block comment symbol.

Some of my topics don’t show up
  • Check the list of keywords to see if the one you’re using is there and you spelled it correctly.  Note that the web page only has the default set of keywords.  You may need to check Topics.txt in Natural Docs’ Config directory and your project directory if you’ve edited them
  • If the topics appear in code, make sure that the comments are alone on a line.  You cannot put Natural Docs content on the same line as code.  This includes having anything appear after a closing block comment symbol.
  • Make sure that if you have more than one topic in a comment, there is a blank line above the topic line.
  • If you have text boxes or lines, make sure they are completely unbroken.  You can also try removing them completely.
  • If the topics appear in a text file, make sure you included topic lines.  Like in comments, only things that appear after “keyword: name” lines count as Natural Docs content.  You could just add a Title: line to the top of the file.
Some of my topics aren’t formatting correctly
  • Headers must have a blank line above them.
  • Lines directly after bullet or definition lines are part of the previous bullet or definition, even if it’s not indented.  Skip a line first to do something else
  • If you’re getting symbols scattered throughout your text, make sure any text boxes or lines are completely unbroken.  You can also try removing them altogether.
  • If your example source code is getting mangled, remember to use the example code syntax.
  • If a line’s becoming a header but shouldn’t, either get rid of the colon or break it into two lines so the colon appears on the second line
  • If a line’s becoming a definition but shouldn’t, either get rid of the space-dash-space (use two dashes or remove one of the spaces) or break it into two lines so that the space-dash-space is on the second line.

I realize the last two aren’t great.  If you have any ideas as to how to reliably detect these kinds of false positives, e-mail me.

I’m not getting prototypes
  • The topic must appear directly above the thing it’s documenting.
  • Topics documented in lists will not get prototypes, even if the list break apart in the output.
  • The topic name must be present in the prototype somewhere.  Make sure the topic title has the same case as in the prototype and that it’s not misspelled.  This applies even if your language isn’t case sensitive.
My links aren’t working

If your links appear in the output as “<text>” instead of being converted to links, do the following:

  • Make sure the target appears in the output.  The easiest way is to see if it appears in the Everything index.
  • Make sure the link is spelled correctly and has the same case as what you’re linking to.  This applies even if your language isn’t case sensitive.
  • If the topic your link appears in and the link target are not in the same class (or are not both global) make sure you include the class in the link with class.target, class::target, or class->target.  You can check which classes topics appear in with the Everything index.  If your topics are appearing in the wrong classes, fix the documentation remembering the topic scoping rules.
Platform Issues
I get the message “Bad command or file name” or “perl is not recognized”

What’s happening is that NaturalDocs.bat can’t find Perl.  You need Perl installed to run Natural Docs, so if you haven’t done so already, you can download and install ActiveState’s ActivePerl for free.

If you already have Perl, it’s bin directory is either not in your path or the path isn’t being used by whatever you’re running it from, which happens on some IDEs.  Edit NaturalDocs.bat and on the line that says “perl NaturalDocs %NaturalDocsParams%”, change perl to be the full path to perl.exe, such as C:\perl\bin\perl.exe.  If you have spaces in any of the directories you need to surround it with quotes.

I get the message “Can’t open perl script NaturalDocs”

What’s happening is that Perl can’t find the Natural Docs script file.  This happens when the working directory or “start in” folder isn’t the directory Natural Docs was installed to.  If changing that doesn’t work, or if you don’t have the option to set that, edit NaturalDocs.bat and find the line that says “perl NaturalDocs %NaturalDocsParams%”.  Change NaturalDocs to include the full path Natural Docs was installed to, such as C:\Program Files\Natural Docs\NaturalDocs.  If you have spaces in any of the directories you need to surround it with quotes.

Internet Explorer gives me security warnings

“To help protect your security, Internet Explorer has restricted this file from showing active content that could access your computer.”

This is a problem with Internet Explorer and Windows XP Service Pack 2.  In their infinite wisdom, Microsoft decided that instead of monitoring JavaScript to see if it actually does anything questionable, they just prevent it from running at all if the page is on your hard drive.

To fix it, upgrade your copy of Natural Docs.  The HTML generated by Natural Docs 1.3 or higher can get around this issue.

Copyright © 2003-2005 Greg Valure
\ No newline at end of file diff --git a/docs/doctool/Info/CSSGuide.txt b/docs/doctool/Info/CSSGuide.txt deleted file mode 100644 index bf4e1377..00000000 --- a/docs/doctool/Info/CSSGuide.txt +++ /dev/null @@ -1,782 +0,0 @@ - - Title: CSS Guide -_______________________________________________________________________________ - -It's important to understand the internal HTML file structure and styles in order to design your own CSS style for Natural Docs. If -you're content with the default styles, there's no need to read this document. - -The diagrams are designed for clarity. In the actual HTML, you'd obviously see "
" instead of
-"
".  If there's no element in the diagram tag, for example "", that means you
-shouldn't rely on what HTML element it is.  Just refer to them as .Style in your CSS file instead of Element.Style.
-
-
-Topic: Page Structure
-
-    The body tag is used to distinguish between the types of pages.  For framed pages, its style will be ,
-    , or  depending on what it is.  Non-framed pages have a body style of
-    .
-
-    On unframed pages, the menu will be contained in a  td and the content or index in  or
-     tds.  Tables are used instead of CSS positioning for better compatibility with older browsers and because they
-    have the ability to stretch when its content is too wide and collapse when the browser window is too small.
-
-    Unframed Page:
-
-    >   
-    >   [browser styles]
-    >
-    >       
-    >
-    >           
-    >
-    >           
-    >
-    >       
- > Menu - > - > Content or Index - >
- > - >
- > Footer - >
- > - > [/browser styles] - > - - Framed Menu Page: - - > - > [browser styles] - > - > Menu - > - >
- > Footer - >
- > - > [/browser styles] - > - - Framed Content/Index Page: - - > - > [browser styles] - > - > Content or Index - > - > [/browser styles] - > - - -Styles: Page Styles - - UnframedPage - An unframed page. Will be applied to a body tag. - - FramedMenuPage - A framed menu page. Will be applied to a body tag. - FramedContentPage - A framed content page. Will be applied to a body tag. - FramedIndexPage - A framed index page. Will be applied to a body tag. - - MenuSection - The menu section in a non-framed page. Will be applied to a td tag. - ContentSection - The content section in a non-framed page. Will be applied to a td tag. - IndexSection - The index section in a non-framed page. Will be applied to a td tag. - - Footer - The page footer. Will be in a framed menu page or on its own in a non-framed page. - - -Styles: Browser Styles - - Natural Docs pages include JavaScript to detect which browser the user is running and apply styles so that you can work - around browser quirks right in the CSS file. - - Immediately after the body tag, the browser type and version styles will be applied. However, neither are guaranteed to be - there; the user may have JavaScript turned off or be using a browser that isn't detected. These styles should only be used to - correct minor flaws and should not be heavily relied on. - - > - > - > ? - > ? - > - > Page Content - > - > ? - > ? - > - > - - For example, if a 's style is giving you problems in Internet Explorer 4, override it with .IE4 .CTopic. If a 's - style gives you a problem in Opera 5 but only in frames, override it with .FramedMenuPage .Opera5 .MTitle. - - Browser Types: - - If the browser is not one of the types below, neither this nor the browser version will be present. There's the possibility that - some obscure browser will appear as one of the others by spoofing, but the most prominent of these, Opera, Konquerer, and - Safari, are taken care of. - - IE - Internet Explorer - Gecko - The Gecko rendering engine, which includes Mozilla, Netscape 6+, etc. - Opera - Opera - KHTML - The KHTML rendering engine, which includes Konqueror and Safari. - Netscape - The pre-Gecko Netscape rendering engine, which is 4.x and earlier. - - Browser Versions: - - If the browser is not one of the versions below, this style will not be present. The browser type still may be. Gecko and - KHTML-based browsers are not broken out into sub-versions. - - IE4 - Internet Explorer 4.x. - IE5 - Internet Explorer 5.x. - IE6 - Internet Explorer 6.x. - - Opera5 - Opera 5.x. - Opera6 - Opera 6.x. - Opera7 - Opera 7.x. - - Netscape4 - Netscape 4.x. - - - -Topic: Content Structure - - All the content of a given file is either contained in a or a . All other content styles are - prefixed with a C. - - Each piece of content is a surrounded by its type; for example, for a function. Inside - that are the and if necessary, . Inside are analogues to all the top-level tags: - , , etc. Styles like exist so that you only style explicit paragraphs, - not any p that appears. - - In addition to the top-level tags, you also have , , and . are - described in their own section. - - (start diagram) - - - - - - - - Topic title - - - - - (See it's section) - - (See it's section) - -

- Paragraph -

- - - Heading - - -
-                    Code
-                    
- -
    -
  • - Bullet item -
  • -
- - - - - - -
- Entry - - Description -
- - (See it's section) - - - - - - - - - (end diagram) - - Take advantange of the CSS inheritance model. For example, you can style all titles via .CTitle, and you can style - specific titles with .CType .CTitle. - - -Styles: Content Styles - - CTopic - An individual topic. - - CTitle - The title of a topic. - CBody - The body of a topic. May not exist. - CParagraph - A paragraph. Is implemented with a p. - CHeading - A heading. - CBulletList - A bullet list. Is implemented with a ul. - CCode - A section of code. Is implemented with a pre. - - CDescriptionList - A description list, which is the type of list you're reading right now. Is implemented with a table. - CDLEntry - A description list entry, which is the left side. - CDLDescription - A description list description, which is the right side. - - #MainTopic - The ID given to the main topic, which is the first in the file. It is applied to the topic type tag, such as - and . - - CType - A placeholder for all type-specific styles. The actual styles will be C followed by the alphanumeric-only topic type name. - So the CType of a "PL/SQL Function" topic will actually be CPLSQLFunction. - - -Topic: Menu Structure - - Everything is enclosed in a or a . All other menu styles are prefixed with an M. - - The title is an and will always be at the beginning of the menu if it exists. If a subtitle exists as well, it will appear - as an inside . Subtitles aren't allowed without titles. Every other entry in the menu is contained in a - , inside of which there's the type, such as and . Inside of that is the content. With , - there's also a section inside called which can contain more entries. Here's the diagram: - - > - > - > - > Menu title - > - > - > Menu sub title - > - > - > - > - > - > - > File - > - > - > - > - > - > Text - > - > - > - > - > - > Link - > - > - > - > - > - > Group - > - > - > (MEntries) - > - > - > - > - > - > - - The entry that's currently selected will have the <#MSelected> ID, so you can reference it in CSS via .Menu - .MFile#MSelected. - - -Styles: Menu Styles - - MTitle - The title of the menu. - MSubTitle - The subtitle of the menu. Will appear within . - - MEntry - The parent container of and entries. - - MFile - A file entry. - MGroup - A group entry. - MGroupContent - A container for a content. - MText - A plain text entry. - MLink - An external link entry. - - #MSelected - The ID of the currently selected . - - -Topic: Class Hierarchy Structure - - Everything is contained in a single . Each entry is surrounded by its type, such as , and the - generic . Depending on the context, entries may be surrounded by one or more . - - (start diagram) - - - - ? - - - - - Entry - - - - - ? - - - - (end diagram) - - -Styles: Class Hierarchy Styles - - ClassHierarchy - The topmost style containing everything. - - CHEntry - A generic class entry. - - CHParent - The style for a parent class. - CHCurrent - The style for the current class, which is the one the hierarchy is generated for. - CHChild - The style for a child class. - CHChildNote - The style for when a child is added that just shows how many other children were omitted. - - CHIndent - A style used to indent a level. - - -Topic: Summary Structure - - Everything is enclosed in a single . All the other summary styles are prefixed with an S. - - holds the actual word "Summary" and and hold the content. exists because different - browsers apply table padding attributes in different ways. exists as a class to separate the main table from any other - tables that may be necessary. Here's a diagram: - - > - > - > - > Title - > - > - > - > - > ... - >
- >
- > - >
- - On to the table content. Rows may have the style, which means they should be tinted for easier readablity. - - Since we many attributes left to apply, they're done with a kludgy mess of styles within each cell. It's hacky and verbose, but it - works and is compatible everywhere. We apply the type, whether it's an entry or a description, and if it's in a group or class as - shown below: - - > - > - > - > - > - > ? - > - > Entry - > - > ? - > - > - > - > - > - > - > - > - > ? - > - > Description - > - > ? - > - > - > - > - > - - exist to allow indenting. They're necessary because implementing it as nested tables, while structurally cleaner, - won't allow the desciptions to line up on the right throughout the entire summary. - - Use the power of CSS's inheritance rules to specify styles. For example, to set the style of a group entry, apply it to - .SGroup .SEntry. However, you could also apply a style to both the group's entry and description by applying the - style to .SGroup. Or, you could apply a style to all the entries by applying it to .SEntry. And so on. - - -Styles: Summary Styles - - Summary - The topmost style containing the entire summary. - - STitle - Contains the summary title, which is the part that actually says "Summary". - - SBorder - Surrounds , since some browsers can't do table padding right. A hack, I know. - STable - The actual summary table. This class separates it from other layout tables that may appear. - - SMarked - A class applied to rows that should have a slightly different color than the rest of the rows to make them easier to - read. - SEntrySize - A class applied to one entry cell to specify the column width. - SDescriptionSize - A class applied to one description cell to specify the column width. - - SEntry - The entry (left) side of the table. - SDescription - The description (right) side of the table. - - SIndent# - Surrounding entries and descriptions that are part of a group and need to be indented. Actual styles will be - SIndent1, SIndent2, etc. - - SType - A placeholder for all topic-specific styles. The actual styles will be S followed by the alphanumeric-only topic type name. - So the SType of a "PL/SQL Function" topic will actually be SPLSQLFunction. - - -Topic: Prototype Structure - - Everything is enclosed in a . All other styles are prefixed with a P. - - Parameter Type First Style: - - For prototypes such as - > void Function (unsigned int* a, int b = 0) - where the types come first. - - (start diagram) - - - - - - - - - - - - - - - - - - (repeated as necessary) - - - -
- "void Function (" - - "unsigned" - - "int" - - "*" - - "a", "b" - - "=" - - "0" - - ")" -
- - (end diagram) - - - Parameter Name First Style: - - For prototypes such as - > function Function (a, b: int; c: int := 0) - where the parameters come first. - - (start diagram) - - - - - - - - - - - - - - (repeated as necessary) - - - -
- "function Function (" - - "a,", "b:", "c:" - - "int" - - ":=" - - "0" - - ")" -
- - (end diagram) - - - Note that any section may not exist. For example, there will be no cells generated if none of the parameters - have it. - - -Styles: Prototype Styles - - Prototype - The style encompassing the entire prototype. - - PBeforeParameters - The part of the prototype that comes before the parameters. - PAfterParameters - The part of the prototype that comes after the parameters. - - PType - The parameter type. - PTypePrefix - The prefix of a parameter type. - PParameter - The parameter name. - PParameterPrefix - The prefix of a parameter name. - PDefaultValue - The default value expression for a parameter. - PDefaultValuePrefix - The prefix of the default value expression. - - -Topic: Link Structure - - All links to symbols have a type style prefixed with L. The only exceptions are summary entries; summary descriptions use - them as well. - - > - > Link - > - - You can use this to make links to different symbols appear in different styles. For example, making .LClass bold will make all - links to classes bold, except when appearing in summary entries. You can combine this with other styles to be even more - specific. For example, you can apply a style to function links appearing in summary descriptions with .SDescription .LFunction. - -Styles: Link Styles - - LType - A placeholder for all topic-specific styles. The actual styles will be L followed by the alphanumeric-only topic type name. - So the LType of a "PL/SQL Function" topic will actually be LPLSQLFunction. - - - -Topic: Index Structure - - Everything is enclosed in a or an . All other index styles are prefixed with an I. - - (start diagram) - - - - - Page Title - - - - A - B - C ... - - - - - - Heading (A, B, etc.) - - - - - - - ... - -
- Prefix, if any - - Entry -
- -
- - (end diagram) - - Every index entry, including headings, are rows in a table. The first column of a non-heading are so that - the non-prefix portions align correctly. The other column are , of which there are multiple formats, described below. - - (start diagram) - - - Symbol - , - - Class - - - - Symbol - - - - Class - - ... - - - - Symbol - - - - Class - - - - File - - ... - - ... - - - (end diagram) - - Each part of the entry is surrounded by its type, which may or may not be a link. If an entry has more than one defining class - or file, they're broken out into . - - It's called instead of because class entries are . are only used when the symbol - has a class. If the symbol _is_ a class, the symbol is global. - - -Styles: Index Styles - - Index - Surrounds the entire index. - - IPageTitle - The page title. - INavigationBar - The navigation bar. - - IHeading - An index heading, such as the letter for the group. - - IEntry - An entry in the index. - ISymbolPrefix - The stripped prefix of the entry. - ISymbol - The entry symbol. - IParent - The entry parent class. If the entry _is_ a class, this isn't defined because classes are global and don't have parent - classes. This is why it's called IParent instead of IClass; hopefully it's less confusing. - IFile - The file the entry is defined in. - - ISubIndex - The surrounding block if an entry needs to be broken out into a sub-index. - - #IFirstHeading - The ID of the first to appear in the file. - - #IFirstSymbolPrefix - The ID for the first to appear under an . - #ILastSymbolPrefix - The ID for the last to appear under an . - #IOnlySymbolPrefix - The ID if there is only one for an . - - -Topic: Tool Tip Structure - - Tool tips may appear anywhere in the page, mainly because it's assumed that they will use position: absolute and - visibility: hidden. - - The entire tool tip is found in a style, with a CType style inside it. CTypes are normally outside their elements, but - that would cause it to be partially visible in this case. We need to be the outermost style so its visibility and - position can be manipulated in JavaScript. - - Inside there's a and/or the description text. The description text has no special surrounding tags. - - > - > - > - > Prototype - > - > - > Summary text - > - > - -Styles: Tool Tip Styles - - CToolTip - Surrounds the entire tool tip. This *must* have position: absolute and visibility: hidden for the tool tip mechanism - to work. - - See also . - - -Styles: Miscellaneous Styles - - HB - Hidden Break. Will surround a single space to try to break a word transparently. Should be set to as small as possible. - - blockquote - This HTML element should surround anything that needs to be scrolled if it's too wide, like prototypes and text - diagrams. It's not a style because this makes it much easier to do the JavaScript necessary to get this working - in IE. - - -Group: History - -Topic: Revisions - - How the page structure has changed throughout the various releases. - - 1.33: - - - Added . - - 1.32: - - - now surround elements that should scroll if they're too wide for the page. - - 1.3: - - - Removed CPrototype. See the replacement and . - - Removed SInGroup, SInClass, and SInSection in favor of more general . - - , , and are now completely determined by configuration files. - - , , and no longer have separate list types. A CFunctionList is now just a CFunction. - - Indexes are now done with tables. - - ISection was removed. - - are only used for the entry cell, not for each entry in an . - - Added , related IDs, and <#IFirstHeading>. - - 1.21: - - - Added and TOPIC_PROPERTY_LIST styles, so they get corresponding , , and - . - - 1.2: - - - Added since 1.2 added class hierarchies. - - 1.16: - - - Changed the first topic from having a CMain type to having a normal type with a <#MainTopic> ID. - - 1.1: - - - Added . - - Renamed HiddenBreak to . - - Added , TOPIC_CONSTANT_LIST, , and TOPIC_TYPE_LIST types, so they get - corresponding , , and . - - 1.0: - - - The tags now appear arround the tags instead of vice versa. - - Added a tag to surround non- elements. - - now appears in tr's instead of td's, where it belonged in the first place. - - 0.95: - - - Added . - - Redid , replacing generic styles like Menu with page type styles like / - and . - - 0.91: - - - Added and link styles, since 0.91 added URL and e-mail links. - - Added style, which is better than floating on its own. - - 0.9: - - - Added , since 0.9 added indexes. - diff --git a/docs/doctool/Info/Languages.txt b/docs/doctool/Info/Languages.txt deleted file mode 100644 index 98885955..00000000 --- a/docs/doctool/Info/Languages.txt +++ /dev/null @@ -1,105 +0,0 @@ - - Title: Language Notes -_______________________________________________________________________________ - - This is more for my personal reference than anything else. - - - ___________________________________________________________________________ - - Topic: Prototype Parameter Styles - ___________________________________________________________________________ - - Parameters via Commas, Typed via Spaces: - - > FunctionName ( type indentifier, type identifier = value, modifier type identifier ) - > FunctionName ( indentifier, identifier = value ) - - The general idea is that parameters are separated by commas. Identifiers cannot contain spaces. Types and modifiers, - if available, are separated from the identifiers with spaces. There may be an equals sign to set the default value. - - So parsing means splitting by commas, stripping everything past an equals sign for the default value, stripping everything - after the last space for the identifier, and the rest is the type. If there are no internal spaces after the default value is - stripped, it's all identifier. - - Note that internal parenthesis, brackets, braces, and angle brackets should be parsed out. They may be present in default - values or types and any commas and equal signs in them should not be included. - - Applies to C++, Java, C#, JavaScript, Python, PHP, Ruby. - - Applies to Perl as well, even though it doesn't have any real parameter declaration structure. Just adding it with comments - is fine. - - Parameters via Semicolons and Commas, Typed via Colons: - - > FunctionName ( identifier: type; identifier, identifier: type; identifier: type := value ) - - Parameters via semicolons, types via colons. However, there can be more than one parameter per type via commas. - Default values via colon-equals. - - Applies to Pascal, Ada. - - - SQL: - - > FunctionName ( identifier type, identifier modifier type, identifier type := value ) - - Parameters separated by commas. Identifiers come before the types and are separated by a space. Default values are - specified with colon-equals. - - > FunctionName @identifier type, @dentifier modifier type, @identifier type = value - - Microsoft's SQL uses equals instead of colon-equals, doesn't need parenthesis, and starts its parameter names with an @ - symbol. - - - Visual Basic: - - > FunctionName ( modifiers identifier as type, identifier = value ) - - Parameters separated by commas. Default values via equals. However, any number of modifiers may appear before the - identifier. Those modifiers are ByVal, ByRef, Optional, and ParamArray. - - - Tcl: - - > FunctionName { identifier identifier { whatever } } { code } - - Identifiers are specified in the first set of braces and have no commas. However, they can be broken out into sub-braces. - - - ___________________________________________________________________________ - - Topic: Syntax References - ___________________________________________________________________________ - - C++ - http://www.csci.csusb.edu/dick/c++std/syntax.html - - C# - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/CSharpSpecStart.asp. Open in IE. - - Java - http://cui.unige.ch/db-research/Enseignement/analyseinfo/ - Ada - http://cui.unige.ch/db-research/Enseignement/analyseinfo/ - - SQL - http://cui.unige.ch/db-research/Enseignement/analyseinfo/, - http://www.cs.umb.edu/cs634/ora9idocs/appdev.920/a96624/13_elems.htm, or - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_tsqlcon_6lyk.asp?frame=true (open in IE). - - JavaScript - http://academ.hvcc.edu/~kantopet/javascript/index.php - - Python - http://www.python.org/doc/2.3.4/ref/ref.html - - PHP - http://www.php.net/manual/en/langref.php - - Visual Basic - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbls7/html/vbspecstart.asp. Open in IE. - - Pascal - http://pages.cpsc.ucalgary.ca/~becker/231/SyntaxDiagrams/pascal-syntax_files/frame.htm. Open in IE. - - Ruby - http://www.rubycentral.com/book/ - - ActionScript - - - R - Somewhere on http://www.r-project.org. - - ColdFusion - http://livedocs.macromedia.com/coldfusion/6/Developing_ColdFusion_MX_Applications_with_CFML/contents.htm - - Eiffel - http://www.gobosoft.com/eiffel/syntax/ diff --git a/docs/doctool/Info/NDMarkup.txt b/docs/doctool/Info/NDMarkup.txt deleted file mode 100644 index b4966223..00000000 --- a/docs/doctool/Info/NDMarkup.txt +++ /dev/null @@ -1,80 +0,0 @@ - - Title: NDMarkup -_______________________________________________________________________________ - -A markup format used by the parser, both internally and in objects. Text formatted in -NDMarkup will only have the tags documented below. - - -About: Top-Level Tags - - All content will be surrounded by one of the top-level tags. These tags will not appear within each other. - -

- Surrounds a paragraph. Paragraph breaks will replace double line breaks, and single line breaks will - be removed completely. - - - Surrounds code or text diagrams that should appear literally in the output. - - - Surrounds a heading. - -
    - Surrounds a bulleted (unordered) list. -
    - Surrounds a description list, which is what you are reading. - - -About: List Item Tags - - These tags will only appear within their respective lists. - -
  • - Surrounds a bulleted list item. - - Surrounds a description list entry, which is the left side. It will always be followed by a description list - description. - - Surrounds a description list symbol. This is the same as a description list entry, except that the content - is also a referenceable symbol. This occurs when inside a list topic. This tag will always - be followed by a description list description. -
    - Surrounds a description list description, which is the right side. It will always be preceded by a description - list entry or symbol. - -About: Text Tags - - These tags will only appear in paragraphs, headings, or description list descriptions. - - - Bold - - Italics - - Underline - - - Surrounds a potential link to a symbol; potential because the target is not guaranteed to exist. This - tag merely designates an attempted link. No other tags will appear between them. - - - Surrounds an external link. No other tags will appear between them. - - Surrounds an email address. No other tags will appear between them. - -About: Amp Chars - - These are the only amp chars supported, and will appear everywhere. Every other character will appear as is. - - & - The ampersand &. - " - The double quote ". - < - The less than sign <. - > - The greater than sign >. - -About: Tabs - - NDMarkup will not contain tab characters, only spaces. Any tab characters appearing in the source files will be - expanded/replaced as necessary. - - -About: General Tag Properties - - Since the tags are generated, they will always have the following properties, which will make pattern matching much - easier. - - - Tags and amp chars will always be in all lowercase. - - There will be no properties or extraneous whitespace within tags. They will only appear exactly as documented here. - - All code is valid, meaning tags will always be closed,
  • s will only appear within
      s, etc. - - So, for example, you can match symbol links with /([^<]+)<\/link>/ and $1 will be the symbol. No surprises or - gotchas. No need for sophisticated parsing routines. - - Remember that for symbol definitions, the text should appear as is, but internally (such as for the anchor) they need to - be passed through Defines()> so that the output file is just as tolerant as - . diff --git a/docs/doctool/JavaScript/NaturalDocs.js b/docs/doctool/JavaScript/NaturalDocs.js deleted file mode 100644 index 8db5d2e8..00000000 --- a/docs/doctool/JavaScript/NaturalDocs.js +++ /dev/null @@ -1,276 +0,0 @@ -// This file is part of Natural Docs, which is Copyright (C) 2003-2005 Greg Valure -// Natural Docs is licensed under the GPL - -// -// Browser Styles -// ____________________________________________________________________________ - -var agt=navigator.userAgent.toLowerCase(); -var browserType; -var browserVer; - -if (agt.indexOf("opera") != -1) - { - browserType = "Opera"; - - if (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1) - { browserVer = "Opera5"; } - else if (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1) - { browserVer = "Opera6"; } - else if (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1) - { browserVer = "Opera7"; } - } - -else if (agt.indexOf("khtml") != -1 || agt.indexOf("konq") != -1 || agt.indexOf("safari") != -1) - { - browserType = "KHTML"; - } - -else if (agt.indexOf("msie") != -1) - { - browserType = "IE"; - - if (agt.indexOf("msie 4") != -1) - { browserVer = "IE4"; } - else if (agt.indexOf("msie 5") != -1) - { browserVer = "IE5"; } - else if (agt.indexOf("msie 6") != -1) - { browserVer = "IE6"; } - } - -else if (agt.indexOf("gecko") != -1) - { - browserType = "Gecko"; - } - -// Opera already taken care of. -else if (agt.indexOf("mozilla") != -1 && agt.indexOf("compatible") == -1 && agt.indexOf("spoofer") == -1 && - agt.indexOf("webtv") == -1 && agt.indexOf("hotjava") == -1) - { - browserType = "Netscape"; - - if (agt.indexOf("mozilla/4") != -1) - { browserVer = "Netscape4"; } - } - - -// -// Menu -// ____________________________________________________________________________ - - -function ToggleMenu(id) - { - if (!window.document.getElementById) - { return; }; - - var display = window.document.getElementById(id).style.display; - - if (display == "none") - { display = "block"; } - else - { display = "none"; } - - window.document.getElementById(id).style.display = display; - } - - -// -// Tooltips -// ____________________________________________________________________________ - - -var tooltipTimer = 0; - -function ShowTip(event, tooltipID, linkID) - { - if (tooltipTimer) - { clearTimeout(tooltipTimer); }; - - var docX = event.clientX + window.pageXOffset; - var docY = event.clientY + window.pageYOffset; - - var showCommand = "ReallyShowTip('" + tooltipID + "', '" + linkID + "', " + docX + ", " + docY + ")"; - - // KHTML cant handle showing on a timer right now. - - if (browserType != "KHTML") - { tooltipTimer = setTimeout(showCommand, 1000); } - else - { eval(showCommand); }; - } - -function ReallyShowTip(tooltipID, linkID, docX, docY) - { - tooltipTimer = 0; - - var tooltip; - var link; - - if (document.getElementById) - { - tooltip = document.getElementById(tooltipID); - link = document.getElementById(linkID); - } - else if (document.all) - { - tooltip = eval("document.all['" + tooltipID + "']"); - link = eval("document.all['" + linkID + "']"); - } - - if (tooltip) - { - var left = 0; - var top = 0; - - // Not everything supports offsetTop/Left/Width, and some, like Konqueror and Opera 5, think they do but do it badly. - - if (link && link.offsetWidth != null && browserType != "KHTML" && browserVer != "Opera5") - { - var item = link; - while (item != document.body) - { - left += item.offsetLeft; - item = item.offsetParent; - } - - item = link; - while (item != document.body) - { - top += item.offsetTop; - item = item.offsetParent; - } - top += link.offsetHeight; - } - - // The fallback method is to use the mouse X and Y relative to the document. We use a separate if and test if its a number - // in case some browser snuck through the above if statement but didn't support everything. - - if (!isFinite(top) || top == 0) - { - left = docX; - top = docY; - } - - // Some spacing to get it out from under the cursor. - - top += 10; - - // Make sure the tooltip doesnt get smushed by being too close to the edge, or in some browsers, go off the edge of the - // page. We do it here because Konqueror does get offsetWidth right even if it doesnt get the positioning right. - - if (tooltip.offsetWidth != null) - { - var width = tooltip.offsetWidth; - var docWidth = document.body.clientWidth; - - if (left + width > docWidth) - { left = docWidth - width - 1; } - } - - // Opera 5 chokes on the px extension, so it can use the Microsoft one instead. - - if (tooltip.style.left != null && browserVer != "Opera5") - { - tooltip.style.left = left + "px"; - tooltip.style.top = top + "px"; - } - else if (tooltip.style.pixelLeft != null) - { - tooltip.style.pixelLeft = left; - tooltip.style.pixelTop = top; - } - - tooltip.style.visibility = "visible"; - } - } - -function HideTip(tooltipID) - { - if (tooltipTimer) - { - clearTimeout(tooltipTimer); - tooltipTimer = 0; - } - - var tooltip; - - if (document.getElementById) - { tooltip = document.getElementById(tooltipID); } - else if (document.all) - { tooltip = eval("document.all['" + tooltipID + "']"); } - - if (tooltip) - { tooltip.style.visibility = "hidden"; } - } - - -// -// Event Handlers -// ____________________________________________________________________________ - - -function NDOnLoad() - { - if (browserType == "IE") - { - var scrollboxes = document.getElementsByTagName('blockquote'); - - if (scrollboxes.item(0)) - { - var width = scrollboxes.item(0).parentNode.offsetWidth - scrollboxes.item(0).offsetLeft; - - var i = 0; - var item; - - while (item = scrollboxes.item(i)) - { - item.style.width = width; - i++; - }; - - window.onresize=NDOnResize; - }; - }; - } - - -var resizeTimer = 0; - -function NDOnResize() - { - if (browserType == "IE") - { - if (resizeTimer != 0) - { clearTimeout(resizeTimer); }; - - resizeTimer = setTimeout(NDDoResize, 500); - }; - }; - -function NDDoResize() - { - var scrollboxes = document.getElementsByTagName('blockquote'); - - var i; - var item; - - i = 0; - while (item = scrollboxes.item(i)) - { - item.style.width = "100px"; - i++; - }; - - var width = scrollboxes.item(0).parentNode.offsetWidth - scrollboxes.item(0).offsetLeft; - - i = 0; - while (item = scrollboxes.item(i)) - { - item.style.width = width; - i++; - }; - - clearTimeout(resizeTimer); - resizeTimer = 0; - } diff --git a/docs/doctool/License-GPL.txt b/docs/doctool/License-GPL.txt deleted file mode 100644 index 3ab877fa..00000000 --- a/docs/doctool/License-GPL.txt +++ /dev/null @@ -1,341 +0,0 @@ -File: GNU General Public Licence - -Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - -Topic: Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - - -Topic: Terms and Conditions for Copying, Distribution, and Modification - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -NO WARRANTY: - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - -Topic: How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/docs/doctool/Modules/NaturalDocs/Builder.pm b/docs/doctool/Modules/NaturalDocs/Builder.pm deleted file mode 100644 index 7e28fcc2..00000000 --- a/docs/doctool/Modules/NaturalDocs/Builder.pm +++ /dev/null @@ -1,237 +0,0 @@ -############################################################################### -# -# Package: NaturalDocs::Builder -# -############################################################################### -# -# A package that takes parsed source file and builds the output for it. -# -# Usage and Dependencies: -# -# - can be called immediately. -# - and can be called once all sub-packages have been registered via . -# Since this is normally done in their INIT functions, they should be available to all normal functions immediately. -# -# - Prior to calling , , , , and -# must be initialized. GenerateDirectoryNames()> must be called. -# and must be initialized and fully resolved. -# -############################################################################### - -# This file is part of Natural Docs, which is Copyright (C) 2003-2005 Greg Valure -# Natural Docs is licensed under the GPL - - -use strict; -use integer; - -use NaturalDocs::Builder::Base; -use NaturalDocs::Builder::HTML; -use NaturalDocs::Builder::FramedHTML; - -package NaturalDocs::Builder; - - -############################################################################### -# Group: Variables - -# -# Array: outputPackages -# -# An array of the output packages available for use. -# -my @outputPackages; - - -############################################################################### -# Group: Functions - - -# -# Function: OutputPackages -# -# Returns an arrayref of the output packages available for use. The arrayref is not a copy of the data, so don't change it. -# -# Add output packages to this list with the function. -# -sub OutputPackages - { return \@outputPackages; }; - - -# -# Function: OutputPackageOf -# -# Returns the output package corresponding to the passed command line option, or undef if none. -# -sub OutputPackageOf #(commandLineOption) - { - my ($self, $commandLineOption) = @_; - - $commandLineOption = lc($commandLineOption); - - foreach my $package (@outputPackages) - { - if (lc($package->CommandLineOption()) eq $commandLineOption) - { return $package; }; - }; - - return undef; - }; - - - -# -# Function: Add -# -# Adds an output package to those available for use. All output packages must call this function in order to be recognized. -# -# Parameters: -# -# package - The package name. -# -sub Add #(package) - { - my ($self, $package) = @_; - - # Output packages shouldn't register themselves more than once, so we don't need to check for it. - push @outputPackages, $package; - }; - - -# -# Function: Run -# -# Runs the build process. This must be called *every time* Natural Docs is run, regardless of whether any source files changed -# or not. Some output packages have dependencies on files outside of the source tree that need to be checked. -# -# Since there are multiple stages to the build process, this function will handle its own status messages. There's no need to print -# "Building files..." or something similar beforehand. -# -sub Run - { - my ($self) = @_; - - - # Determine what we're doing. - - my $buildTargets = NaturalDocs::Settings->BuildTargets(); - my $filesToBuild = NaturalDocs::Project->FilesToBuild(); - - my $numberToPurge = scalar keys %{NaturalDocs::Project->FilesToPurge()}; - my $numberToBuild = scalar keys %$filesToBuild; - - my %indexesToBuild; - my %indexesToPurge; - - my $currentIndexes = NaturalDocs::Menu->Indexes(); - my $previousIndexes = NaturalDocs::Menu->PreviousIndexes(); - - foreach my $index (keys %$currentIndexes) - { - if (NaturalDocs::SymbolTable->IndexChanged($index) || !exists $previousIndexes->{$index}) - { - $indexesToBuild{$index} = 1; - }; - }; - - # All indexes that still exist should have been deleted. - foreach my $index (keys %$previousIndexes) - { - if (!exists $currentIndexes->{$index}) - { - $indexesToPurge{$index} = 1; - }; - }; - - my $numberOfIndexesToBuild = scalar keys %indexesToBuild; - my $numberOfIndexesToPurge = scalar keys %indexesToPurge; - - - # Start the build process - - foreach my $buildTarget (@$buildTargets) - { - $buildTarget->Builder()->BeginBuild($numberToPurge || $numberToBuild || $numberOfIndexesToBuild || - $numberOfIndexesToPurge || NaturalDocs::Menu->HasChanged()); - }; - - if ($numberToPurge) - { - NaturalDocs::StatusMessage->Start('Purging ' . $numberToPurge . ' file' . ($numberToPurge > 1 ? 's' : '') . '...', - scalar @$buildTargets); - - foreach my $buildTarget (@$buildTargets) - { - $buildTarget->Builder()->PurgeFiles(); - NaturalDocs::StatusMessage->CompletedItem(); - }; - }; - - if ($numberOfIndexesToPurge) - { - NaturalDocs::StatusMessage->Start('Purging ' . $numberOfIndexesToPurge . - ' index' . ($numberOfIndexesToPurge > 1 ? 'es' : '') . '...', - scalar @$buildTargets); - - foreach my $buildTarget (@$buildTargets) - { - $buildTarget->Builder()->PurgeIndexes(\%indexesToPurge); - NaturalDocs::StatusMessage->CompletedItem(); - }; - }; - - if ($numberToBuild) - { - NaturalDocs::StatusMessage->Start('Building ' . $numberToBuild . ' file' . ($numberToBuild > 1 ? 's' : '') . '...', - $numberToBuild * scalar @$buildTargets); - - foreach my $file (keys %$filesToBuild) - { - my $parsedFile = NaturalDocs::Parser->ParseForBuild($file); - - NaturalDocs::Error->OnStartBuilding($file); - - foreach my $buildTarget (@$buildTargets) - { - $buildTarget->Builder()->BuildFile($file, $parsedFile); - NaturalDocs::StatusMessage->CompletedItem(); - }; - - NaturalDocs::Error->OnEndBuilding($file); - }; - }; - - if ($numberOfIndexesToBuild) - { - NaturalDocs::StatusMessage->Start('Building ' . $numberOfIndexesToBuild . - ' index' . ($numberOfIndexesToBuild != 1 ? 'es' : '') . '...', - $numberOfIndexesToBuild * scalar @$buildTargets); - - foreach my $index (keys %indexesToBuild) - { - foreach my $buildTarget (@$buildTargets) - { - $buildTarget->Builder()->BuildIndex($index); - NaturalDocs::StatusMessage->CompletedItem(); - }; - }; - }; - - if (NaturalDocs::Menu->HasChanged()) - { - if (!NaturalDocs::Settings->IsQuiet()) - { print "Updating menu...\n"; }; - - foreach my $buildTarget (@$buildTargets) - { $buildTarget->Builder()->UpdateMenu(); }; - }; - - foreach my $buildTarget (@$buildTargets) - { - $buildTarget->Builder()->EndBuild($numberToPurge || $numberToBuild || $numberOfIndexesToBuild || - $numberOfIndexesToPurge || NaturalDocs::Menu->HasChanged()); - }; - }; - - -1; diff --git a/docs/doctool/Modules/NaturalDocs/Builder/Base.pm b/docs/doctool/Modules/NaturalDocs/Builder/Base.pm deleted file mode 100644 index 2d6cf468..00000000 --- a/docs/doctool/Modules/NaturalDocs/Builder/Base.pm +++ /dev/null @@ -1,316 +0,0 @@ -############################################################################### -# -# Class: NaturalDocs::Builder::Base -# -############################################################################### -# -# A base class for all Builder output formats. -# -############################################################################### - -# This file is part of Natural Docs, which is Copyright (C) 2003-2005 Greg Valure -# Natural Docs is licensed under the GPL - -use strict; -use integer; - -package NaturalDocs::Builder::Base; - - -############################################################################### -# Group: Notes - - -# -# Topic: Implementation -# -# Builder packages are implemented as blessed arrayrefs, not hashrefs. This is done for all objects in Natural Docs for -# efficiency reasons. You create members by defining constants via and using them as -# indexes into the array. -# - -# -# Topic: Function Order -# -# The functions in the build process will always be called in the following order. -# -# - will always be called. -# - will be called next only if there's files that need to be purged. -# - will be called next only if there's indexes that need to be purged. -# - will be called once for each file that needs to be built, if any. -# - will be called once for each index that changed and is part of the menu, if any. -# - will be called next only if the menu changed. -# - will always be called. -# - -# -# Topic: How to Approach -# -# Here's an idea of how to approach making packages for different output types. -# -# -# Multiple Output Files, Embedded Menu: -# -# This example is for when you want to build one output file per source file, each with its own copy of the menu within it. -# This is how works. -# -# Make sure you create a function that generates just the menu for a particular source file. We'll need to generate menus for -# both building a file from scratch and for updating the menu on an existing output file, so it's better to give it its own function. -# You may want to surround it with something that can be easily detected in the output file to make replacing easier. -# -# isn't important. You don't need to implement it. -# -# Implement to delete the output files associated with the purged files. -# -# Implement to delete the output files associated with the purged indexes. -# -# Implement to create an output file for the parsed source file. Use the menu function described earlier. -# -# Implement to create an output file for each index. Use the menu function described earlier for each page. -# -# Implement to go through the list of unbuilt files and update their menus. You can get the list from -# UnbuiltFilesWithContent()>. You need to open their output files, replace the menu, and save it back -# to disk. Yes, it would be simpler from a programmer's point of view to just rebuild the file completely, but that would be -# _very_ inefficient since there could potentially be a _lot_ of files in this group. -# -# Also make sure goes through the unchanged indexes and updates them as well. -# -# isn't important. You don't need to implement it. -# -# -# Multiple Output Files, Menu in File: -# -# This example is for when you want to build one output file per source file, but keep the menu in its own separate file. This -# is how works. -# -# isn't important. You don't need to implement it. -# -# Implement to delete the output files associated with the purged files. -# -# Implement to delete the output files associated with the purged indexes. -# -# Implement to generate an output file from the parsed source file. -# -# Implement to generate an output file for each index. -# -# Implement to rebuild the menu file. -# -# isn't important. You don't need to implement it. -# -# -# Single Output File using Intermediate Files: -# -# This example is for when you want to build one output file, such as a PDF file, but use intermediate files to handle differential -# building. This would be much like how a compiler compiles each source file into a object file, and then a linker stitches them -# all together into the final executable file. -# -# isn't important. You don't need to implement it. -# -# Implement to delete the intermediate files associated with the purged files. -# -# Implement to delete the intermediate files associated with the purged indexes. -# -# Implement to generate an intermediate file from the parsed source file. -# -# Implement to generate an intermediate file for the specified index. -# -# Implement to generate the intermediate file for the menu. -# -# Implement so that if the project changed, it stitches the intermediate files together into the final -# output file. Make sure you check the parameter because the function will be called when nothing changes too. -# -# -# Single Output File using Direct Changes: -# -# This example is for when you want to build one output file, such as a PDF file, but engineering it in such a way that you don't -# need to use intermediate files. In other words, you're able to add, delete, and modify entries directly in the output file. -# -# Implement so that if the project changed, it opens the output file and does anything it needs to do -# to get ready for editing. -# -# Implement to remove the entries associated with the purged files. -# -# Implement to remove the entries associated with the purged indexes. -# -# Implement to add or replace a section of the output file with a new one generated from the parsed file. -# -# Implement to add or replace an index in the output file with a new one generated from the specified index. -# -# Implement so that if the project changed, it saves the output file to disk. -# -# How you handle the menu depends on how the output file references other sections of itself. If it can do so by name, then -# you can implement to update the menu section of the file and you're done. If it has to reference itself -# by address or offset, it gets trickier. You should skip and instead rebuild the menu in if -# the parameter is true. This lets you do it whenever anything changes in a file, rather than just when the menu -# visibly changes. How you keep track of the locations and how they change is your problem. -# - - -############################################################################### -# -# Group: Required Interface Functions -# -# All Builder classes *must* define these functions. -# - - -# -# Function: INIT -# -# Define this function to call Add()> so that knows about this package. -# Packages are defined this way so that new ones can be added without messing around in other code. -# - - -# -# Function: CommandLineOption -# -# Define this function to return the text that should be put in the command line after -o to use this package. It cannot have -# spaces and is not case sensitive. -# -# For example, returns 'html' so someone could use -o html [directory] to use that package. -# -sub CommandLineOption - { - NaturalDocs::Error->SoftDeath($_[0] . " didn't define CommandLineOption()."); - }; - - -# -# Function: BuildFile -# -# Define this function to convert a parsed file to this package's output format. This function will be called once for every source -# file that needs to be rebuilt. However, if a file hasn't changed since the last time Natural Docs was run, it will not be sent to -# this function. All packages must support differential build. -# -# Parameters: -# -# sourceFile - The name of the source file. -# parsedFile - The parsed source file, as an arrayref of objects. -# -sub BuildFile #(sourceFile, parsedFile) - { - NaturalDocs::Error->SoftDeath($_[0] . " didn't define BuildFile()."); - }; - - -############################################################################### -# -# Group: Optional Interface Functions -# -# These functions can be implemented but packages are not required to do so. -# - - -# -# Function: New -# -# Creates and returns a new object. -# -# Note that this is the only function where the first parameter will be the package name, not the object itself. -# -sub New - { - my $package = shift; - - my $object = [ ]; - bless $object, $package; - - return $object; - }; - - -# -# Function: BeginBuild -# -# Define this function if the package needs to do anything at the beginning of the build process. This function will be called -# every time Natural Docs is run, even if the project hasn't changed. This allows you to manage dependencies specific -# to the output format that may change independently from the source tree and menu. For example, -# needs to keep the CSS files in sync regardless of whether the source tree changed or not. -# -# Parameters: -# -# hasChanged - Whether the project has changed, such as source files or the menu file. If false, nothing else is going to be -# called except . -# -sub BeginBuild #(hasChanged) - { - }; - - -# -# Function: EndBuild -# -# Define this function if the package needs to do anything at the end of the build process. This function will be called every time -# Natural Docs is run, even if the project hasn't changed. This allows you to manage dependencies specific to the output -# format that may change independently from the source tree. For example, needs to keep the -# CSS files in sync regardless of whether the source tree changed or not. -# -# Parameters: -# -# hasChanged - Whether the project has changed, such as source files or the menu file. If false, the only other function that -# was called was . -# -sub EndBuild #(hasChanged) - { - }; - - -# -# Function: BuildIndex -# -# Define this function to create an index for the passed topic. You can get the index from -# Index()>. -# -# The reason it's not passed directly to this function is because indexes may be time-consuming to create. As such, they're -# generated on demand because some output packages may choose not to implement them. -# -# Parameters: -# -# topic - The to limit the index by. -# -sub BuildIndex #(topic) - { - }; - -# -# Function: PurgeFiles -# -# Define this function to make the package remove all output related to the passed files. These files no longer have Natural Docs -# content. -# -# Parameters: -# -# files - An existence hashref of the files to purge. -# -sub PurgeFiles #(files) - { - }; - - -# -# Function: PurgeIndexes -# -# Define this function to make the package remove all output related to the passed indexes. These indexes are no longer part -# of the menu. -# -# Parameters: -# -# indexes - An existence hashref of the of the indexes to purge. -# -sub PurgeIndexes #(indexes) - { - }; - - -# -# Function: UpdateMenu -# -# Define this function to make the package update the menu. It will only be called if the menu changed. -# -sub UpdateMenu - { - }; - - -1; diff --git a/docs/doctool/Modules/NaturalDocs/Builder/FramedHTML.pm b/docs/doctool/Modules/NaturalDocs/Builder/FramedHTML.pm deleted file mode 100644 index 7b615e4b..00000000 --- a/docs/doctool/Modules/NaturalDocs/Builder/FramedHTML.pm +++ /dev/null @@ -1,294 +0,0 @@ -############################################################################### -# -# Package: NaturalDocs::Builder::FramedHTML -# -############################################################################### -# -# A package that generates output in HTML with frames. -# -# All functions are called with Package->Function() notation. -# -############################################################################### - -# This file is part of Natural Docs, which is Copyright (C) 2003-2005 Greg Valure -# Natural Docs is licensed under the GPL - - -use strict; -use integer; - -package NaturalDocs::Builder::FramedHTML; - -use base 'NaturalDocs::Builder::HTMLBase'; - - -############################################################################### -# Group: Implemented Interface Functions - - -# -# Function: INIT -# -# Registers the package with . -# -sub INIT - { - NaturalDocs::Builder->Add(__PACKAGE__); - }; - - -# -# Function: CommandLineOption -# -# Returns the option to follow -o to use this package. In this case, "html". -# -sub CommandLineOption - { - return 'FramedHTML'; - }; - - -# -# Function: BuildFile -# -# Builds the output file from the parsed source file. -# -# Parameters: -# -# sourcefile - The of the source file. -# parsedFile - An arrayref of the source file as objects. -# -sub BuildFile #(sourceFile, parsedFile) - { - my ($self, $sourceFile, $parsedFile) = @_; - - my $outputFile = $self->OutputFileOf($sourceFile); - - - # 99.99% of the time the output directory will already exist, so this will actually be more efficient. It only won't exist - # if a new file was added in a new subdirectory and this is the first time that file was ever parsed. - if (!open(OUTPUTFILEHANDLE, '>' . $outputFile)) - { - NaturalDocs::File->CreatePath( NaturalDocs::File->NoFileName($outputFile) ); - - open(OUTPUTFILEHANDLE, '>' . $outputFile) - or die "Couldn't create output file " . $outputFile . "\n"; - }; - - print OUTPUTFILEHANDLE - - - - # 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 - # wide for the frame. Mozilla and Opera handle it like champs either way because they Don't Suck(tm). - - # '' . "\n\n" - - '' - - . (NaturalDocs::Settings->CharSet() ? - '' : '') - - . '' - . $self->BuildTitle($sourceFile) - . '' - - . '' - - . '' - - . '' - . $self->OpeningBrowserStyles() - - . $self->StandardComments() - - . $self->BuildContent($sourceFile, $parsedFile) - - . $self->BuildToolTips() - - . $self->ClosingBrowserStyles() - . ''; - - - close(OUTPUTFILEHANDLE); - }; - - -# -# Function: BuildIndex -# -# Builds an index for the passed type. -# -# Parameters: -# -# type - The to limit the index to, or undef if none. -# -sub BuildIndex #(type) - { - my ($self, $type) = @_; - - my $indexTitle = $self->IndexTitleOf($type); - my $indexFile = $self->IndexFileOf($type); - - my $startPage = - - '' . "\n\n" - - . '' - - . (NaturalDocs::Settings->CharSet() ? - '' : '') - - . ''; - - if (defined NaturalDocs::Menu->Title()) - { $startPage .= $self->StringToHTML(NaturalDocs::Menu->Title()) . ' - '; }; - - $startPage .= - $indexTitle - . '' - - . '' - - . '' - - . '' - . $self->OpeningBrowserStyles() - - . $self->StandardComments() - - . '
      ' - . $indexTitle - . '
      '; - - - my $endPage = $self->ClosingBrowserStyles() . ''; - - - my $pageCount = $self->BuildIndexPages($type, NaturalDocs::SymbolTable->Index($type), $startPage, $endPage); - $self->PurgeIndexFiles($type, $pageCount + 1); - }; - - -# -# Function: UpdateMenu -# -# Builds the menu file. Also generates index.html. -# -sub UpdateMenu - { - my $self = shift; - - my $outputDirectory = NaturalDocs::Settings->OutputDirectoryOf($self); - my $outputFile = NaturalDocs::File->JoinPaths($outputDirectory, 'menu.html'); - - - open(OUTPUTFILEHANDLE, '>' . $outputFile) - or die "Couldn't create output file " . $outputFile . "\n"; - - my $title = 'Menu'; - if (defined $title) - { $title .= ' - ' . NaturalDocs::Menu->Title(); }; - - $title = $self->StringToHTML($title); - - - print OUTPUTFILEHANDLE - - - '' . "\n\n" - - . '' - - . (NaturalDocs::Settings->CharSet() ? - '' : '') - - . '' - . $title - . '' - - . '' - - . '' - - . '' - - . '' - . $self->OpeningBrowserStyles() - - . $self->StandardComments() - - . $self->BuildMenu(undef, undef, 1) - - . '' - - . $self->ClosingBrowserStyles() - . ''; - - - close(OUTPUTFILEHANDLE); - - - # Update index.html - - my $firstMenuEntry = $self->FindFirstFile(); - my $indexFile = NaturalDocs::File->JoinPaths( NaturalDocs::Settings->OutputDirectoryOf($self), 'index.html' ); - - # 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. - if (defined $firstMenuEntry) - { - open(INDEXFILEHANDLE, '>' . $indexFile) - or die "Couldn't create output file " . $indexFile . ".\n"; - - print INDEXFILEHANDLE - - '' - - . '' - - . '' - - . (NaturalDocs::Settings->CharSet() ? - '' : '') - - . '' - . $self->StringToHTML(NaturalDocs::Menu->Title()) - . '' - - . '' - - . $self->StandardComments() - - . '' - . '' - . '' - . '' - - . '' - . 'This documentation was designed for use with frames. However, you can still use it by ' - . '<a href="menu.html">starting from the menu page</a>.' - . "<script language=JavaScript><!--\n" - . 'location.href="menu.html";' - . "\n// --></script>" - . '' - - . ''; - - close INDEXFILEHANDLE; - } - - elsif (-e $indexFile) - { - unlink($indexFile); - }; - }; - - -1; diff --git a/docs/doctool/Modules/NaturalDocs/Builder/HTML.pm b/docs/doctool/Modules/NaturalDocs/Builder/HTML.pm deleted file mode 100644 index 92b4bd7f..00000000 --- a/docs/doctool/Modules/NaturalDocs/Builder/HTML.pm +++ /dev/null @@ -1,363 +0,0 @@ -############################################################################### -# -# Package: NaturalDocs::Builder::HTML -# -############################################################################### -# -# A package that generates output in HTML. -# -# All functions are called with Package->Function() notation. -# -############################################################################### - -# This file is part of Natural Docs, which is Copyright (C) 2003-2005 Greg Valure -# Natural Docs is licensed under the GPL - - -use strict; -use integer; - -package NaturalDocs::Builder::HTML; - -use base 'NaturalDocs::Builder::HTMLBase'; - - -############################################################################### -# Group: Implemented Interface Functions - - -# -# Function: INIT -# -# Registers the package with . -# -sub INIT - { - NaturalDocs::Builder->Add(__PACKAGE__); - }; - - -# -# Function: CommandLineOption -# -# Returns the option to follow -o to use this package. In this case, "html". -# -sub CommandLineOption - { - return 'HTML'; - }; - - -# -# Function: BuildFile -# -# Builds the output file from the parsed source file. -# -# Parameters: -# -# sourcefile - The of the source file. -# parsedFile - An arrayref of the source file as objects. -# -sub BuildFile #(sourceFile, parsedFile) - { - my ($self, $sourceFile, $parsedFile) = @_; - - my $outputFile = $self->OutputFileOf($sourceFile); - - - # 99.99% of the time the output directory will already exist, so this will actually be more efficient. It only won't exist - # if a new file was added in a new subdirectory and this is the first time that file was ever parsed. - if (!open(OUTPUTFILEHANDLE, '>' . $outputFile)) - { - NaturalDocs::File->CreatePath( NaturalDocs::File->NoFileName($outputFile) ); - - open(OUTPUTFILEHANDLE, '>' . $outputFile) - or die "Couldn't create output file " . $outputFile . "\n"; - }; - - print OUTPUTFILEHANDLE - - - '' . "\n\n" - - . '' - - . (NaturalDocs::Settings->CharSet() ? - '' : '') - - . '' - . $self->BuildTitle($sourceFile) - . '' - - . '' - - . '' - - . '' - . $self->OpeningBrowserStyles() - - . $self->StandardComments() - - # I originally had this part done in CSS, but there were too many problems. Back to good old HTML tables. - . '' - - . '' . "\n\n" - - . '' . "\n\n" - - . '
      ' - - . $self->BuildContent($sourceFile, $parsedFile) - - . '
      ' - - . '' - - . $self->BuildToolTips() - - . $self->ClosingBrowserStyles() - . ''; - - - close(OUTPUTFILEHANDLE); - }; - - -# -# Function: BuildIndex -# -# Builds an index for the passed type. -# -# Parameters: -# -# type - The to limit the index to, or undef if none. -# -sub BuildIndex #(type) - { - my ($self, $type) = @_; - - my $indexTitle = $self->IndexTitleOf($type); - my $indexFile = $self->IndexFileOf($type); - - my $startPage = - - '' . "\n\n" - - . '' - - . (NaturalDocs::Settings->CharSet() ? - '' : '') - - . '' - . $indexTitle; - - if (defined NaturalDocs::Menu->Title()) - { $startPage .= ' - ' . $self->StringToHTML(NaturalDocs::Menu->Title()); }; - - $startPage .= - '' - - . '' - - . '' - - . '' - . $self->OpeningBrowserStyles() - - . $self->StandardComments() - - # I originally had this part done in CSS, but there were too many problems. Back to good old HTML tables. - . '' - - . '' - - . '' - - . '
      ' - . '
      ' - . $indexTitle - . '
      '; - - - my $endPage = - '
      ' - - . '' - - . $self->ClosingBrowserStyles() - . ''; - - - my $pageCount = $self->BuildIndexPages($type, NaturalDocs::SymbolTable->Index($type), $startPage, $endPage); - $self->PurgeIndexFiles($type, $pageCount + 1); - }; - - -# -# Function: UpdateMenu -# -# Updates the menu in all the output files that weren't rebuilt. Also generates index.html. -# -sub UpdateMenu - { - my $self = shift; - - - # Update the menu on unbuilt files. - - my $filesToUpdate = NaturalDocs::Project->UnbuiltFilesWithContent(); - - foreach my $sourceFile (keys %$filesToUpdate) - { - $self->UpdateFile($sourceFile); - }; - - - # Update the menu on unchanged index files. - - my $indexes = NaturalDocs::Menu->Indexes(); - - foreach my $index (keys %$indexes) - { - if (!NaturalDocs::SymbolTable->IndexChanged($index)) - { - $self->UpdateIndex($index); - }; - }; - - - # Update index.html - - my $firstMenuEntry = $self->FindFirstFile(); - my $indexFile = NaturalDocs::File->JoinPaths( NaturalDocs::Settings->OutputDirectoryOf($self), 'index.html' ); - - # 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. - if (defined $firstMenuEntry) - { - open(INDEXFILEHANDLE, '>' . $indexFile) - or die "Couldn't create output file " . $indexFile . ".\n"; - - print INDEXFILEHANDLE - '' - . '' - . ''; - - close INDEXFILEHANDLE; - } - - elsif (-e $indexFile) - { - unlink($indexFile); - }; - }; - - - -############################################################################### -# Group: Support Functions - - -# -# Function: UpdateFile -# -# Updates an output file. Replaces the menu, HTML title, and footer. It opens the output file, makes the changes, and saves it -# back to disk, which is much quicker than rebuilding the file from scratch if these were the only things that changed. -# -# Parameters: -# -# sourceFile - The source . -# -sub UpdateFile #(sourceFile) - { - my ($self, $sourceFile) = @_; - - my $outputFile = $self->OutputFileOf($sourceFile); - - if (open(OUTPUTFILEHANDLE, '<' . $outputFile)) - { - my $content; - - read(OUTPUTFILEHANDLE, $content, -s OUTPUTFILEHANDLE); - close(OUTPUTFILEHANDLE); - - - $content =~ s{[^<]*<\/title>}{'<title>' . $self->BuildTitle($sourceFile) . ''}e; - - $content =~ s/.*?/$self->BuildMenu($sourceFile, undef, undef)/es; - - $content =~ s/.*?/$self->BuildFooter()/e; - - - open(OUTPUTFILEHANDLE, '>' . $outputFile); - print OUTPUTFILEHANDLE $content; - close(OUTPUTFILEHANDLE); - }; - }; - - -# -# Function: UpdateIndex -# -# Updates an index's output file. Replaces the menu and footer. It opens the output file, makes the changes, and saves it -# back to disk, which is much quicker than rebuilding the file from scratch if these were the only things that changed. -# -# Parameters: -# -# type - The index , or undef if none. -# -sub UpdateIndex #(type) - { - my ($self, $type) = @_; - - my $page = 1; - - my $outputFile = $self->IndexFileOf($type, $page); - - my $newMenu = $self->BuildMenu(undef, $type, undef); - my $newFooter = $self->BuildFooter(); - - while (-e $outputFile) - { - open(OUTPUTFILEHANDLE, '<' . $outputFile) - or die "Couldn't open output file " . $outputFile . ".\n"; - - my $content; - - read(OUTPUTFILEHANDLE, $content, -s OUTPUTFILEHANDLE); - close(OUTPUTFILEHANDLE); - - - $content =~ s/.*?/$newMenu/es; - - $content =~ s/