diff options
| -rw-r--r-- | NaturalDocs/Languages.txt | 127 | ||||
| -rw-r--r-- | NaturalDocs/Menu.txt | 58 | ||||
| -rwxr-xr-x | NaturalDocs/ObjC.pm | 93 | ||||
| -rw-r--r-- | NaturalDocs/Topics.txt | 81 | 
4 files changed, 359 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..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.  | 
