Selaa lähdekoodia

Transition from libircclient color conversion to native

master
Said Achmiz 4 vuotta sitten
vanhempi
commit
d92bed797d

+ 8
- 8
IRCClient.xcodeproj/project.pbxproj Näytä tiedosto

@@ -8,6 +8,8 @@

/* Begin PBXBuildFile section */
8657E6E21C2B55B900BD4E50 /* IRC_Numerics.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8657E6E11C2B55B900BD4E50 /* IRC_Numerics.plist */; };
86627E21276648E400AEFEB7 /* NSData+SA_NSDataExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 86627E1F276648E400AEFEB7 /* NSData+SA_NSDataExtensions.h */; };
86627E22276648E400AEFEB7 /* NSData+SA_NSDataExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 86627E20276648E400AEFEB7 /* NSData+SA_NSDataExtensions.m */; };
86769D6D1C94DC5300B86A72 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 86769D5B1C94DC5300B86A72 /* config.h */; };
86769D6E1C94DC5300B86A72 /* dcc.h in Headers */ = {isa = PBXBuildFile; fileRef = 86769D5C1C94DC5300B86A72 /* dcc.h */; };
86769D6F1C94DC5300B86A72 /* libirc_errors.h in Headers */ = {isa = PBXBuildFile; fileRef = 86769D5D1C94DC5300B86A72 /* libirc_errors.h */; };
@@ -24,8 +26,6 @@
86B0D3ED22C5FF1300E60877 /* NSArray+SA_NSArrayExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 86B0D3EB22C5FF1300E60877 /* NSArray+SA_NSArrayExtensions.m */; };
86BAE5A1232ABFD200936147 /* NSIndexSet+SA_NSIndexSetExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 86BAE59F232ABFD200936147 /* NSIndexSet+SA_NSIndexSetExtensions.m */; };
86BAE5A2232ABFD200936147 /* NSIndexSet+SA_NSIndexSetExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BAE5A0232ABFD200936147 /* NSIndexSet+SA_NSIndexSetExtensions.h */; };
86D02CD6275B79FB00876E93 /* NSData+SA_NSDataExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D02CD4275B79FB00876E93 /* NSData+SA_NSDataExtensions.h */; };
86D02CD7275B79FB00876E93 /* NSData+SA_NSDataExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 86D02CD5275B79FB00876E93 /* NSData+SA_NSDataExtensions.m */; };
86D02CE0275B9E6B00876E93 /* NSString+SA_NSStringExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D02CDE275B9E6B00876E93 /* NSString+SA_NSStringExtensions.h */; };
86D02CE1275B9E6B00876E93 /* NSString+SA_NSStringExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 86D02CDF275B9E6B00876E93 /* NSString+SA_NSStringExtensions.m */; };
86F2EFF81C21F81900B033A4 /* IRCClientChannel_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 86F2EFF11C21F81900B033A4 /* IRCClientChannel_Private.h */; };
@@ -39,6 +39,8 @@

