diff --git a/src/html/htmlparser.cpp b/src/html/htmlparser.cpp
index d05817d..90a32f1 100644
--- a/src/html/htmlparser.cpp
+++ b/src/html/htmlparser.cpp
@@ -140,8 +140,8 @@ HTMLParser::Status HTMLParser::parse_xml_file(const std::string & file_name, Spa
HTMLParser::Status HTMLParser::parse_xml_file(const wchar_t * file_name, Space & out_space, bool compact_mode, bool clear_space)
{
std::string file_name_utf8;
-
wide_to_utf8(file_name, file_name_utf8);
+
return parse_xml_file(file_name_utf8.c_str(), out_space, compact_mode, clear_space);
}
@@ -174,18 +174,6 @@ void HTMLParser::Filter(const wchar_t * in, std::wstring & out)
}
-
-void HTMLParser::Init()
-{
-}
-
-
-void HTMLParser::Uninit()
-{
-}
-
-
-
void HTMLParser::Filter(const std::wstring & in, std::wstring & out)
{
if( &in == &out )
@@ -203,6 +191,77 @@ void HTMLParser::Filter(const std::wstring & in, std::wstring & out)
}
+
+HTMLParser::Status HTMLParser::filter_file(const char * file_name, std::wstring & out)
+{
+ parsing_html = true;
+ reading_from_file = true;
+
+ // open the file before clearing 'out' string, 'out' string can be the same string as the file_name
+ file.clear();
+ file.open(file_name, std::ios_base::binary | std::ios_base::in);
+
+ status = ok;
+ line = 1;
+ stack_len = 0;
+ out_string = &out;
+ out_space = nullptr;
+ line_len = 0;
+ out_string->clear();
+
+ if( file )
+ {
+ Init();
+ Read();
+ Uninit();
+
+ file.close();
+ }
+ else
+ {
+ status = cant_open_file;
+ }
+
+ return status;
+}
+
+
+HTMLParser::Status HTMLParser::filter_file(const std::string & file_name, std::wstring & out)
+{
+ return filter_file(file_name.c_str(), out);
+}
+
+
+HTMLParser::Status HTMLParser::filter_file(const wchar_t * file_name, std::wstring & out)
+{
+ std::string file_name_utf8;
+ pt::wide_to_utf8(file_name, file_name_utf8);
+
+ return filter_file(file_name_utf8, out);
+}
+
+
+HTMLParser::Status HTMLParser::filter_file(const std::wstring & file_name, std::wstring & out)
+{
+ return filter_file(file_name.c_str(), out);
+}
+
+
+
+
+void HTMLParser::Init()
+{
+}
+
+
+void HTMLParser::Uninit()
+{
+}
+
+
+
+
+
int HTMLParser::get_last_parsed_line()
{
return line;
diff --git a/src/html/htmlparser.h b/src/html/htmlparser.h
index 940eb39..50df603 100644
--- a/src/html/htmlparser.h
+++ b/src/html/htmlparser.h
@@ -134,6 +134,11 @@ public:
void Filter(const std::wstring & in, std::wstring & out);
+ HTMLParser::Status filter_file(const char * file_name, std::wstring & out);
+ HTMLParser::Status filter_file(const std::string & file_name, std::wstring & out);
+ HTMLParser::Status filter_file(const wchar_t * file_name, std::wstring & out);
+ HTMLParser::Status filter_file(const std::wstring & file_name, std::wstring & out);
+
/*
*