00001 #ifndef menu_h 00002 #define menu_h 00003 00004 #include "tag.h" 00005 00007 class MenuBase : protected Tag 00008 { 00009 private: 00010 std::string name; 00011 std::string href; 00012 std::string subdir; 00013 std::string title; 00014 std::string tag_type; 00015 std::string pre; 00016 std::string post; 00017 std::string post_backwards; 00018 std::string pre_backwards; 00019 std::string post_forwards; 00020 std::string pre_forwards; 00021 std::string highlight_type; 00022 std::string highlight_active_type; 00023 std::string highlight_menu_type; 00024 std::string highlight_active_menu_type; 00025 int indent_number; 00026 std::string indent_type; 00027 std::string blockquote_principe; 00028 std::string title_type; 00029 std::string title_menu_type; // better expressions with style sheets 00030 std::string title_highlight_type; 00031 std::string title_highlight_menu_type; // better expressions with style sheets 00032 std::string target; // specify an other target 00033 00034 bool is_valid_tag; 00035 public: 00036 MenuBase( Line& line, std::string tag_type ); 00037 MenuBase() : Tag() {} 00038 00040 bool operator!() const 00041 { return !is_valid_tag; } 00042 00044 00045 std::string get_name() const 00046 { return name; } 00047 00049 00050 std::string get_href() const 00051 { return href; } 00052 00054 00055 std::string get_subdir() const 00056 { return subdir; } 00057 00059 00060 std::string get_title() const 00061 { return title; } 00062 00063 std::string get_tag_type() const 00064 { return tag_type; } 00065 00066 std::string get_pre() const 00067 { return pre; } 00068 00069 std::string get_post() const 00070 { return post; } 00071 00072 std::string get_post_backwards() const 00073 { return post_backwards; } 00074 00075 std::string get_pre_backwards() const 00076 { return pre_backwards; } 00077 00078 std::string get_post_forwards() const 00079 { return post_forwards; } 00080 00081 std::string get_pre_forwards() const 00082 { return pre_forwards; } 00083 00084 int get_indent_number() const 00085 { return indent_number; } 00086 00087 std::string get_indent_type() const 00088 { return indent_type; } 00089 00090 std::string get_highlight_type() const 00091 { return highlight_type; } 00092 00093 std::string get_highlight_active_type() const 00094 { return highlight_active_type; } 00095 00096 std::string get_highlight_menu_type() const 00097 { return highlight_menu_type; } 00098 00099 std::string get_highlight_active_menu_type() const 00100 { return highlight_active_menu_type; } 00101 00102 std::string get_blockquote_principe() const 00103 { return blockquote_principe; } 00104 00105 std::string get_title_type() const 00106 { return title_type; } 00107 00108 std::string get_title_menu_type() const 00109 { return title_type; } 00110 00111 00112 std::string get_title_highlight_type() const 00113 { return title_highlight_type; } 00114 00115 std::string get_title_highlight_menu_type() const 00116 { return title_highlight_menu_type; } 00117 00118 std::string get_target() const 00119 { return target; } 00120 }; 00121 00123 00129 class Menu : public MenuBase 00130 { 00131 public: 00132 Menu( Line& line ) 00133 : MenuBase( line, "menu" ){} 00134 Menu() : MenuBase() {} 00135 }; 00136 00138 class MenuClose : private Tag 00139 { 00140 private: 00141 00142 bool is_valid_tag; 00143 public: 00144 MenuClose( Line& line ); 00145 MenuClose() : Tag() {} 00146 00147 bool operator!() const { return !is_valid_tag; } 00148 }; 00149 00151 00154 class Item : public MenuBase 00155 { 00156 public: 00157 Item( Line& line) 00158 : MenuBase( line, "item" ){} 00159 00160 Item() : MenuBase() {} 00161 }; 00162 00163 #endif