2 /*************************************************************************************
5 * Author: M. Uli Kusterer (witness.of.teachtext@gmx.net)
6 * Contributors: Quinn Taylor (quinntaylor@mac.com)
7 * Copyright: (c) 2008 Quinn Taylor, 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)
8 * Release Version: 1.0.8.4
9 * Date Started: 2004/06/04
11 * Objective-C language file for GeSHi.
16 * - Added support for @ before strings being highlighted
17 * 2008/06/10 (1.0.7.22)
18 * - Added keywords for Objective-C 2.0 (Leopard+).
19 * - Changed colors to match Xcode 3 highlighting more closely.
20 * - Updated API for AppKit and Foundation; added CoreData classes.
21 * - Updated URLs for AppKit and Foundation; split classes and protocols.
22 * - Sorted all keyword group in reverse-alpha order for correct matching.
23 * - Changed all keyword groups to be case-sensitive.
27 * TODO (updated 2004/11/27)
28 * -------------------------
30 *************************************************************************************
32 * This file is part of GeSHi.
34 * GeSHi is free software; you can redistribute it and/or modify
35 * it under the terms of the GNU General Public License as published by
36 * the Free Software Foundation; either version 2 of the License, or
37 * (at your option) any later version.
39 * GeSHi is distributed in the hope that it will be useful,
40 * but WITHOUT ANY WARRANTY; without even the implied warranty of
41 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
42 * GNU General Public License for more details.
44 * You should have received a copy of the GNU General Public License
45 * along with GeSHi; if not, write to the Free Software
46 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
48 ************************************************************************************/
50 $language_data = array (
51 'LANG_NAME' => 'Objective-C',
52 'COMMENT_SINGLE' => array(
55 //Single line C-Comments
58 'COMMENT_MULTI' => array('/*' => '*/'),
59 'COMMENT_REGEXP' => array(
60 //Multiline Continuation for single-line comment
61 2 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
62 //Pseudo-Highlighting of the @-sign before strings
65 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE
,
66 'QUOTEMARKS' => array('"', "'"),
67 'ESCAPE_CHAR' => '\\',
70 // Objective-C keywords
72 'while', 'switch', 'return', 'in', 'if', 'goto', 'foreach', 'for',
73 'else', 'do', 'default', 'continue', 'case', '@try', '@throw',
74 '@synthesize', '@synchronized', '@selector', '@public', '@protocol',
75 '@protected', '@property', '@private', '@interface',
76 '@implementation', '@finally', '@end', '@encode', '@defs', '@class',
79 // Macros and constants
81 'YES', 'USHRT_MAX', 'ULONG_MAX', 'UINT_MAX', 'UCHAR_MAX', 'true',
82 'TMP_MAX', 'stdout', 'stdin', 'stderr', 'SIGTERM', 'SIGSEGV',
83 'SIGINT', 'SIGILL', 'SIG_IGN', 'SIGFPE', 'SIG_ERR', 'SIG_DFL',
84 'SIGABRT', 'SHRT_MIN', 'SHRT_MAX', 'SEEK_SET', 'SEEK_END',
85 'SEEK_CUR', 'SCHAR_MIN', 'SCHAR_MAX', 'RAND_MAX', 'NULL',
86 'NO', 'nil', 'Nil', 'L_tmpnam', 'LONG_MIN', 'LONG_MAX',
87 'LDBL_MIN_EXP', 'LDBL_MIN', 'LDBL_MAX_EXP', 'LDBL_MAX',
88 'LDBL_MANT_DIG', 'LDBL_EPSILON', 'LDBL_DIG', 'INT_MIN', 'INT_MAX',
89 'HUGE_VAL', 'FOPEN_MAX', 'FLT_ROUNDS', 'FLT_RADIX', 'FLT_MIN_EXP',
90 'FLT_MIN', 'FLT_MAX_EXP', 'FLT_MAX', 'FLT_MANT_DIG', 'FLT_EPSILON',
91 'FLT_DIG', 'FILENAME_MAX', 'false', 'EXIT_SUCCESS', 'EXIT_FAILURE',
92 'errno', 'ERANGE', 'EOF', 'enum', 'EDOM', 'DBL_MIN_EXP', 'DBL_MIN',
93 'DBL_MAX_EXP', 'DBL_MAX', 'DBL_MANT_DIG', 'DBL_EPSILON', 'DBL_DIG',
94 'CLOCKS_PER_SEC', 'CHAR_MIN', 'CHAR_MAX', 'CHAR_BIT', 'BUFSIZ',
97 // C standard library functions
99 'vsprintf', 'vprintf', 'vfprintf', 'va_start', 'va_end', 'va_arg',
100 'ungetc', 'toupper', 'tolower', 'tmpname', 'tmpfile', 'time',
101 'tanh', 'tan', 'system', 'strxfrm', 'strtoul', 'strtol', 'strtok',
102 'strtod', 'strstr', 'strspn', 'strrchr', 'strpbrk', 'strncpy',
103 'strncmp', 'strncat', 'strlen', 'strftime', 'strerror', 'strcspn',
104 'strcpy', 'strcoll', 'strcmp', 'strchr', 'strcat', 'sscanf',
105 'srand', 'sqrt', 'sprintf', 'snprintf', 'sizeof', 'sinh', 'sin',
106 'setvbuf', 'setjmp', 'setbuf', 'scanf', 'rewind', 'rename',
107 'remove', 'realloc', 'rand', 'qsort', 'puts', 'putchar', 'putc',
108 'printf', 'pow', 'perror', 'offsetof', 'modf', 'mktime', 'memset',
109 'memmove', 'memcpy', 'memcmp', 'memchr', 'malloc', 'longjmp',
110 'log10', 'log', 'localtime', 'ldiv', 'ldexp', 'labs', 'isxdigit',
111 'isupper', 'isspace', 'ispunct', 'isprint', 'islower',
112 'isgraph', 'isdigit', 'iscntrl', 'isalpha', 'isalnum', 'gmtime',
113 'gets', 'getenv', 'getchar', 'getc', 'fwrite', 'ftell', 'fsetpos',
114 'fseek', 'fscanf', 'frexp', 'freopen', 'free', 'fread', 'fputs',
115 'fputc', 'fprintf', 'fopen', 'fmod', 'floor', 'fgets', 'fgetpos',
116 'fgetc', 'fflush', 'ferror', 'feof', 'fclose', 'fabs', 'exp',
117 'exit', 'div', 'difftime', 'ctime', 'cosh', 'cos', 'clock',
118 'clearerr', 'ceil', 'calloc', 'bsearch', 'atol', 'atoi', 'atof',
119 'atexit', 'atan2', 'atan', 'assert', 'asin', 'asctime', 'acos',
122 // Data types (C, Objective-C, Cocoa)
124 'volatile', 'void', 'va_list', 'unsigned', 'union', 'typedef', 'tm',
125 'time_t', 'struct', 'string', 'static', 'size_t',
126 'signed', 'signal', 'short', 'SEL', 'register', 'raise',
127 'ptrdiff_t', 'NSZone', 'NSRect', 'NSRange', 'NSPoint', 'long',
128 'ldiv_t', 'jmp_buf', 'int', 'IMP', 'id', 'fpos_t', 'float', 'FILE',
129 'extern', 'double', 'div_t', 'const', 'clock_t', 'Class', 'char',
132 // Foundation classes
134 'NSXMLParser', 'NSXMLNode', 'NSXMLElement', 'NSXMLDTDNode',
135 'NSXMLDTD', 'NSXMLDocument', 'NSWhoseSpecifier',
136 'NSValueTransformer', 'NSValue', 'NSUserDefaults', 'NSURLResponse',
137 'NSURLRequest', 'NSURLProtocol', 'NSURLProtectionSpace',
138 'NSURLHandle', 'NSURLDownload', 'NSURLCredentialStorage',
139 'NSURLCredential', 'NSURLConnection', 'NSURLCache',
140 'NSURLAuthenticationChallenge', 'NSURL', 'NSUniqueIDSpecifier',
141 'NSUndoManager', 'NSUnarchiver', 'NSTimeZone', 'NSTimer',
142 'NSThread', 'NSTask', 'NSString', 'NSStream', 'NSSpellServer',
143 'NSSpecifierTest', 'NSSortDescriptor', 'NSSocketPortNameServer',
144 'NSSocketPort', 'NSSetCommand', 'NSSet', 'NSSerializer',
145 'NSScriptWhoseTest', 'NSScriptSuiteRegistry',
146 'NSScriptObjectSpecifier', 'NSScriptExecutionContext',
147 'NSScriptCommandDescription', 'NSScriptCommand',
148 'NSScriptCoercionHandler', 'NSScriptClassDescription', 'NSScanner',
149 'NSRunLoop', 'NSRelativeSpecifier', 'NSRecursiveLock',
150 'NSRangeSpecifier', 'NSRandomSpecifier', 'NSQuitCommand', 'NSProxy',
151 'NSProtocolChecker', 'NSPropertySpecifier',
152 'NSPropertyListSerialization', 'NSProcessInfo', 'NSPredicate',
153 'NSPositionalSpecifier', 'NSPortNameServer', 'NSPortMessage',
154 'NSPortCoder', 'NSPort', 'NSPointerFunctions', 'NSPointerArray',
155 'NSPipe', 'NSOutputStream', 'NSOperationQueue', 'NSOperation',
156 'NSObject', 'NSNumberFormatter', 'NSNumber', 'NSNull',
157 'NSNotificationQueue', 'NSNotificationCenter', 'NSNotification',
158 'NSNetServiceBrowser', 'NSNetService', 'NSNameSpecifier',
159 'NSMutableURLRequest', 'NSMutableString', 'NSMutableSet',
160 'NSMutableIndexSet', 'NSMutableDictionary', 'NSMutableData',
161 'NSMutableCharacterSet', 'NSMutableAttributedString',
162 'NSMutableArray', 'NSMoveCommand', 'NSMiddleSpecifier',
163 'NSMethodSignature', 'NSMetadataQueryResultGroup',
164 'NSMetadataQueryAttributeValueTuple', 'NSMetadataQuery',
165 'NSMetadataItem', 'NSMessagePortNameServer', 'NSMessagePort',
166 'NSMapTable', 'NSMachPort', 'NSMachBootstrapServer',
167 'NSLogicalTest', 'NSLock', 'NSLocale', 'NSKeyedUnarchiver',
168 'NSKeyedArchiver', 'NSInvocationOperation', 'NSInvocation',
169 'NSInputStream', 'NSIndexSpecifier', 'NSIndexSet', 'NSIndexPath',
170 'NSHTTPURLResponse', 'NSHTTPCookieStorage', 'NSHTTPCookie',
171 'NSHost', 'NSHashTable', 'NSGetCommand', 'NSGarbageCollector',
172 'NSFormatter', 'NSFileManager', 'NSFileHandle', 'NSExpression',
173 'NSExistsCommand', 'NSException', 'NSError', 'NSEnumerator',
174 'NSDistributedNotificationCenter', 'NSDistributedLock',
175 'NSDistantObjectRequest', 'NSDistantObject',
176 'NSDirectoryEnumerator', 'NSDictionary', 'NSDeserializer',
177 'NSDeleteCommand', 'NSDecimalNumberHandler', 'NSDecimalNumber',
178 'NSDateFormatter', 'NSDateComponents', 'NSDate', 'NSData',
179 'NSCreateCommand', 'NSCountedSet', 'NSCountCommand', 'NSConnection',
180 'NSConditionLock', 'NSCondition', 'NSCompoundPredicate',
181 'NSComparisonPredicate', 'NSCoder', 'NSCloseCommand',
182 'NSCloneCommand', 'NSClassDescription', 'NSCharacterSet',
183 'NSCalendarDate', 'NSCalendar', 'NSCachedURLResponse', 'NSBundle',
184 'NSAutoreleasePool', 'NSAttributedString', 'NSAssertionHandler',
185 'NSArray', 'NSArchiver', 'NSAppleScript', 'NSAppleEventManager',
186 'NSAppleEventDescriptor', 'NSAffineTransform'
188 // Foundation protocols
190 'NSURLProtocolClient', 'NSURLHandleClient', 'NSURLClient',
191 'NSURLAuthenticationChallengeSender', 'NSScriptObjectSpecifiers',
192 'NSScriptKeyValueCoding', 'NSScriptingComparisonMethods',
193 'NSObjCTypeSerializationCallBack', 'NSMutableCopying',
194 'NSLocking', 'NSKeyValueObserving', 'NSKeyValueCoding',
195 'NSFastEnumeration', 'NSErrorRecoveryAttempting',
196 'NSDecimalNumberBehaviors', 'NSCopying', 'NSComparisonMethods',
201 'NSWorkspace', 'NSWindowController', 'NSWindow', 'NSViewController',
202 'NSViewAnimation', 'NSView', 'NSUserDefaultsController',
203 'NSTypesetter', 'NSTreeNode', 'NSTreeController', 'NSTrackingArea',
204 'NSToolbarItemGroup', 'NSToolbarItem', 'NSToolbar',
205 'NSTokenFieldCell', 'NSTokenField', 'NSTextView',
206 'NSTextTableBlock', 'NSTextTable', 'NSTextTab', 'NSTextStorage',
207 'NSTextList', 'NSTextFieldCell', 'NSTextField', 'NSTextContainer',
208 'NSTextBlock', 'NSTextAttachmentCell', 'NSTextAttachment', 'NSText',
209 'NSTabViewItem', 'NSTabView', 'NSTableView', 'NSTableHeaderView',
210 'NSTableHeaderCell', 'NSTableColumn', 'NSStepperCell', 'NSStepper',
211 'NSStatusItem', 'NSStatusBar', 'NSSplitView', 'NSSpellChecker',
212 'NSSpeechSynthesizer', 'NSSpeechRecognizer', 'NSSound',
213 'NSSliderCell', 'NSSlider', 'NSSimpleHorizontalTypesetter',
214 'NSShadow', 'NSSegmentedControl', 'NSSegmentedCell',
215 'NSSecureTextFieldCell', 'NSSecureTextField', 'NSSearchFieldCell',
216 'NSSearchField', 'NSScrollView', 'NSScroller', 'NSScreen',
217 'NSSavePanel', 'NSRulerView', 'NSRulerMarker', 'NSRuleEditor',
218 'NSResponder', 'NSQuickDrawView', 'NSProgressIndicator',
219 'NSPrintPanel', 'NSPrintOperation', 'NSPrintInfo', 'NSPrinter',
220 'NSPredicateEditorRowTemplate', 'NSPredicateEditor',
221 'NSPopUpButtonCell', 'NSPopUpButton', 'NSPICTImageRep',
222 'NSPersistentDocument', 'NSPDFImageRep', 'NSPathControl',
223 'NSPathComponentCell', 'NSPathCell', 'NSPasteboard',
224 'NSParagraphStyle', 'NSPanel', 'NSPageLayout', 'NSOutlineView',
225 'NSOpenPanel', 'NSOpenGLView', 'NSOpenGLPixelFormat',
226 'NSOpenGLPixelBuffer', 'NSOpenGLContext', 'NSObjectController',
227 'NSNibOutletConnector', 'NSNibControlConnector', 'NSNibConnector',
228 'NSNib', 'NSMutableParagraphStyle', 'NSMovieView', 'NSMovie',
229 'NSMenuView', 'NSMenuItemCell', 'NSMenuItem', 'NSMenu', 'NSMatrix',
230 'NSLevelIndicatorCell', 'NSLevelIndicator', 'NSLayoutManager',
231 'NSInputServer', 'NSInputManager', 'NSImageView', 'NSImageRep',
232 'NSImageCell', 'NSImage', 'NSHelpManager', 'NSGraphicsContext',
233 'NSGradient', 'NSGlyphInfo', 'NSGlyphGenerator', 'NSFormCell',
234 'NSForm', 'NSFontPanel', 'NSFontManager', 'NSFontDescriptor',
235 'NSFont', 'NSFileWrapper', 'NSEvent', 'NSEPSImageRep', 'NSDrawer',
236 'NSDocumentController', 'NSDocument', 'NSDockTile',
237 'NSDictionaryController', 'NSDatePickerCell', 'NSDatePicker',
238 'NSCustomImageRep', 'NSCursor', 'NSController', 'NSControl',
239 'NSComboBoxCell', 'NSComboBox', 'NSColorWell', 'NSColorSpace',
240 'NSColorPicker', 'NSColorPanel', 'NSColorList', 'NSColor',
241 'NSCollectionViewItem', 'NSCollectionView', 'NSClipView',
242 'NSCIImageRep', 'NSCell', 'NSCachedImageRep', 'NSButtonCell',
243 'NSButton', 'NSBrowserCell', 'NSBrowser', 'NSBox',
244 'NSBitmapImageRep', 'NSBezierPath', 'NSATSTypesetter',
245 'NSArrayController', 'NSApplication', 'NSAnimationContext',
246 'NSAnimation', 'NSAlert', 'NSActionCell'
250 'NSWindowScripting', 'NSValidatedUserInterfaceItem',
251 'NSUserInterfaceValidations', 'NSToolTipOwner',
252 'NSToolbarItemValidation', 'NSTextInput',
253 'NSTableDataSource', 'NSServicesRequests',
254 'NSPrintPanelAccessorizing', 'NSPlaceholders',
255 'NSPathControlDelegate', 'NSPathCellDelegate',
256 'NSOutlineViewDataSource', 'NSNibAwaking', 'NSMenuValidation',
257 'NSKeyValueBindingCreation', 'NSInputServiceProvider',
258 'NSInputServerMouseTracker', 'NSIgnoreMisspelledWords',
259 'NSGlyphStorage', 'NSFontPanelValidation', 'NSEditorRegistration',
260 'NSEditor', 'NSDraggingSource', 'NSDraggingInfo',
261 'NSDraggingDestination', 'NSDictionaryControllerKeyValuePair',
262 'NSComboBoxDataSource', 'NSComboBoxCellDataSource',
263 'NSColorPickingDefault', 'NSColorPickingCustom', 'NSChangeSpelling',
264 'NSAnimatablePropertyContainer', 'NSAccessibility'
268 'NSRelationshipDescription', 'NSPropertyMapping',
269 'NSPropertyDescription', 'NSPersistentStoreCoordinator',
270 'NSPersistentStore', 'NSMigrationManager', 'NSMappingModel',
271 'NSManagedObjectModel', 'NSManagedObjectID',
272 'NSManagedObjectContext', 'NSManagedObject',
273 'NSFetchRequestExpression', 'NSFetchRequest',
274 'NSFetchedPropertyDescription', 'NSEntityMigrationPolicy',
275 'NSEntityMapping', 'NSEntityDescription', 'NSAttributeDescription',
276 'NSAtomicStoreCacheNode', 'NSAtomicStore'
280 '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
282 'CASE_SENSITIVE' => array(
283 GESHI_COMMENTS
=> true,
294 // Define the colors for the groups listed above
297 1 => 'color: #a61390;', // Objective-C keywords
298 2 => 'color: #a61390;', // Macros and constants
299 3 => 'color: #a61390;', // C standard library functions
300 4 => 'color: #a61390;', // data types
301 5 => 'color: #400080;', // Foundation classes
302 6 => 'color: #2a6f76;', // Foundation protocols
303 7 => 'color: #400080;', // AppKit classes
304 8 => 'color: #2a6f76;', // AppKit protocols
305 9 => 'color: #400080;' // CoreData classes
308 1 => 'color: #6e371a;', // Preprocessor directives
309 2 => 'color: #11740a; font-style: italic;', // Normal C single-line comments
310 3 => 'color: #bf1d1a;', // Q-sign in front of Strings
311 'MULTI' => 'color: #11740a; font-style: italic;'
313 'ESCAPE_CHAR' => array(
314 0 => 'color: #2400d9;'
317 0 => 'color: #002200;'
320 0 => 'color: #bf1d1a;'
323 0 => 'color: #2400d9;'
328 0 => 'color: #002200;'
338 3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
340 5 => 'http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/{FNAME}_Class/',
341 6 => 'http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Protocols/{FNAME}_Protocol/',
342 7 => 'http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/{FNAME}_Class/',
343 8 => 'http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Protocols/{FNAME}_Protocol/',
344 9 => 'http://developer.apple.com/documentation/Cocoa/Reference/CoreDataFramework/Classes/{FNAME}_Class/'
347 'OBJECT_SPLITTERS' => array(
351 'STRICT_MODE_APPLIES' => GESHI_NEVER
,
352 'SCRIPT_DELIMITERS' => array(
354 'HIGHLIGHT_STRICT_BLOCK' => array(