From b7dd2dfe91dd1f6ef9b0a4fed64360c816f0b1b2 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Fri, 29 Aug 2008 16:26:18 +0200 Subject: Add Natural Docs configuration. --- NaturalDocs/Languages.txt | 127 ++++++++++++++++++++++++++++++++++++++++++++++ NaturalDocs/Menu.txt | 58 +++++++++++++++++++++ NaturalDocs/ObjC.pm | 93 +++++++++++++++++++++++++++++++++ NaturalDocs/Topics.txt | 81 +++++++++++++++++++++++++++++ 4 files changed, 359 insertions(+) create mode 100644 NaturalDocs/Languages.txt create mode 100644 NaturalDocs/Menu.txt create mode 100755 NaturalDocs/ObjC.pm create mode 100644 NaturalDocs/Topics.txt (limited to 'NaturalDocs') 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..2c78478 --- /dev/null +++ b/NaturalDocs/ObjC.pm @@ -0,0 +1,93 @@ +############################################################################### +# +# Class: NaturalDocs::Languages::ObjC +# +############################################################################### +# +# Handle Objective-C. +# +############################################################################### + +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) + { + #print "$topic\n"; + #print "$line\n"; + 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) = @_; + + #print "$prototype\n"; + + $_ = $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+(.*))?|$)/) + { + #print "$4, $1, $2, $3\n"; + $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. -- cgit v1.2.3 From a25471b0c682c4e0f04bef536da5c8f248d25c4f Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Fri, 29 Aug 2008 16:27:36 +0200 Subject: NaturalDocs/ObjC.pm: Add copyright notice. --- NaturalDocs/ObjC.pm | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'NaturalDocs') diff --git a/NaturalDocs/ObjC.pm b/NaturalDocs/ObjC.pm index 2c78478..ad726a1 100755 --- a/NaturalDocs/ObjC.pm +++ b/NaturalDocs/ObjC.pm @@ -8,6 +8,22 @@ # ############################################################################### +## 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; @@ -25,8 +41,6 @@ sub OnCode my $line = $codeLines->[0]; if ($lastCommentTopicCount) { - #print "$topic\n"; - #print "$line\n"; unless ($topic->Prototype()) { my $code = join ("\n", @{$codeLines}); @@ -52,8 +66,6 @@ sub ParsePrototype { my ($self, $topic_type, $prototype) = @_; - #print "$prototype\n"; - $_ = $prototype; if ($topic_type == ::TOPIC_FUNCTION and /([-+]\s*\((.*?)\)\s*)(.*)/) { @@ -64,7 +76,6 @@ sub ParsePrototype $_ = $3; while (/(\S+)\((.*?)\)\s*(\S+)(?:(\s+(.*))?|$)/) { - #print "$4, $1, $2, $3\n"; $p->AddParameter (NaturalDocs::Languages::Prototype::Parameter->New ("($2)", $1, $3, -- cgit v1.2.3