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:
mguesdon 2002-10-12 11:27:50 +00:00
parent 36c25c5091
commit 852ab233fd
2 changed files with 96 additions and 40 deletions

View file

@ -32,6 +32,18 @@
#ifndef _GSWTemplateParser_h__ #ifndef _GSWTemplateParser_h__
#define _GSWTemplateParser_h__ #define _GSWTemplateParser_h__
//====================================================================
typedef enum _GSWTemplateParserType
{
GSWTemplateParserType_Default,
GSWTemplateParserType_XMLHTML,
GSWTemplateParserType_XMLHTMLNoOmittedTags,
GSWTemplateParserType_XML,
GSWTemplateParserType_ANTLR
} GSWTemplateParserType;
//==================================================================== //====================================================================
@interface GSWTemplateParser : NSObject @interface GSWTemplateParser : NSObject
{ {
@ -51,7 +63,8 @@
+(GSWElement*)templateNamed:(NSString*)aName +(GSWElement*)templateNamed:(NSString*)aName
inFrameworkNamed:(NSString*)aFrameworkName inFrameworkNamed:(NSString*)aFrameworkName
withParserClassName:(NSString*)parserClassName withParserType:(GSWTemplateParserType)parserType
parserClassName:(NSString*)parserClassName
withString:(NSString*)HTMLString withString:(NSString*)HTMLString
encoding:(NSStringEncoding)encoding encoding:(NSStringEncoding)encoding
fromPath:(NSString*)HTMLPath fromPath:(NSString*)HTMLPath
@ -60,16 +73,16 @@
definitionPath:(NSString*)aDefinitionPath; definitionPath:(NSString*)aDefinitionPath;
+(GSWElement*)templateNamed:(NSString*)aName +(GSWElement*)templateNamed:(NSString*)aName
inFrameworkNamed:(NSString*)aFrameworkName inFrameworkNamed:(NSString*)aFrameworkName
withParserClass:(Class)parserClass withParserType:(GSWTemplateParserType)parserType
parserClass:(Class)parserClass
withString:(NSString*)HTMLString withString:(NSString*)HTMLString
encoding:(NSStringEncoding)encoding encoding:(NSStringEncoding)encoding
fromPath:(NSString*)HTMLPath fromPath:(NSString*)HTMLPath
definitionsString:(NSString*)pageDefString definitionsString:(NSString*)pageDefString
languages:(NSArray*)someLanguages languages:(NSArray*)someLanguages
definitionPath:(NSString*)aDefinitionPath; definitionPath:(NSString*)aDefinitionPath;
+(void)setDefaultParserClassName:(NSString*)parserClassName; +(GSWTemplateParserType)templateParserTypeFromString:(NSString*)string;
+(NSString*)defaultParserClassName; +(GSWTemplateParserType)defaultTemplateParserType;
+(Class)defaultParserClass;
-(id)initWithTemplateName:(NSString*)aName -(id)initWithTemplateName:(NSString*)aName
inFrameworkName:(NSString*)aFrameworkName inFrameworkName:(NSString*)aFrameworkName
withString:(NSString*)HTMLString withString:(NSString*)HTMLString

View file

@ -38,7 +38,6 @@ static char rcsId[] = "$Id$";
#include "GSWPageDefParser.h" #include "GSWPageDefParser.h"
#include "GSWPageDefParserExt.h" #include "GSWPageDefParserExt.h"
Class GSWTemplateParser_DefaultParserClass=Nil;
//==================================================================== //====================================================================
@implementation GSWTemplateParser @implementation GSWTemplateParser
@ -46,35 +45,35 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
{ {
if (self == [GSWTemplateParser class]) if (self == [GSWTemplateParser class])
{ {
GSWTemplateParser_DefaultParserClass=NSClassFromString(GSWEB_DEFAULT_HTML_PARSER_CLASS_NAME);
NSAssert(GSWTemplateParser_DefaultParserClass,@"Bad GSWEB_DEFAULT_HTML_PARSER_CLASS_NAME");
}; };
}; };
//-------------------------------------------------------------------- +(GSWTemplateParserType)templateParserTypeFromString:(NSString*)string
+(void)setDefaultParserClassName:(NSString*)parserClassName
{ {
NSAssert(parserClassName,@"No defaultParser Class Name"); GSWTemplateParserType type=0;
GSWTemplateParser_DefaultParserClass=NSClassFromString(parserClassName); if ([string caseInsensitiveCompare:GSWOPTValue_DefaultTemplateParser_XMLHTML] == NSOrderedSame)
NSAssert1(GSWTemplateParser_DefaultParserClass,@"No class named %@",parserClassName); 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;
}
//-------------------------------------------------------------------- +(GSWTemplateParserType)defaultTemplateParserType
+(Class)defaultParserClass
{ {
return GSWTemplateParser_DefaultParserClass; return [self templateParserTypeFromString:[GSWApplication defaultTemplateParser]];
}; }
//--------------------------------------------------------------------
+(NSString*)defaultParserClassName
{
return [NSString stringWithCString:[GSWTemplateParser_DefaultParserClass name]];
};
//-------------------------------------------------------------------- //--------------------------------------------------------------------
+(GSWElement*)templateNamed:(NSString*)aName +(GSWElement*)templateNamed:(NSString*)aName
inFrameworkNamed:(NSString*)aFrameworkName inFrameworkNamed:(NSString*)aFrameworkName
withParserClassName:(NSString*)parserClassName withParserType:(GSWTemplateParserType)parserType
parserClassName:(NSString*)parserClassName
withString:(NSString*)HTMLString withString:(NSString*)HTMLString
encoding:(NSStringEncoding)anEncoding encoding:(NSStringEncoding)anEncoding
fromPath:(NSString*)HTMLPath fromPath:(NSString*)HTMLPath
@ -93,7 +92,8 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
}; };
resultTemplate=[self templateNamed:aName resultTemplate=[self templateNamed:aName
inFrameworkNamed:aFrameworkName inFrameworkNamed:aFrameworkName
withParserClass:parserClass withParserType:(GSWTemplateParserType)parserType
parserClass:parserClass
withString:HTMLString withString:HTMLString
encoding:anEncoding encoding:anEncoding
fromPath:HTMLPath fromPath:HTMLPath
@ -107,7 +107,8 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
//-------------------------------------------------------------------- //--------------------------------------------------------------------
+(GSWElement*)templateNamed:(NSString*)aName +(GSWElement*)templateNamed:(NSString*)aName
inFrameworkNamed:(NSString*)aFrameworkName inFrameworkNamed:(NSString*)aFrameworkName
withParserClass:(Class)parserClass withParserType:(GSWTemplateParserType)parserType
parserClass:(Class)parserClass
withString:(NSString*)HTMLString withString:(NSString*)HTMLString
encoding:(NSStringEncoding)anEncoding encoding:(NSStringEncoding)anEncoding
fromPath:(NSString*)HTMLPath fromPath:(NSString*)HTMLPath
@ -117,15 +118,44 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
{ {
GSWElement* resultTemplate=nil; GSWElement* resultTemplate=nil;
GSWTemplateParser* templateParser=nil; GSWTemplateParser* templateParser=nil;
Class finalParserClass=Nil;
LOGClassFnStart(); LOGClassFnStart();
NSDebugMLLog(@"GSWTemplateParser",@"template named:%@ frameworkName:%@ pageDefString=%@",aName,aFrameworkName,pageDefString); NSDebugMLLog(@"GSWTemplateParser",@"template named:%@ frameworkName:%@ pageDefString=%@",aName,aFrameworkName,pageDefString);
NSDebugMLLog(@"GSWTemplateParser",@"aDefinitionPath=%@",aDefinitionPath); NSDebugMLLog(@"GSWTemplateParser",@"aDefinitionPath=%@",aDefinitionPath);
if (!parserClass) NSDebugMLLog(@"GSWTemplateParser",@"parserClass:%@ parserType:%d",parserClass,parserType);
/* if (!parserClass)
{ {
parserClass=[self defaultParserClass]; parserClass=[self defaultParserClass];
NSAssert(parserClass,@"No defaultParser Class"); NSAssert(parserClass,@"No defaultParser Class");
}; };
templateParser=[[[parserClass alloc] initWithTemplateName:aName */
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 inFrameworkName:aFrameworkName
withString:HTMLString withString:HTMLString
encoding:anEncoding encoding:anEncoding
@ -134,7 +164,11 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
fromPath:aDefinitionPath fromPath:aDefinitionPath
forLanguages:someLanguages] autorelease]; forLanguages:someLanguages] autorelease];
if (templateParser) if (templateParser)
{
if (!parserClass && parserType==GSWTemplateParserType_XMLHTMLNoOmittedTags)
[(GSWTemplateParserXMLHTML*)templateParser setNoOmittedTags:YES];
resultTemplate=[templateParser template]; resultTemplate=[templateParser template];
};
LOGClassFnStop(); LOGClassFnStop();
return resultTemplate; return resultTemplate;
}; };
@ -422,7 +456,11 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
NSString* path=nil; NSString* path=nil;
int iLanguage=0; int iLanguage=0;
int iName=0; int iName=0;
BOOL isPathAlreadyProcessed=NO;
LOGObjectFnStart(); LOGObjectFnStart();
NSDebugMLLog(@"gswcomponents",@"anIncludeName=%@",anIncludeName); NSDebugMLLog(@"gswcomponents",@"anIncludeName=%@",anIncludeName);
resourceManager=[GSWApp resourceManager]; resourceManager=[GSWApp resourceManager];
localDefinitionName=[anIncludeName lastPathComponent]; localDefinitionName=[anIncludeName lastPathComponent];
@ -463,6 +501,7 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
{ {
NSDebugMLLog(@"gswcomponents",@"path=%@ already processed",path); NSDebugMLLog(@"gswcomponents",@"path=%@ already processed",path);
path=nil; path=nil;
isPathAlreadyProcessed=YES;
if (language) 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 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); NSDebugMLLog(@"gswcomponents",@"path=%@ already processed",path);
path=nil; path=nil;
isPathAlreadyProcessed=YES;
if (language) 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 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, localFrameworkName,
processedFiles); processedFiles);
}; };
NSDebugMLLog(@"GSWTemplateParser",@"localDefinitions:%@\n",localDefinitions);
if (localDefinitions)
returnedLocalDefinitions=[NSDictionary dictionaryWithDictionary:localDefinitions];
} }
else if (isPathAlreadyProcessed)
returnedLocalDefinitions=[NSDictionary dictionary];//return an empty dictionary
else else
{ {
ExceptionRaise(@"GSWTemplateParser", ExceptionRaise(@"GSWTemplateParser",
@ -542,9 +587,7 @@ Class GSWTemplateParser_DefaultParserClass=Nil;
localFrameworkName, localFrameworkName,
processedFiles); processedFiles);
}; };
NSDebugMLLog(@"GSWTemplateParser",@"localDefinitions:%@\n",localDefinitions); NSDebugMLLog(@"GSWTemplateParser",@"returnedLocalDefinitions:%@\n",returnedLocalDefinitions);
if (localDefinitions)
returnedLocalDefinitions=[NSDictionary dictionaryWithDictionary:localDefinitions];
LOGObjectFnStop(); LOGObjectFnStop();
return returnedLocalDefinitions; return returnedLocalDefinitions;
}; };