/* Begin PBXFileReference section */
8657E6E11C2B55B900BD4E50 /* IRC_Numerics.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = IRC_Numerics.plist; sourceTree = "<group>"; };
86627E1F276648E400AEFEB7 /* NSData+SA_NSDataExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSData+SA_NSDataExtensions.h"; path = "../../SA_NSDataExtensions/NSData+SA_NSDataExtensions.h"; sourceTree = "<group>"; };
86627E20276648E400AEFEB7 /* NSData+SA_NSDataExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSData+SA_NSDataExtensions.m"; path = "../../SA_NSDataExtensions/NSData+SA_NSDataExtensions.m"; sourceTree = "<group>"; };
86769D5B1C94DC5300B86A72 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
86769D5C1C94DC5300B86A72 /* dcc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dcc.h; sourceTree = "<group>"; };
86769D5D1C94DC5300B86A72 /* libirc_errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = libirc_errors.h; sourceTree = "<group>"; };
@@ -55,8 +57,6 @@
86B0D3EB22C5FF1300E60877 /* NSArray+SA_NSArrayExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = "NSArray+SA_NSArrayExtensions.m"; path = "../../OS X Projects/SA_IRCBotServer/NSArray+SA_NSArrayExtensions/NSArray+SA_NSArrayExtensions.m"; sourceTree = "<group>"; };
86BAE59F232ABFD200936147 /* NSIndexSet+SA_NSIndexSetExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSIndexSet+SA_NSIndexSetExtensions.m"; path = "../../OS X Projects/XGopher/NSIndexSet+SA_NSIndexSetExtensions/NSIndexSet+SA_NSIndexSetExtensions.m"; sourceTree = "<group>"; };
86BAE5A0232ABFD200936147 /* NSIndexSet+SA_NSIndexSetExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSIndexSet+SA_NSIndexSetExtensions.h"; path = "../../OS X Projects/XGopher/NSIndexSet+SA_NSIndexSetExtensions/NSIndexSet+SA_NSIndexSetExtensions.h"; sourceTree = "<group>"; };
86D02CD4275B79FB00876E93 /* NSData+SA_NSDataExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSData+SA_NSDataExtensions.h"; path = "../../SA_NSDataExtensions/NSData+SA_NSDataExtensions.h"; sourceTree = "<group>"; };
86D02CD5275B79FB00876E93 /* NSData+SA_NSDataExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSData+SA_NSDataExtensions.m"; path = "../../SA_NSDataExtensions/NSData+SA_NSDataExtensions.m"; sourceTree = "<group>"; };
86D02CDE275B9E6B00876E93 /* NSString+SA_NSStringExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSString+SA_NSStringExtensions.h"; path = "../SA_NSStringExtensions/NSString+SA_NSStringExtensions.h"; sourceTree = "<group>"; };
86D02CDF275B9E6B00876E93 /* NSString+SA_NSStringExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSString+SA_NSStringExtensions.m"; path = "../SA_NSStringExtensions/NSString+SA_NSStringExtensions.m"; sourceTree = "<group>"; };
86F2EFE61C21F73600B033A4 /* IRCClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IRCClient.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -84,8 +84,8 @@
866B9D4F1C97530E00F460BB /* NSData+SA_NSDataExtensions */ = {
isa = PBXGroup;
children = (
86D02CD4275B79FB00876E93 /* NSData+SA_NSDataExtensions.h */,
86D02CD5275B79FB00876E93 /* NSData+SA_NSDataExtensions.m */,
86627E1F276648E400AEFEB7 /* NSData+SA_NSDataExtensions.h */,
86627E20276648E400AEFEB7 /* NSData+SA_NSDataExtensions.m */,
);
name = "NSData+SA_NSDataExtensions";
path = SA_NSDataExtensions;
@@ -203,6 +203,7 @@
86769D751C94DC5300B86A72 /* session.h in Headers */,
86769D6E1C94DC5300B86A72 /* dcc.h in Headers */,
86B0D3E922C5A3D700E60877 /* NSRange-Conventional.h in Headers */,
86627E21276648E400AEFEB7 /* NSData+SA_NSDataExtensions.h in Headers */,
86F2EFFB1C21F81900B033A4 /* IRCClientChannelDelegate.h in Headers */,
86769D721C94DC5300B86A72 /* libirc_rfcnumeric.h in Headers */,
86D02CE0275B9E6B00876E93 /* NSString+SA_NSStringExtensions.h in Headers */,
@@ -214,7 +215,6 @@
86BAE5A2232ABFD200936147 /* NSIndexSet+SA_NSIndexSetExtensions.h in Headers */,
86B0D3EC22C5FF1300E60877 /* NSArray+SA_NSArrayExtensions.h in Headers */,
86769D6F1C94DC5300B86A72 /* libirc_errors.h in Headers */,
86D02CD6275B79FB00876E93 /* NSData+SA_NSDataExtensions.h in Headers */,
86769D711C94DC5300B86A72 /* libirc_options.h in Headers */,
86F2EFF81C21F81900B033A4 /* IRCClientChannel_Private.h in Headers */,
);
@@ -291,9 +291,9 @@
86BAE5A1232ABFD200936147 /* NSIndexSet+SA_NSIndexSetExtensions.m in Sources */,
86F2EFFD1C21F81900B033A4 /* IRCClientSession.m in Sources */,
86B0D3ED22C5FF1300E60877 /* NSArray+SA_NSArrayExtensions.m in Sources */,
86D02CD7275B79FB00876E93 /* NSData+SA_NSDataExtensions.m in Sources */,
86D02CE1275B9E6B00876E93 /* NSString+SA_NSStringExtensions.m in Sources */,
86F2EFFA1C21F81900B033A4 /* IRCClientChannel.m in Sources */,
86627E22276648E400AEFEB7 /* NSData+SA_NSDataExtensions.m in Sources */,
86769D791C94DC5300B86A72 /* libircclient.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;

+ 4
- 2
IRCClient/IRCClientChannel.m Näytä tiedosto

@@ -138,7 +138,8 @@
return irc_send_raw(_irc_session,
"PRIVMSG %s :%s",
_name.terminatedCString,
irc_color_convert_to_mirc(message.terminatedCString));
// irc_color_convert_to_mirc(message.terminatedCString));
[self.session colorConvertToMIRC:message].terminatedCString);
}

-(int) action:(NSData *)action {
@@ -148,7 +149,8 @@
return irc_send_raw(_irc_session,
"PRIVMSG %s :\x01" "ACTION %s\x01",
_name.terminatedCString,
irc_color_convert_to_mirc(action.terminatedCString));
// irc_color_convert_to_mirc(action.terminatedCString));
[self.session colorConvertToMIRC:action].terminatedCString);
}

-(int) notice:(NSData *)notice {

+ 1
- 0
IRCClient/IRCClientChannel_Private.h Näytä tiedosto

@@ -8,6 +8,7 @@
// See LICENSE and README.md for more info.

#import "IRCClientChannel.h"
#import "IRCClientSession.h"
#include "libircclient.h"

/********************************************/

