Loading...
Searching...
No Matches
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:
[legend]

## Public Member Functions

| constructor (string resource_path, int parse_opts=DefaultProgramOptions, *code pgm_setup)
| creates the object based on the pathname and Program options
Public Member Functions inherited from WebUtil::TextTemplateBase
| constructor (int po=DefaultProgramOptions)
| sets up the object
Program | getProgram ()
| returns the contained Program object

## Protected Member Functions

hash< HttpResponseInfo > | renderImpl (date new_mtime, hash< auto > ctx, int http_code=200, *hash< auto > hdr)
| explicitly renders the given template with the given argument
RWLock | rwl ()
| to ensure atomicity regarding contention between setup/recompiles and rendering requests

## Protected 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
Protected Attributes inherited from WebUtil::TextTemplateBase
Program | p
| Holds the template generation function.

## Additional Inherited Members

Static Public Member Functions 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
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 Protected Member Functions 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_path | the path to the resource
  parse_opts | the Program parse options for the template file programs
  pgm_setup | an 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

## renderImpl()

hash< HttpResponseInfo > WebUtil::FileTemplate::renderImpl | ( | date | new_mtime,
|  | hash< auto > | ctx,
|  | int | http_code = 200,
|  | *hash< auto > | hdr )

protected

explicitly renders the given template with the given argument

Example:
  hash<HttpResponseInfo> h = qft.render(ctx);

Parameters

  new_mtime | the modified date/time of the file, used to determine if the template should be recomiled or not
  ctx | the context argument for the template
  http_code | the HTTP response code for the response, if not present then 200 `"OK"` is assumed
  hdr | any 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)