Files
cappuccino/Tools/NativeHost/WebScripObject+Objective-J.m
T
2010-04-25 22:33:31 -07:00

47 lines
1.5 KiB
Objective-C

//
// WebScripObject+Objective-J.m
// NativeHost
//
// Created by Francisco Tolmasky on 9/1/09.
// Copyright 2009 280 North, Inc.. All rights reserved.
//
#import "WebScripObject+Objective-J.h"
@implementation WebScriptObject (ObjectiveJ)
- (id)evaluateObjectiveJ:(NSString *)aString
{
return [self evaluateWebScript:[NSString stringWithFormat:@"(ObjectiveJ.eval(decodeURIComponent(\"%@\")))", [aString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], nil]];
}
- (NSString *)evaluateObjectiveJReturningString:(NSString *)aString
{
return [self evaluateWebScript:[NSString stringWithFormat:@"String(ObjectiveJ.eval(decodeURIComponent(\"%@\")))", [aString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], nil]];
}
- (id)bridgeSelector:(SEL)aSelector
{
return [self bridgeSelector:aSelector withObjects:nil];
}
- (id)bridgeSelector:(SEL)aSelector withObject:(id)anObject
{
return [self bridgeSelector:aSelector withObjects:[NSArray arrayWithObject:anObject]];
}
- (id)bridgeSelector:(SEL)aSelector withObjects:(NSArray *)objects
{
[self evaluateWebScript:@"objj_object.prototype.__objj_msgSend = function() { return objj_msgSend.apply(null, arguments); }"];
NSArray * arguments = [NSArray arrayWithObjects:self, NSStringFromSelector(aSelector), nil];
if (objects)
arguments = [arguments arrayByAddingObjectsFromArray:objects];
return [self callWebScriptMethod:@"__objj_msgSend" withArguments:arguments];
}
@end