+ 12
- 0
IRCClient/IRCClientSession.h Näytä tiedosto

@@ -168,6 +168,18 @@
*/
-(void) run;

/** Convert libircclient markup in a message to mIRC format codes.
*/
-(NSData *) colorConvertToMIRC:(NSData *)message;

/** Convert mIRC format codes in a message to libircclient markup.
*/
-(NSData *) colorConvertFromMIRC:(NSData *)message;

/** Remove mIRC format codes from a message.
*/
-(NSData *) colorStripFromMIRC:(NSData *)message;

/**************************/
#pragma mark - IRC commands
/**************************/

+ 82
- 11
IRCClient/IRCClientSession.m Näytä tiedosto

@@ -21,6 +21,7 @@
#import "NSData+SA_NSDataExtensions.h"
#import "NSString+SA_NSStringExtensions.h"
#import "NSRange-Conventional.h"
#import "NSIndexSet+SA_NSIndexSetExtensions.h"

/********************************************/
#pragma mark - Callback function declarations
@@ -190,6 +191,73 @@ static NSDictionary* ircNumericCodeList;
nickUserHost.length - (rangeOfUserHostSeparator.location + 1))]);
}

// TODO: implement color support
-(NSData *) colorConvertToMIRC:(NSData *)message {
NSMutableData *workingCopy = [message mutableCopy];

[@[ @[ @"[B]", @"[/B]", [NSData dataFromCString:"\x02"] ],
@[ @"[I]", @"[/I]", [NSData dataFromCString:"\x16"] ],
@[ @"[U]", @"[/U]", [NSData dataFromCString:"\x1F"] ] ] forEach:^(NSArray *tags) {
NSData *openingTag = [tags[0] dataUsingEncoding:self.encoding];
NSData *closingTag = [tags[1] dataUsingEncoding:self.encoding];
NSData *mircCode = tags[2];

NSRange rangeOfOpeningTag, rangeOfClosingTag;
do {
// Find next opening tag.
rangeOfOpeningTag = [workingCopy rangeOfData:openingTag
options:(NSDataSearchOptions) 0
range:workingCopy.fullRange];
if (rangeOfOpeningTag.location != NSNotFound) {
// Replace opening tag.
[workingCopy replaceBytesInRange:rangeOfOpeningTag
withBytes:mircCode.bytes
length:mircCode.length];

// Find next closing tag.
rangeOfClosingTag = [workingCopy rangeOfData:closingTag
options:(NSDataSearchOptions) 0
range:[workingCopy rangeAfterRange:NSMakeRange(rangeOfOpeningTag.location,
mircCode.length)]];
if (rangeOfClosingTag.location != NSNotFound) {
// Replace closing tag, if any.
[workingCopy replaceBytesInRange:rangeOfClosingTag
withBytes:mircCode.bytes
length:mircCode.length];
} else {
// Otherwise, end the string with a closing tag.
[workingCopy appendBytes:mircCode.bytes
length:mircCode.length];
}
}
} while (rangeOfOpeningTag.location != NSNotFound);

// Clean up stray closing tags.
do {
rangeOfClosingTag = [workingCopy rangeOfData:closingTag
options:(NSDataSearchOptions) 0
range:workingCopy.fullRange];
if (rangeOfClosingTag.location != NSNotFound) {
[workingCopy replaceBytesInRange:rangeOfClosingTag
withBytes:mircCode.bytes
length:mircCode.length];
}
} while (rangeOfClosingTag.location != NSNotFound);
}];

return [workingCopy copy];
}

