Qore WebUtil Module Reference  1.6
WebUtil::FileTemplate Class Reference

manages a template resource that may need to be recompiled if the file is updated in the filesystem; used by WebUtil::TemplateFileManager More...

Inheritance diagram for WebUtil::FileTemplate:

Public Member Methods

 constructor (string resource_path, int parse_opts=DefaultProgramOptions, *code pgm_setup)
 creates the object based on the pathname and Program options More...
 
hash< auto > render (date new_mtime, hash ctx, int code=200, *hash< auto > hdr)
 explicitly renders the given template with the given argument More...
 
- Public Member Methods inherited from WebUtil::TextTemplateBase
 constructor (int po=DefaultProgramOptions)
 sets up the object
 
Program getProgram ()
 returns the contained Program object
 

Private Member Methods

RWLock rwl ()
 to ensure atomicity regarding contention between setup/recompiles and rendering requests
 

Private Attributes

string ct
 the content type of the rendered template
 
*date mtime
 file's modification time
 
string path
 the path to the template
 
int po
 parse options used on the program
 
*code psetup
 code to perform Program initialization when creating a new Program object (inport API, etc)
 
const TemplateFunc = "t"
 the name of the template function
 
- Private Attributes inherited from WebUtil::TextTemplateBase
Program p
 Holds the template generation function.
 

Additional Inherited Members

- Static Public Member Methods inherited from WebUtil::StaticTextTemplateBase
static string add (Qore::Program p, string fn, string name, string src)
 adds a template function to a template Program object More...
 
static string getContentType (string name)
 returns the content type from the file name, ignores any leading "q" in the extensions, assuming a template
 
- Public Attributes inherited from WebUtil::StaticTextTemplateBase
const DefaultProgramOptions = PO_REQUIRE_OUR|PO_NO_TOP_LEVEL_STATEMENTS|PO_NO_INHERIT_USER_FUNC_VARIANTS|PO_NO_INHERIT_GLOBAL_VARS|PO_NO_USER_CLASSES|PO_NO_TERMINAL_IO
 default parse options for template Programs
 
- Static Private Member Methods inherited from WebUtil::StaticTextTemplateBase
static bool doBlock (string end, reference< string > src, string type, reference< int > i, reference< list< hash >> l)
 a helper method used in parsing
 
static string getCode (bool bare_refs, string fmt)
 a helper method that strips dollar signs from code when PO_ALLOW_BARE_REFS is set in the template program
 

Detailed Description

manages a template resource that may need to be recompiled if the file is updated in the filesystem; used by WebUtil::TemplateFileManager

Member Function Documentation

◆ constructor()

WebUtil::FileTemplate::constructor ( string  resource_path,
int  parse_opts = DefaultProgramOptions,
*code  pgm_setup 
)

creates the object based on the pathname and Program options

Parameters
resource_paththe path to the resource
parse_optsthe Program parse options for the template file programs
pgm_setupan optional closure or call reference taking a single Program argument to be called when initializing template programs to set up a custom template API, etc

◆ render()

hash<auto> WebUtil::FileTemplate::render ( date  new_mtime,
hash  ctx,
int  code = 200,
*hash< auto >  hdr 
)

explicitly renders the given template with the given argument

Example:
hash<auto> h = qft.render(ctx);
Parameters
new_mtimethe modified date/time of the file, used to determine if the template should be recomiled or not
ctxthe context argument for the template
codethe HTTP response code for the response, if not present then 200 "OK" is assumed
hdrany optional headers for the response (the "Content-Type" header is set from the template's "Content-Type" value automatically)
Returns
a hash with the following keys:
  • code: the HTTP response code corresponding to the code argument
  • body: the rendered template
  • hdr: a hash of headers corresponding to the hdr argument plus the "Content-Type" key set from the template's "Content-Type" value)