rendered paste body//
// ALMarkdownPlugin.m
// AdiumMarkdown
//
// Created by Ryan Govostes on 5/14/07.
// Copyright 2007 Alacatia Labs. All rights reserved.
//
#import "ALMarkdownPlugin.h"
@implementation ALMarkdownPlugin
- (void)installPlugin {
// Register an incoming content filter
[[adium contentController] registerContentFilter:self
ofType:AIFilterMessageDisplay
direction:AIFilterIncoming];
// Register an outgoing content filter
[[adium contentController] registerContentFilter:self
ofType:AIFilterMessageDisplay
direction:AIFilterOutgoing];
}
- (void)uninstallPlugin {
// This unregisters all content filters associated with self
[[adium contentController] unregisterContentFilter:self];
}
#pragma mark Content Filtering
- (NSAttributedString *)filterAttributedString:(NSAttributedString *)inAttributedString context:(id)context {
NSMutableAttributedString *outAttributedString;
outAttributedString = [[NSMutableAttributedString alloc] initWithAttributedString:inAttributedString];
// Convert the message to HTML and write it out to a file
NSString *htmlified = [AIHTMLDecoder encodeHTML:inAttributedString
headers:NO
fontTags:NO /* These settings are pretty arbitrary, experiment */
includingColorTags:NO
closeFontTags:NO
styleTags:YES
closeStyleTagsOnFontChange:YES
encodeNonASCII:YES
encodeSpaces:NO
imagesPath:@""
attachmentsAsText:NO
onlyIncludeOutgoingImages:NO
simpleTagsOnly:YES
bodyBackground:NO];
NSLog(@"In: %@", htmlified);
[htmlified writeToFile:@"/tmp/AIMsg.text" /* FIXME: This probably shouldn't be hard-coded */
atomically:NO
encoding:NSUTF8StringEncoding
error:NULL];
NSLog(@"Markdown path: %@", [NSString stringWithFormat:@"%@/Markdown.pl", [[NSBundle bundleForClass:@"ALMarkdownPlugin"] resourcePath]]);
// Call upon Markdown to process the text
NSMutableArray *args = [NSMutableArray array];
[args addObject:[NSString stringWithFormat:@"%@/Markdown.pl", [[NSBundle bundleForClass:@"ALMarkdownPlugin"] resourcePath]]];
[args addObject:@"-html4tags"];
[args addObject:@"/tmp/AIMsg.text"];
NSTask *aTask = [[NSTask alloc] init];
[aTask setLaunchPath:@"/usr/bin/perl"];
[aTask setArguments:args];
NSPipe *ceciNestPasUnePipe = [NSPipe pipe];
[aTask setStandardOutput:ceciNestPasUnePipe];
NSLog(@"Starting Markdown...");
[aTask launch];
// Return the HTML again
NSString *outHTML = [[NSString alloc] initWithData:[[ceciNestPasUnePipe fileHandleForReading] readDataToEndOfFile]
encoding:NSUTF8StringEncoding];
NSLog(@"Out: %@", outHTML);
NSLog(@"Markdown finished.");
[aTask release];
return outHTML;
}
- (float)filterPriority {
return DEFAULT_FILTER_PRIORITY;
}
#pragma mark About This Plugin
- (NSString *)pluginAuthor {
return @"Ryan Govostes";
}
- (NSString *)pluginVersion {
return @"1.0";
}
- (NSString *)pluginDescription {
return @"Interprets Markdown syntax in outgoing and incoming messages.";
}
- (NSString *)pluginURL {
// TODO: Replace this with a page about the plugin
return @"http://daringfireball.net/projects/markdown/";
}
@end