]> git.llucax.com Git - software/bife/bife++.git/blob - hit.h
b24ee814ec5f17549059678fbaead118a58f78d5
[software/bife/bife++.git] / hit.h
1 // vim: set expandtab tabstop=4 shiftwidth=4:
2
3 #ifndef _BIFE_HIT_H_
4 #define _BIFE_HIT_H_
5
6 #include <string>
7 #include <fstream>
8 #include <sstream>
9 #include "hash.h"
10
11 using namespace std;
12
13 /**
14  * Hooks vs IT Template Engine.
15  *
16  * Hooks vs IT (HIT) is a simple template implementation, based on hooks
17  * and IT template systems.
18  *
19  * @todo Implementar buffers?
20  */
21 class HIT {
22     // Attributes.
23     public:
24         /// Root directory where to search for templates.
25         string root;
26         /// Postfix added to the blockname to convert it to a filename.
27         string postfix;
28         // bool search_path = false
29         // TODO - Para subclases
30         //Hash buffer;
31
32     // Methods.
33     protected:
34         /**
35          * Gets file name based on the blockname.
36          *
37          * @param  blockname Name of the block to get the filename.
38          * @return Block's filename.
39          */
40         virtual string getFileName(string);
41
42         /**
43          * Gets file content.
44          *
45          * @param  filename Name of the file to get the content.
46          * @return File content.
47          */
48         virtual string getFileContent(string);
49
50     public:
51         /**
52          * Constructor.
53          *
54          * @param root    Root directory from where to get the templates.
55          * @param postfix Postfix of the template files.
56          */
57         HIT(string = ".", string = ".tpl");
58
59         /**
60          * Parses a block replacing keys with values in the hash.
61          *
62          * @param  blockname Name of the block to parse.
63          * @param  vars      Hash containing the variable names and their values.
64          * @return Parsed block with variables replaced.
65          */
66         string parse(string, Hash&);
67 };
68
69 #endif