]> git.llucax.com Git - software/bife/bife++.git/blob - libbife/hit.h
- Normalized Fallback constructor to be the same of Widget (or Container).
[software/bife/bife++.git] / libbife / hit.h
1 // vim: set expandtab tabstop=4 shiftwidth=4:
2
3 #ifndef BIFE_HIT_H
4 #define BIFE_HIT_H
5
6 #include "hash.h"
7 #include <string>
8
9 namespace bife {
10
11     using std::string;
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(const 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(const 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(const string& = string("."), const string& = string(".tpl"));
58
59             /**
60              * Destructor.
61              */
62             virtual ~HIT(void);
63
64             /**
65              * Parses a block replacing keys with values in the hash.
66              *
67              * @param  blockname Name of the block to parse.
68              * @param  vars      Hash containing the variable names and their values.
69              * @return Parsed block with variables replaced.
70              */
71             string parse(const string&, Hash&);
72     };
73
74 }
75
76 #endif