reload template source if file date changed

master
Harald Wolff 2019-02-14 18:42:12 +01:00
parent a28752ff44
commit a2a8edfe3f
1 changed files with 14 additions and 1 deletions

View File

@ -11,6 +11,8 @@ namespace ln.templates
{
public TemplateProvider Provider { get; private set; }
public String SourceFilename { get; private set; }
public String PseudoFilename { get; private set; }
public DateTime SourceTimeStamp { get; private set; }
public Element RootElement { get; private set; }
@ -19,6 +21,7 @@ namespace ln.templates
public Template(String sourceFilename)
{
SourceFilename = sourceFilename;
PseudoFilename = sourceFilename;
LoadSource(null);
}
@ -27,6 +30,7 @@ namespace ln.templates
{
Provider = provider;
SourceFilename = sourceFilename;
PseudoFilename = sourceFilename;
LoadSource(null);
}
@ -34,7 +38,7 @@ namespace ln.templates
public Template(String source,String pseudoFilename,TemplateProvider provider)
{
Provider = provider;
SourceFilename = pseudoFilename;
PseudoFilename = pseudoFilename;
LoadSource(source);
}
@ -49,6 +53,8 @@ namespace ln.templates
fileStream.Read(loadBuffer, 0, loadBuffer.Length);
fileStream.Close();
source = Encoding.UTF8.GetString(loadBuffer);
SourceTimeStamp = File.GetLastWriteTimeUtc(SourceFilename);
}
}
@ -65,6 +71,13 @@ namespace ln.templates
}
public String Generate(Context context)
{
if (SourceFilename != null)
{
DateTime ts = File.GetLastWriteTimeUtc(SourceFilename);
if (ts > SourceTimeStamp)
LoadSource(null);
}
StringWriter writer = new StringWriter();
RootElement.Generate(writer, context);