summaryrefslogtreecommitdiff
path: root/NaturalDocs
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-08-29 16:35:14 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-08-29 16:35:14 +0200
commit43921ef49a4c9a4acf2182728c60a52f71dd95ec (patch)
tree1c3e41ad1f10e191746c7f50dbcde1c5e12d0a1e /NaturalDocs
parent63eadba1c4ed6e92aeda0a0691e0ac97ce580a43 (diff)
parentea78de039ba122180ac0fe7ffbdca4073342ad0c (diff)
Merge mulk_benkard@ssh.phx.nearlyfreespeech.net:/home/htdocs/code/mulklisp
Diffstat (limited to 'NaturalDocs')
-rw-r--r--NaturalDocs/Languages.txt127
-rw-r--r--NaturalDocs/Menu.txt58
-rwxr-xr-xNaturalDocs/ObjC.pm104
-rw-r--r--NaturalDocs/Topics.txt81
4 files changed, 370 insertions, 0 deletions
diff --git a/NaturalDocs/Languages.txt b/NaturalDocs/Languages.txt
new file mode 100644
index 0000000..d34f7e9
--- /dev/null
+++ b/NaturalDocs/Languages.txt
@@ -0,0 +1,127 @@
+Format: Development Release 12-07-2007 (1.35 base)
+
+# This is the Natural Docs languages file for this project. If you change
+# anything here, it will apply to THIS PROJECT ONLY. If you'd like to change
+# something for all your projects, edit the Languages.txt in Natural Docs'
+# Config directory instead.
+
+
+# You can prevent certain file extensions from being scanned like this:
+# Ignore Extensions: [extension] [extension] ...
+
+
+#-------------------------------------------------------------------------------
+# 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]
+# Alter Language: [name]
+# Defines a new language or alters an existing one. Its name can use any
+# characters. If any of the properties below have an add/replace form, you
+# must use that when using Alter Language.
+#
+# 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] ...
+# [Add/Replace] Extensions: [extension] [extension] ...
+# Defines the file extensions of the language's source files. You can
+# redefine extensions found in the main languages file. You can use * to
+# mean any undefined extension.
+#
+# 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 the language. You can redefine strings found
+# in the main languages file.
+#
+# Ignore Prefixes in Index: [prefix] [prefix] ...
+# [Add/Replace] Ignored Prefixes in Index: [prefix] [prefix] ...
+#
+# Ignore [Topic Type] Prefixes in Index: [prefix] [prefix] ...
+# [Add/Replace] Ignored [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 are defined in the main file, if you'd like to alter
+# them:
+#
+# Text File, Shebang Script, C/C++, C#, Java, JavaScript, Perl, Python,
+# PHP, SQL, Visual Basic, Pascal, Assembly, Ada, Tcl, Ruby, Makefile,
+# ActionScript, ColdFusion, R, Fortran
+
+# 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: Objective-C
+
+ Extensions: m mm h
+ Shebang String: objc
+ Ignore Prefix in Index: MLK
+ Line Comment: //
+ Block Comment: /* */
+ Package Separator: ::
+ Class Prototype Enders: + - @end
+ Function Prototype Enders: ; {
+ Variable Prototype Enders: ; =
+ Perl Package: NaturalDocs::Languages::ObjC
diff --git a/NaturalDocs/Menu.txt b/NaturalDocs/Menu.txt
new file mode 100644
index 0000000..401bcee
--- /dev/null
+++ b/NaturalDocs/Menu.txt
@@ -0,0 +1,58 @@
+Format: Development Release 12-07-2007 (1.35 base)
+
+
+# You can add a title and sub-title to your menu like this:
+# Title: [project name]
+# SubTitle: [subtitle]
+
+# You can add a footer to your documentation like this:
+# Footer: [text]
+# If you want to add a copyright notice, this would be the place to do it.
+
+# You can add a timestamp to your documentation like one of these:
+# Timestamp: Generated on month day, year
+# Timestamp: Updated mm/dd/yyyy
+# Timestamp: Last updated mon day
+#
+# m - One or two digit month. January is "1"
+# mm - Always two digit month. January is "01"
+# mon - Short month word. January is "Jan"
+# month - Long month word. January is "January"
+# d - One or two digit day. 1 is "1"
+# dd - Always two digit day. 1 is "01"
+# day - Day with letter extension. 1 is "1st"
+# yy - Two digit year. 2006 is "06"
+# yyyy - Four digit year. 2006 is "2006"
+# year - Four digit year. 2006 is "2006"
+
+
+# --------------------------------------------------------------------------
+#
+# Cut and paste the lines below to change the order in which your files
+# appear on the menu. Don't worry about adding or removing files, Natural
+# Docs will take care of that.
+#
+# You can further organize the menu by grouping the entries. Add a
+# "Group: [name] {" line to start a group, and add a "}" to end it.
+#
+# You can add text and web links to the menu by adding "Text: [text]" and
+# "Link: [name] ([URL])" lines, respectively.
+#
+# The formatting and comments are auto-generated, so don't worry about
+# neatness when editing the file. Natural Docs will clean it up the next
+# time it is run. When working with groups, just deal with the braces and
+# forget about the indentation and comments.
+#
+# --------------------------------------------------------------------------
+
+
+File: MLKCons (MLKCons.h)
+File: Need to take *PRINT-GENSYM* into account. (MLKSymbol.m)
+
+Group: Index {
+
+ Index: Everything
+ Class Index: Classes
+ Function Index: Functions
+ } # Group: Index
+
diff --git a/NaturalDocs/ObjC.pm b/NaturalDocs/ObjC.pm
new file mode 100755
index 0000000..ad726a1
--- /dev/null
+++ b/NaturalDocs/ObjC.pm
@@ -0,0 +1,104 @@
+###############################################################################
+#
+# Class: NaturalDocs::Languages::ObjC
+#
+###############################################################################
+#
+# Handle Objective-C.
+#
+###############################################################################
+
+## Copyright 2008, Matthias Andreas Benkard.
+##
+## This package 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 package 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 package; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+use strict;
+use integer;
+
+package NaturalDocs::Languages::ObjC;
+
+use base 'NaturalDocs::Languages::Simple';
+use NaturalDocs::Languages;
+
+sub OnCode
+{
+ my ($self, $codeLines, $codeLineNumber, $topicList, $lastCommentTopicCount) = @_;
+ $self->SUPER::OnCode ($codeLines, $codeLineNumber, $topicList, $lastCommentTopicCount);
+
+ my $topic = $topicList->[-1];
+ my $line = $codeLines->[0];
+ if ($lastCommentTopicCount)
+ {
+ unless ($topic->Prototype())
+ {
+ my $code = join ("\n", @{$codeLines});
+ if ($topic->Type() eq ::TOPIC_FUNCTION())
+ {
+ if ($code =~ /\s*([-+].*)[;{]/)
+ {
+ $topic->SetPrototype($1);
+ }
+ }
+ elsif ($topic->Type() eq ::TOPIC_CLASS())
+ {
+ if ($code =~ /\s*(\@interface.*\n)/)
+ {
+ $topic->SetPrototype($1);
+ }
+ }
+ }
+ }
+};
+
+sub ParsePrototype
+{
+ my ($self, $topic_type, $prototype) = @_;
+
+ $_ = $prototype;
+ if ($topic_type == ::TOPIC_FUNCTION and /([-+]\s*\((.*?)\)\s*)(.*)/)
+ {
+ my $return_type = $2;
+ my $p = NaturalDocs::Languages::Prototype->New ($1, "");
+ my $args_p = 0;
+
+ $_ = $3;
+ while (/(\S+)\((.*?)\)\s*(\S+)(?:(\s+(.*))?|$)/)
+ {
+ $p->AddParameter (NaturalDocs::Languages::Prototype::Parameter->New ("($2)",
+ $1,
+ $3,
+ "",
+ "",
+ ""));
+ $args_p = 1;
+ $_ = $4;
+ }
+
+ if ($args_p)
+ {
+ return $p;
+ }
+ else
+ {
+ return NaturalDocs::Languages::Prototype->New ($prototype, "");
+ }
+ }
+ else
+ {
+ return $self->SUPER::ParsePrototype ($topic_type, $prototype);
+ }
+};
+
+1;
diff --git a/NaturalDocs/Topics.txt b/NaturalDocs/Topics.txt
new file mode 100644
index 0000000..caaa009
--- /dev/null
+++ b/NaturalDocs/Topics.txt
@@ -0,0 +1,81 @@
+Format: Development Release 12-07-2007 (1.35 base)
+
+# This is the Natural Docs topics file for this project. If you change anything
+# here, it will apply to THIS PROJECT ONLY. If you'd like to change something
+# for all your projects, edit the Topics.txt in Natural Docs' Config directory
+# instead.
+
+
+# If you'd like to prevent keywords from being recognized by Natural Docs, you
+# can do it like this:
+# Ignore Keywords: [keyword], [keyword], ...
+#
+# Or you can use the list syntax like how they are defined:
+# Ignore Keywords:
+# [keyword]
+# [keyword], [plural keyword]
+# ...
+
+
+#-------------------------------------------------------------------------------
+# SYNTAX:
+#
+# Topic Type: [name]
+# Alter Topic Type: [name]
+# Creates a new topic type or alters one from the main file. Each type gets
+# its own index and behavior settings. Its name can have letters, numbers,
+# spaces, and these charaters: - / . '
+#
+# Plural: [name]
+# Sets the plural name of the topic type, if different.
+#
+# Keywords:
+# [keyword]
+# [keyword], [plural keyword]
+# ...
+# Defines or adds to the 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. You can redefine keywords found in the
+# main topics file.
+#
+# 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.
+#
+# 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 are defined in the main file, if you'd like to alter
+# their behavior or add keywords:
+#
+# Generic, Class, Interface, Section, File, Group, Function, Variable,
+# Property, Type, Constant, Enumeration, Event, Delegate, Macro,
+# Database, Database Table, Database View, Database Index, Database
+# Cursor, Database Trigger, Cookie, Build Target
+
+# 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.