X-Git-Url: http://git.ithinksw.org/ITFoundation.git/blobdiff_plain/a562b4a9e91163116b73f2df7d6589d812d2278e..3d646c75403df6d5324833a701723a765555177f:/ITOSAScript.m diff --git a/ITOSAScript.m b/ITOSAScript.m deleted file mode 100755 index 6f1a27f..0000000 --- a/ITOSAScript.m +++ /dev/null @@ -1,126 +0,0 @@ -/* - * ITFoundation - * ITOSAScript - * An extended NSAppleScript that allows any OSA language. - * - * Original Author : Kent Sutherland - * Responsibility : Kent Sutherland - * Responsibility : Joseph Spiros - * - * Copyright (c) 2002 - 2004 iThink Software. - * All Rights Reserved - * - */ - -/* -Script Subtypes: - kAppleScriptSubtype - AppleScript (Default) - 'Jscr' - JavaScript (if installed) -*/ - -#import "ITOSAScript.h" -#import "ITOSAComponent.h" - -#warning To do - Error Dictionaries - -@implementation ITOSAScript - -- (id)init -{ - return nil; // initWithSource: is the designated initializer for this class -} - -- (id)initWithContentsOfFile:(NSString *)path -{ - return [self initWithSource:[[[NSString alloc] initWithContentsOfFile:path] autorelease]]; -} - -- (id)initWithSource:(NSString *)source -{ - if ( (self = [super init]) ) { - _source = [source copy]; - _scriptID = kOSANullScript; - } - return self; -} - -- (void)dealloc -{ - if (_scriptID != kOSANullScript) { - OSADispose([_component componentInstance], _scriptID); - } - - [_source release]; - [super dealloc]; -} - -- (NSString *)source -{ - return _source; -} - -- (ITOSAComponent *)component -{ - return _component; -} - -- (void)setComponent:(ITOSAComponent *)newComponent -{ - _component = newComponent; -} - -- (BOOL)compileAndReturnError:(NSDictionary **)errorInfo -{ - if ([_component componentInstance] == nil) { - //Set the error dictionary - return NO; - } - - AEDesc moof; - AECreateDesc(typeChar, [_source cString], [_source cStringLength], &moof); - if (OSACompile([_component componentInstance], &moof, kOSAModeNull, &_scriptID) != 0) { - NSLog(@"Compile error!"); - return NO; - } - return YES; -} - -- (BOOL)isCompiled -{ - return (_scriptID != kOSANullScript); -} - -- (NSAppleEventDescriptor *)executeAndReturnError:(NSDictionary **)errorInfo -{ - if ([_component componentInstance] == nil) { - //Set the error dictionary - return nil; - } - - NSAppleEventDescriptor *cocoaDesc; - - AEDesc scriptDesc, resultDesc; - OSAID resultID = kOSANullScript; - - //If not compiled, compile it - if (![self isCompiled]) { - if (![self compileAndReturnError:nil]) { - //Set the error info dictionary - return nil; - } - } - - OSAExecute([_component componentInstance], _scriptID, kOSANullScript, kOSANullMode, &resultID); - - OSACoerceToDesc([_component componentInstance], resultID, typeWildCard, kOSAModeNull, &resultDesc); // Using this instead of OSADisplay, as we don't care about human readability, but rather, the integrity of the data. - - cocoaDesc = [[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&resultDesc]; - - AEDisposeDesc(&scriptDesc); - - OSADispose([_component componentInstance], resultID); - - return [cocoaDesc autorelease]; -} - -@end