00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00018
00019 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_DIV_STRUCTURE_FILTER_H_
00020 #define NET_INSTAWEB_REWRITER_PUBLIC_DIV_STRUCTURE_FILTER_H_
00021
00022 #include <vector>
00023 #include "net/instaweb/htmlparse/public/empty_html_filter.h"
00024 #include "net/instaweb/util/public/string.h"
00025
00026 namespace net_instaweb {
00027
00028 class HtmlElement;
00029
00043 class DivStructureFilter : public EmptyHtmlFilter {
00044 public:
00045 static const char kParamName[];
00046
00047 explicit DivStructureFilter();
00048 virtual ~DivStructureFilter();
00049
00050 virtual void StartDocument();
00051 virtual void StartElement(HtmlElement* element);
00052 virtual void EndElement(HtmlElement* element);
00053 virtual const char* Name() const { return "DivStructureFilter"; }
00054
00055 static GoogleString GetDivCountStackEncoding(
00056 const std::vector<int>& div_count_stack);
00057
00058 private:
00059 std::vector<int> div_count_stack_;
00060 };
00061
00062 }
00063
00064 #endif ///< NET_INSTAWEB_REWRITER_PUBLIC_DIV_STRUCTURE_FILTER_H_