mirror of
https://github.com/gnustep/libs-gsweb.git
synced 2025-02-24 04:01:16 +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__
|
#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
|
||||||
|
|
|
@ -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,24 +118,57 @@ 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
|
*/
|
||||||
inFrameworkName:aFrameworkName
|
if (parserClass)
|
||||||
withString:HTMLString
|
finalParserClass=parserClass;
|
||||||
encoding:anEncoding
|
else
|
||||||
fromPath:HTMLPath
|
{
|
||||||
withDefinitionsString:pageDefString
|
if (parserType==GSWTemplateParserType_Default)
|
||||||
fromPath:aDefinitionPath
|
parserType=[self defaultTemplateParserType];
|
||||||
forLanguages:someLanguages] autorelease];
|
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)
|
if (templateParser)
|
||||||
resultTemplate=[templateParser template];
|
{
|
||||||
|
if (!parserClass && parserType==GSWTemplateParserType_XMLHTMLNoOmittedTags)
|
||||||
|
[(GSWTemplateParserXMLHTML*)templateParser setNoOmittedTags:YES];
|
||||||
|
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;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue