63f17ce07465151207181818f8c23482930507e7
[anna.git] / Parser.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite                           //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7
8
9 #ifndef anna_html_Parser_hpp
10 #define anna_html_Parser_hpp
11
12 #include <anna/xml/Parser.hpp>
13
14 #include <anna/html/Node.hpp>
15
16 namespace anna {
17
18 namespace html {
19 /**
20    Analizador de documentos HTML.
21
22    Analiza la expresion contenida en un documento HTML y devuelve un arbol de nodos que resulta muy
23    facil de usar.
24 */
25 class Parser : public xml::Parser {
26 public:
27   /**
28      Constructor.
29   */
30   Parser() { a_head = a_body = NULL; }
31
32   /**
33      Obtiene el nodo HEAD del documento HTML analizado. Si no esta establecido lanzara una excepcion.
34      \return el nodo HEAD del documento HTML analizado.
35      \warning
36         \li Solo deberia ser llamado despues de Parser::apply.
37         \li El nodo devuelto no puede ser usado despues de invocar al destructor de este Parser.
38   */
39   const html::Node* getHead() noexcept(false);
40
41   /**
42      Obtiene el nodo BODY del documento HTML analizado. Si no esta establecido lanzara una excepcion.
43      \return el nodo BODY del documento HTML analizado.
44      \warning
45         \li Solo deberia ser llamado despues de Parser::apply.
46         \li El nodo devuelto no puede ser usado despues de invocar al destructor de este Parser.
47   */
48   const html::Node* getBody() noexcept(false);
49
50 private:
51   const html::Node* a_head;
52   const html::Node* a_body;
53
54   void reset() { xml::Parser::reset(); a_head = a_body = NULL; }
55
56 };
57
58 }
59 }
60
61 #endif
62
63