mirror of
https://github.com/gnustep/libs-gsweb.git
synced 2025-02-23 19:51:13 +00:00
2002-10-12 Manuel Guesdon <mguesdon@orange-concept.com>
o added GSWTemplateParserType o removed GSWTemplateParser_DefaultParserClass o removed +setDefaultParserClassName: o changed +templateNamed:... o +templateParserTypeFromString: o added +defaultTemplateParserType git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@14738 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
36c25c5091
commit
852ab233fd
2 changed files with 96 additions and 40 deletions
|
@ -32,6 +32,18 @@
|
|||
#ifndef _GSWTemplateParser_h__
|
||||
#define _GSWTemplateParser_h__
|
||||
|
||||
|
||||
|
||||
//====================================================================
|
||||
typedef enum _GSWTemplateParserType
|
||||
{
|
||||
GSWTemplateParserType_Default,
|
||||
GSWTemplateParserType_XMLHTML,
|
||||
GSWTemplateParserType_XMLHTMLNoOmittedTags,
|
||||
GSWTemplateParserType_XML,
|
||||
GSWTemplateParserType_ANTLR
|
||||
} GSWTemplateParserType;
|
||||
|
||||
//====================================================================
|
||||
@interface GSWTemplateParser : NSObject
|
||||
{
|
||||
|
@ -51,7 +63,8 @@
|
|||
|
||||
+(GSWElement*)templateNamed:(NSString*)aName
|
||||
inFrameworkNamed:(NSString*)aFrameworkName
|
||||
withParserClassName:(NSString*)parserClassName
|
||||
withParserType:(GSWTemplateParserType)parserType
|
||||
parserClassName:(NSString*)parserClassName
|
||||
withString:(NSString*)HTMLString
|
||||
encoding:(NSStringEncoding)encoding
|
||||
fromPath:(NSString*)HTMLPath
|
||||
|
@ -60,16 +73,16 @@
|
|||
definitionPath:(NSString*)aDefinitionPath;
|
||||
+(GSWElement*)templateNamed:(NSString*)aName
|
||||
inFrameworkNamed:(NSString*)aFrameworkName
|
||||
withParserClass:(Class)parserClass
|
||||
withParserType:(GSWTemplateParserType)parserType
|
||||
parserClass:(Class)parserClass
|
||||
withString:(NSString*)HTMLString
|
||||
encoding:(NSStringEncoding)encoding
|
||||
fromPath:(NSString*)HTMLPath
|
||||
definitionsString:(NSString*)pageDefString
|
||||
languages:(NSArray*)someLanguages
|
||||
definitionPath:(NSString*)aDefinitionPath;
|
||||
+(void)setDefaultParserClassName:(NSString*)parserClassName;
|
||||
+(NSString*)defaultParserClassName;
|
||||
+(Class)defaultParserClass;
|
||||
+(GSWTemplateParserType)templateParserTypeFromString:(NSString*)string;
|
||||
+(GSWTemplateParserType)defaultTemplateParserType;
|
||||
-(id)initWithTemplateName:(NSString*)aName
|
||||
inFrameworkName:(NSString*)aFrameworkName
|
||||
withString:(NSString*)HTMLString
|
||||
|
|
|
@ -38,7 +38,6 @@ static char rcsId[] = "$Id$";
|
|||
#include "GSWPageDefParser.h"
|
||||
#include "GSWPageDefParserExt.h"
|
||||
|
||||
Class GSWTemplateParser_DefaultParserClass=Nil;
|
||||
//====================================================================
|
||||
@implementation GSWTemplateParser
|
||||
|
||||
|
@ -46,35 +45,35 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
|
|||
{
|
||||
if (self == [GSWTemplateParser class])
|
||||
{
|
||||
GSWTemplateParser_DefaultParserClass=NSClassFromString(GSWEB_DEFAULT_HTML_PARSER_CLASS_NAME);
|
||||
NSAssert(GSWTemplateParser_DefaultParserClass,@"Bad GSWEB_DEFAULT_HTML_PARSER_CLASS_NAME");
|
||||
};
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
+(void)setDefaultParserClassName:(NSString*)parserClassName
|
||||
+(GSWTemplateParserType)templateParserTypeFromString:(NSString*)string
|
||||
{
|
||||
NSAssert(parserClassName,@"No defaultParser Class Name");
|
||||
GSWTemplateParser_DefaultParserClass=NSClassFromString(parserClassName);
|
||||
NSAssert1(GSWTemplateParser_DefaultParserClass,@"No class named %@",parserClassName);
|
||||
};
|
||||
GSWTemplateParserType type=0;
|
||||
if ([string caseInsensitiveCompare:GSWOPTValue_DefaultTemplateParser_XMLHTML] == NSOrderedSame)
|
||||
type=GSWTemplateParserType_XMLHTML;
|
||||
else if ([string caseInsensitiveCompare:GSWOPTValue_DefaultTemplateParser_XMLHTMLNoOmittedTags] == NSOrderedSame)
|
||||
type=GSWTemplateParserType_XMLHTMLNoOmittedTags;
|
||||
else if ([string caseInsensitiveCompare:GSWOPTValue_DefaultTemplateParser_XML] == NSOrderedSame)
|
||||
type=GSWTemplateParserType_XML;
|
||||
else if ([string caseInsensitiveCompare:GSWOPTValue_DefaultTemplateParser_ANTLR] == NSOrderedSame)
|
||||
type=GSWTemplateParserType_ANTLR;
|
||||
else
|
||||
type=GSWTemplateParserType_XMLHTML;
|
||||
return type;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
+(Class)defaultParserClass
|
||||
+(GSWTemplateParserType)defaultTemplateParserType
|
||||
{
|
||||
return GSWTemplateParser_DefaultParserClass;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
+(NSString*)defaultParserClassName
|
||||
{
|
||||
return [NSString stringWithCString:[GSWTemplateParser_DefaultParserClass name]];
|
||||
};
|
||||
return [self templateParserTypeFromString:[GSWApplication defaultTemplateParser]];
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
+(GSWElement*)templateNamed:(NSString*)aName
|
||||
inFrameworkNamed:(NSString*)aFrameworkName
|
||||
withParserClassName:(NSString*)parserClassName
|
||||
withParserType:(GSWTemplateParserType)parserType
|
||||
parserClassName:(NSString*)parserClassName
|
||||
withString:(NSString*)HTMLString
|
||||
encoding:(NSStringEncoding)anEncoding
|
||||
fromPath:(NSString*)HTMLPath
|
||||
|
@ -93,7 +92,8 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
|
|||
};
|
||||
resultTemplate=[self templateNamed:aName
|
||||
inFrameworkNamed:aFrameworkName
|
||||
withParserClass:parserClass
|
||||
withParserType:(GSWTemplateParserType)parserType
|
||||
parserClass:parserClass
|
||||
withString:HTMLString
|
||||
encoding:anEncoding
|
||||
fromPath:HTMLPath
|
||||
|
@ -107,7 +107,8 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
|
|||
//--------------------------------------------------------------------
|
||||
+(GSWElement*)templateNamed:(NSString*)aName
|
||||
inFrameworkNamed:(NSString*)aFrameworkName
|
||||
withParserClass:(Class)parserClass
|
||||
withParserType:(GSWTemplateParserType)parserType
|
||||
parserClass:(Class)parserClass
|
||||
withString:(NSString*)HTMLString
|
||||
encoding:(NSStringEncoding)anEncoding
|
||||
fromPath:(NSString*)HTMLPath
|
||||
|
@ -117,24 +118,57 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
|
|||
{
|
||||
GSWElement* resultTemplate=nil;
|
||||
GSWTemplateParser* templateParser=nil;
|
||||
Class finalParserClass=Nil;
|
||||
LOGClassFnStart();
|
||||
NSDebugMLLog(@"GSWTemplateParser",@"template named:%@ frameworkName:%@ pageDefString=%@",aName,aFrameworkName,pageDefString);
|
||||
NSDebugMLLog(@"GSWTemplateParser",@"aDefinitionPath=%@",aDefinitionPath);
|
||||
if (!parserClass)
|
||||
NSDebugMLLog(@"GSWTemplateParser",@"parserClass:%@ parserType:%d",parserClass,parserType);
|
||||
/* if (!parserClass)
|
||||
{
|
||||
parserClass=[self defaultParserClass];
|
||||
NSAssert(parserClass,@"No defaultParser Class");
|
||||
};
|
||||
templateParser=[[[parserClass alloc] initWithTemplateName:aName
|
||||
inFrameworkName:aFrameworkName
|
||||
withString:HTMLString
|
||||
encoding:anEncoding
|
||||
fromPath:HTMLPath
|
||||
withDefinitionsString:pageDefString
|
||||
fromPath:aDefinitionPath
|
||||
forLanguages:someLanguages] autorelease];
|
||||
*/
|
||||
if (parserClass)
|
||||
finalParserClass=parserClass;
|
||||
else
|
||||
{
|
||||
if (parserType==GSWTemplateParserType_Default)
|
||||
parserType=[self defaultTemplateParserType];
|
||||
switch(parserType)
|
||||
{
|
||||
case GSWTemplateParserType_XMLHTML:
|
||||
case GSWTemplateParserType_XMLHTMLNoOmittedTags:
|
||||
finalParserClass=[GSWTemplateParserXMLHTML class];
|
||||
break;
|
||||
case GSWTemplateParserType_XML:
|
||||
finalParserClass=[GSWTemplateParserXML class];
|
||||
break;
|
||||
case GSWTemplateParserType_ANTLR:
|
||||
finalParserClass=[GSWTemplateParserANTLR class];
|
||||
break;
|
||||
default:
|
||||
finalParserClass=[GSWTemplateParserXMLHTML class];
|
||||
break;
|
||||
};
|
||||
};
|
||||
NSDebugMLLog(@"GSWTemplateParser",@"finalParserClass:%@ parserType:%d",finalParserClass,parserType);
|
||||
NSAssert2(finalParserClass,@"No Final Parser class: parserClass:%@ parserType:%d",
|
||||
parserClass,parserType);
|
||||
templateParser=[[[finalParserClass alloc] initWithTemplateName:aName
|
||||
inFrameworkName:aFrameworkName
|
||||
withString:HTMLString
|
||||
encoding:anEncoding
|
||||
fromPath:HTMLPath
|
||||
withDefinitionsString:pageDefString
|
||||
fromPath:aDefinitionPath
|
||||
forLanguages:someLanguages] autorelease];
|
||||
if (templateParser)
|
||||
resultTemplate=[templateParser template];
|
||||
{
|
||||
if (!parserClass && parserType==GSWTemplateParserType_XMLHTMLNoOmittedTags)
|
||||
[(GSWTemplateParserXMLHTML*)templateParser setNoOmittedTags:YES];
|
||||
resultTemplate=[templateParser template];
|
||||
};
|
||||
LOGClassFnStop();
|
||||
return resultTemplate;
|
||||
};
|
||||
|
@ -422,7 +456,11 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
|
|||
NSString* path=nil;
|
||||
int iLanguage=0;
|
||||
int iName=0;
|
||||
BOOL isPathAlreadyProcessed=NO;
|
||||
|
||||
LOGObjectFnStart();
|
||||
|
||||
|
||||
NSDebugMLLog(@"gswcomponents",@"anIncludeName=%@",anIncludeName);
|
||||
resourceManager=[GSWApp resourceManager];
|
||||
localDefinitionName=[anIncludeName lastPathComponent];
|
||||
|
@ -463,6 +501,7 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
|
|||
{
|
||||
NSDebugMLLog(@"gswcomponents",@"path=%@ already processed",path);
|
||||
path=nil;
|
||||
isPathAlreadyProcessed=YES;
|
||||
if (language)
|
||||
iLanguage=[_languages count]-1;//For directly go to no language search so we don't include (for exemple) an English file for a french file
|
||||
};
|
||||
|
@ -480,6 +519,7 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
|
|||
{
|
||||
NSDebugMLLog(@"gswcomponents",@"path=%@ already processed",path);
|
||||
path=nil;
|
||||
isPathAlreadyProcessed=YES;
|
||||
if (language)
|
||||
iLanguage=[_languages count]-1;//For directly go to no language search so we don't include (for exemple) an English file for a french file
|
||||
};
|
||||
|
@ -532,7 +572,12 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
|
|||
localFrameworkName,
|
||||
processedFiles);
|
||||
};
|
||||
NSDebugMLLog(@"GSWTemplateParser",@"localDefinitions:%@\n",localDefinitions);
|
||||
if (localDefinitions)
|
||||
returnedLocalDefinitions=[NSDictionary dictionaryWithDictionary:localDefinitions];
|
||||
}
|
||||
else if (isPathAlreadyProcessed)
|
||||
returnedLocalDefinitions=[NSDictionary dictionary];//return an empty dictionary
|
||||
else
|
||||
{
|
||||
ExceptionRaise(@"GSWTemplateParser",
|
||||
|
@ -542,9 +587,7 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
|
|||
localFrameworkName,
|
||||
processedFiles);
|
||||
};
|
||||
NSDebugMLLog(@"GSWTemplateParser",@"localDefinitions:%@\n",localDefinitions);
|
||||
if (localDefinitions)
|
||||
returnedLocalDefinitions=[NSDictionary dictionaryWithDictionary:localDefinitions];
|
||||
NSDebugMLLog(@"GSWTemplateParser",@"returnedLocalDefinitions:%@\n",returnedLocalDefinitions);
|
||||
LOGObjectFnStop();
|
||||
return returnedLocalDefinitions;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue