mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 10:27:34 +00:00
LibPDF: Extract Parser::parse_dict_contents_until()
No behavior change.
This commit is contained in:
parent
3b3558865c
commit
0912896ae0
2 changed files with 13 additions and 5 deletions
|
@ -404,23 +404,30 @@ PDFErrorOr<NonnullRefPtr<ArrayObject>> Parser::parse_array()
|
||||||
return make_object<ArrayObject>(values);
|
return make_object<ArrayObject>(values);
|
||||||
}
|
}
|
||||||
|
|
||||||
PDFErrorOr<NonnullRefPtr<DictObject>> Parser::parse_dict()
|
PDFErrorOr<HashMap<DeprecatedFlyString, Value>> Parser::parse_dict_contents_until(char const* end)
|
||||||
{
|
{
|
||||||
if (!m_reader.consume('<') || !m_reader.consume('<'))
|
|
||||||
return error("Expected dict to start with \"<<\"");
|
|
||||||
|
|
||||||
m_reader.consume_whitespace();
|
m_reader.consume_whitespace();
|
||||||
HashMap<DeprecatedFlyString, Value> map;
|
HashMap<DeprecatedFlyString, Value> map;
|
||||||
|
|
||||||
while (!m_reader.done()) {
|
while (!m_reader.done()) {
|
||||||
parse_comment();
|
parse_comment();
|
||||||
if (m_reader.matches(">>"))
|
if (m_reader.matches(end))
|
||||||
break;
|
break;
|
||||||
auto name = TRY(parse_name())->name();
|
auto name = TRY(parse_name())->name();
|
||||||
auto value = TRY(parse_value());
|
auto value = TRY(parse_value());
|
||||||
map.set(name, value);
|
map.set(name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
PDFErrorOr<NonnullRefPtr<DictObject>> Parser::parse_dict()
|
||||||
|
{
|
||||||
|
if (!m_reader.consume('<') || !m_reader.consume('<'))
|
||||||
|
return error("Expected dict to start with \"<<\"");
|
||||||
|
|
||||||
|
HashMap<DeprecatedFlyString, Value> map = TRY(parse_dict_contents_until(">>"));
|
||||||
|
|
||||||
if (!m_reader.consume('>') || !m_reader.consume('>'))
|
if (!m_reader.consume('>') || !m_reader.consume('>'))
|
||||||
return error("Expected dict to end with \">>\"");
|
return error("Expected dict to end with \">>\"");
|
||||||
m_reader.consume_whitespace();
|
m_reader.consume_whitespace();
|
||||||
|
|
|
@ -53,6 +53,7 @@ public:
|
||||||
PDFErrorOr<DeprecatedString> parse_literal_string();
|
PDFErrorOr<DeprecatedString> parse_literal_string();
|
||||||
PDFErrorOr<DeprecatedString> parse_hex_string();
|
PDFErrorOr<DeprecatedString> parse_hex_string();
|
||||||
PDFErrorOr<NonnullRefPtr<ArrayObject>> parse_array();
|
PDFErrorOr<NonnullRefPtr<ArrayObject>> parse_array();
|
||||||
|
PDFErrorOr<HashMap<DeprecatedFlyString, Value>> parse_dict_contents_until(char const*);
|
||||||
PDFErrorOr<NonnullRefPtr<DictObject>> parse_dict();
|
PDFErrorOr<NonnullRefPtr<DictObject>> parse_dict();
|
||||||
PDFErrorOr<NonnullRefPtr<StreamObject>> parse_stream(NonnullRefPtr<DictObject> dict);
|
PDFErrorOr<NonnullRefPtr<StreamObject>> parse_stream(NonnullRefPtr<DictObject> dict);
|
||||||
PDFErrorOr<Vector<Operator>> parse_operators();
|
PDFErrorOr<Vector<Operator>> parse_operators();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue