Consume byte order mark
diff --git a/include/inja/lexer.hpp b/include/inja/lexer.hpp
index e5d4d0f..e9a900f 100644
--- a/include/inja/lexer.hpp
+++ b/include/inja/lexer.hpp
@@ -281,6 +281,11 @@
pos = 0;
state = State::Text;
minus_state = MinusState::Number;
+
+ // Consume byte order mark (BOM) for UTF-8
+ if (inja::string_view::starts_with(m_in, "\xEF\xBB\xBF")) {
+ m_in = m_in.substr(3);
+ }
}
Token scan() {
@@ -326,8 +331,7 @@
} else if (inja::string_view::starts_with(open_str, config.comment_open)) {
state = State::CommentStart;
must_lstrip = config.lstrip_blocks;
- } else if ((pos == 0 || m_in[pos - 1] == '\n') &&
- inja::string_view::starts_with(open_str, config.line_statement)) {
+ } else if ((pos == 0 || m_in[pos - 1] == '\n') && inja::string_view::starts_with(open_str, config.line_statement)) {
state = State::LineStart;
} else {
pos += 1; // wasn't actually an opening sequence
diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp
index daf6b33..6710d81 100644
--- a/single_include/inja/inja.hpp
+++ b/single_include/inja/inja.hpp
@@ -2160,6 +2160,11 @@
pos = 0;
state = State::Text;
minus_state = MinusState::Number;
+
+ // Consume byte order mark (BOM) for UTF-8
+ if (inja::string_view::starts_with(m_in, "\xEF\xBB\xBF")) {
+ m_in = m_in.substr(3);
+ }
}
Token scan() {
@@ -2205,8 +2210,7 @@
} else if (inja::string_view::starts_with(open_str, config.comment_open)) {
state = State::CommentStart;
must_lstrip = config.lstrip_blocks;
- } else if ((pos == 0 || m_in[pos - 1] == '\n') &&
- inja::string_view::starts_with(open_str, config.line_statement)) {
+ } else if ((pos == 0 || m_in[pos - 1] == '\n') && inja::string_view::starts_with(open_str, config.line_statement)) {
state = State::LineStart;
} else {
pos += 1; // wasn't actually an opening sequence