-(NSData *) colorConvertFromMIRC:(NSData *)message {
// TODO: Implement this for real!
return [self colorStripFromMIRC:message];
}

// TODO: implement this!
-(NSData *) colorStripFromMIRC:(NSData *)message {
return message;
}

/*************************************/
#pragma mark - Class methods (private)
/*************************************/
@@ -347,7 +415,8 @@ static NSDictionary* ircNumericCodeList;
return irc_send_raw(_irc_session,
"PRIVMSG %s :%s",
target.terminatedCString,
irc_color_convert_to_mirc(message.terminatedCString));
// irc_color_convert_to_mirc(message.terminatedCString));
[self colorConvertToMIRC:message].terminatedCString);
}

-(int) action:(NSData *)action
@@ -359,7 +428,8 @@ static NSDictionary* ircNumericCodeList;
return irc_send_raw(_irc_session,
"PRIVMSG %s :\x01" "ACTION %s\x01",
target.terminatedCString,
irc_color_convert_to_mirc(action.terminatedCString));
// irc_color_convert_to_mirc(action.terminatedCString));
[self colorConvertToMIRC:action].terminatedCString);
}

-(int) notice:(NSData *)notice
@@ -425,17 +495,18 @@ static NSDictionary* ircNumericCodeList;
|| !strcmp(event, "SERVNOTICE")
|| !strcmp(event, "CTCP_ACTION")
)) {
char* (*process_color_codes) (const char *) = (whatAboutColors == SA_IRC_ParseColorCodes
? irc_color_convert_from_mirc
: irc_color_strip_from_mirc);

params_array = [NSMutableArray arrayWithCapacity:count];
for (NSUInteger i = 0; i < count; i++) {
[params_array addObject:[NSData dataFromCString:(*process_color_codes)(params[i])]];
}
[NSIndexSet from:0
for:count
do:^(NSUInteger idx) {
NSData *param = (whatAboutColors == SA_IRC_ParseColorCodes
? [self colorConvertFromMIRC:[NSData dataFromCString:params[idx]]]
: [self colorStripFromMIRC:[NSData dataFromCString:params[idx]]]);
[params_array addObject:param];
}];
} else {
params_array = (NSMutableArray *) [NSArray arrayOfCStringData:params
count:count];
params_array = [NSMutableArray arrayOfCStringData:params
count:count];
}

NSData *origin_data = origin ? [NSData dataFromCString:origin] : nil;

+ 2
- 2
libircclient/src/colors.c Näytä tiedosto

@@ -15,11 +15,11 @@
#include <ctype.h>

#define LIBIRC_COLORPARSER_BOLD (1<<1)
#define LIBIRC_COLORPARSER_UNDERLINE (1<<2)
#define LIBIRC_COLORPARSER_UNDERLINE (1<<2)
#define LIBIRC_COLORPARSER_REVERSE (1<<3)
#define LIBIRC_COLORPARSER_COLOR (1<<4)

#define LIBIRC_COLORPARSER_MAXCOLORS 15
#define LIBIRC_COLORPARSER_MAXCOLORS 15


#define max(a,b) \

Loading…
Peruuta
Tallenna