justpdf_core/tokenizer/
token.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
3pub enum Keyword {
4 True,
5 False,
6 Null,
7 Obj,
8 EndObj,
9 Stream,
10 EndStream,
11 Xref,
12 Trailer,
13 StartXref,
14 R,
15}
16
17impl Keyword {
18 pub fn from_bytes(b: &[u8]) -> Option<Self> {
19 match b {
20 b"true" => Some(Self::True),
21 b"false" => Some(Self::False),
22 b"null" => Some(Self::Null),
23 b"obj" => Some(Self::Obj),
24 b"endobj" => Some(Self::EndObj),
25 b"stream" => Some(Self::Stream),
26 b"endstream" => Some(Self::EndStream),
27 b"xref" => Some(Self::Xref),
28 b"trailer" => Some(Self::Trailer),
29 b"startxref" => Some(Self::StartXref),
30 b"R" => Some(Self::R),
31 _ => None,
32 }
33 }
34}
35
36#[derive(Debug, Clone, PartialEq)]
38pub enum Token {
39 Integer(i64),
41 Real(f64),
43 LiteralString(Vec<u8>),
45 HexString(Vec<u8>),
47 Name(Vec<u8>),
49 Keyword(Keyword),
51 ArrayBegin,
53 ArrayEnd,
55 DictBegin,
57 DictEnd,
59}
60
61impl Token {
62 pub fn is_keyword(&self, kw: Keyword) -> bool {
63 matches!(self, Token::Keyword(k) if *k == kw)
64 }
65}