/*
Copyright (C) 2004 eXtrapola Srl
This file is part of SOPE.
SOPE is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
License along with SOPE; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
#error does not compile, just for reference!
#include "StructuredText_XHTML.h"
#include "common.h"
@implementation StructuredTextRenderingDelegate_XHTML
- (NSString *)insertText:(NSString *)_txt inContext:(NSDictionary *)_ctx {
return [NSString stringWithFormat:@"
%@
", _txt];
}
- (NSString *)insertItalics:(NSString *)_txt inContext:(NSDictionary *)_ctx {
return [NSString stringWithFormat:
@"%@", _txt];
}
- (NSString *)insertUnderline:(NSString *)_txt inContext:(NSDictionary *)_ctx {
return [NSString stringWithFormat:
@"%@", _txt];
}
- (NSString *)insertBold:(NSString *)_txt inContext:(NSDictionary *)_ctx {
return [NSString stringWithFormat:@"%@", _txt];
}
- (NSString *)insertPreformatted:(NSString *)_txt
inContext:(NSDictionary *)_ctx
{
return [NSString stringWithFormat:
@"%@", _txt];
}
- (NSString *)insertLink:(NSString *)_txt
withUrl:(NSString *)anUrl target:(NSString *)aTarget
inContext:(NSDictionary *)_ctx
{
NSString *result;
if ([aTarget length] > 0) {
result = [NSString stringWithFormat:
@"%@",
anUrl, aTarget, _txt];
}
else {
result = [NSString stringWithFormat:@"%@", anUrl, _txt];
}
return result;
}
- (NSString *)insertEmail:(NSString *)_txt withAddress:(NSString *)anAddress
inContext:(NSDictionary *)_ctx
{
return [NSString stringWithFormat:@"%@", anAddress, _txt];
}
- (NSString *)insertImage:(NSString *)_txt withUrl:(NSString *)anUrl
inContext:(NSDictionary *)_ctx
{
return [NSString stringWithFormat:@"
",
anUrl, _txt];
}
- (NSString *)insertExtrapolaLink:(NSString *)_txt
parameters:(NSDictionary *)someParameters withTarget:(NSString *)aTarget
inContext:(NSDictionary *)_ctx
{
NSString *result;
NSString *targetString;
if ([aTarget length] > 0)
targetString = [NSString stringWithFormat:@" target = \"%@\"", aTarget];
else
targetString = @"";
result = [NSString stringWithFormat:
@"%@",
[someParameters objectForKey:@"page"],
targetString, _txt];
return result;
}
- (NSString *)insertPreprocessedTextForKey:(NSString *)aKey
inContext:(NSDictionary *)_ctx
{
return [_ctx objectForKey:aKey];
}
@end /* StructuredTextRenderingDelegate_XHTML */
@implementation NSArray (StructuredText_XHTML)
- (NSString *)toXhtmlInContext:(NSDictionary *)_ctx {
NSMutableString *result;
int i,c;
c = [self count];
result = [NSMutableString stringWithCapacity:(c * 16)];
for (i = 0; i < c; i++) {
id currentObject;
currentObject = [self objectAtIndex:i];
[result appendString:[currentObject toXhtmlInContext:_ctx]];
}
return result;
}
@end
@implementation StructuredText(StructuredText_XHTML)
- (NSString *)toXhtmlInContext:(NSDictionary *)_ctx {
return [[self document] toXhtmlInContext:_ctx];
}
@end /* StructuredText(StructuredText_XHTML) */
@implementation StructuredTextDocument(StructuredText_XHTML)
- (NSString *)toXhtmlInContext:(NSDictionary *)_ctx {
return [[self bodyElements] toXhtmlInContext:_ctx];
}
@end /* StructuredTextDocument(StructuredText_XHTML) */
@implementation StructuredTextBodyElement(StructuredText_XHTML)
- (NSString *)toXhtmlInContext:(NSDictionary *)_ctx {
return [[self elements] toXhtmlInContext:_ctx];
}
@end /* StructuredTextBodyElement(StructuredText_XHTML) */
@implementation StructuredTextHeader(StructuredText_XHTML)
- (NSString *)toXhtmlInContext:(NSDictionary *)_ctx {
NSMutableString *ms;
id delegate;
delegate = [StructuredTextRenderingDelegate_XHTML delegate] ;
ms = [NSMutableString stringWithCapacity:64];
[ms appendFormat:@"", [self level]];
[ms appendString:[self textParsedWithDelegate:delegate inContext:_ctx]];
[ms appendFormat:@"", [self level]];
[ms appendString:[super toXhtmlInContext:_ctx]];
return ms;
}
@end /* StructuredTextHeader(StructuredText_XHTML) */
@implementation StructuredTextParagraph(StructuredText_XHTML)
- (NSString *)toXhtmlInContext:(NSDictionary *)_ctx {
id delegate;
delegate = [StructuredTextRenderingDelegate_XHTML delegate];
return [self textParsedWithDelegate:delegate inContext:_ctx];
}
@end /* StructuredTextParagraph (StructuredText_XHTML) */
@implementation StructuredTextList(StructuredText_XHTML)
- (NSString *)toXhtmlInContext:(NSDictionary *)_ctx {
NSString *result;
NSString *elemText;
elemText = [[self elements] toXhtmlInContext:_ctx];
switch ([self typology]) {
case StructuredTextList_BULLET: {
result = [NSString stringWithFormat:@"", elemText];
break;
}
case StructuredTextList_ENUMERATED: {
result = [NSString stringWithFormat:@"%@
", elemText];
break;
}
case StructuredTextList_DEFINITION: {
result = [NSString stringWithFormat:@"%@
", elemText];
break;
}
default: {
result = @"";
break;
}
}
return result;
}
@end /* StructuredTextList(StructuredText_XHTML) */
@implementation StructuredTextListItem(StructuredText_XHTML)
- (NSString *)toXhtmlInContext:(NSDictionary *)_ctx {
NSString *result;
NSString *textParsed;
NSString *elemText;
elemText = [[self elements] toXhtmlInContext:_ctx];
textParsed = [self textParsedWithDelegate:
[StructuredTextRenderingDelegate_XHTML delegate]
inContext:_ctx];
switch ([[self list] typology]) {
case StructuredTextList_BULLET: {
result = [NSString stringWithFormat:@"%@%@",
textParsed, elemText];
break;
}
case StructuredTextList_ENUMERATED: {
result = [NSString stringWithFormat:@"%@%@",
textParsed, elemText];
break;
}
case StructuredTextList_DEFINITION: {
result = [NSString stringWithFormat:@"%@%@",
[self titleParsedWithDelegate:
[StructuredTextRenderingDelegate_XHTML delegate]
inContext:_ctx],
textParsed];
break;
}
default: {
result = @"";
break;
}
}
return result;
}
@end /* StructuredTextListItem(StructuredText_XHTML) */
@implementation StructuredTextLiteralBlock(StructuredText_XHTML)
- (NSString *)toXhtmlInContext:(NSDictionary *)_ctx {
return [NSString stringWithFormat:
@"%@
", [self text]];
}
@end /* StructuredTextLiteralBlock(StructuredText_XHTML) */