1 | use crate::Property;
|
2 |
|
3 | /// This element contains a single value which is compared with the target ('pattern', 'font', 'scan' or 'default') property "property" (substitute any of the property names seen above).
|
4 | /// 'compare' can be one of "eq", "not_eq", "less", "less_eq", "more", "more_eq", "contains" or "not_contains".
|
5 | /// 'qual' may either be the default, "any", in which case the match succeeds if any value associated with the property matches the test value,
|
6 | /// or "all", in which case all of the values associated with the property must match the test value. 'ignore-blanks' takes a boolean value.
|
7 | /// if 'ignore-blanks' is set "true", any blanks in the string will be ignored on its comparison. this takes effects only when compare="eq" or compare="not_eq".
|
8 | /// When used in a <match target="font"> element, the target= attribute in the <test> element selects between matching the original pattern or the font.
|
9 | /// "default" selects whichever target the outer <match> element has selected.
|
10 | #[derive (Clone, Debug, Default, PartialEq)]
|
11 | #[cfg_attr (feature = "serde" , derive(serde::Serialize, serde::Deserialize))]
|
12 | pub struct Test {
|
13 | pub qual: TestQual,
|
14 | pub target: TestTarget,
|
15 | pub compare: TestCompare,
|
16 | pub value: Property,
|
17 | }
|
18 |
|
19 | #[derive (Clone, Copy, Debug, PartialEq, Eq)]
|
20 | #[cfg_attr (feature = "serde" , derive(serde::Serialize, serde::Deserialize))]
|
21 | pub enum TestTarget {
|
22 | Default,
|
23 | Pattern,
|
24 | Font,
|
25 | Scan,
|
26 | }
|
27 |
|
28 | parse_enum! {
|
29 | TestTarget,
|
30 | (Default, "default" ),
|
31 | (Pattern, "pattern" ),
|
32 | (Font, "font" ),
|
33 | (Scan, "scan" ),
|
34 | }
|
35 |
|
36 | impl Default for TestTarget {
|
37 | fn default() -> Self {
|
38 | TestTarget::Default
|
39 | }
|
40 | }
|
41 |
|
42 | #[derive (Clone, Copy, Debug, PartialEq, Eq)]
|
43 | #[cfg_attr (feature = "serde" , derive(serde::Serialize, serde::Deserialize))]
|
44 | pub enum TestCompare {
|
45 | Eq,
|
46 | NotEq,
|
47 | Less,
|
48 | LessEq,
|
49 | More,
|
50 | MoreEq,
|
51 | Contains,
|
52 | NotContains,
|
53 | }
|
54 |
|
55 | parse_enum! {
|
56 | TestCompare,
|
57 | (Eq, "eq" ),
|
58 | (NotEq, "not_eq" ),
|
59 | (Less, "less" ),
|
60 | (LessEq, "less_eq" ),
|
61 | (More, "more" ),
|
62 | (MoreEq, "more_eq" ),
|
63 | (Contains, "contains" ),
|
64 | (NotContains, "not_contains" ),
|
65 | }
|
66 |
|
67 | impl Default for TestCompare {
|
68 | fn default() -> Self {
|
69 | TestCompare::Eq
|
70 | }
|
71 | }
|
72 |
|
73 | #[derive (Clone, Copy, Debug, PartialEq, Eq)]
|
74 | #[cfg_attr (feature = "serde" , derive(serde::Serialize, serde::Deserialize))]
|
75 | pub enum TestQual {
|
76 | Any,
|
77 | All,
|
78 | }
|
79 |
|
80 | parse_enum! {
|
81 | TestQual,
|
82 | (Any, "any" ),
|
83 | (All, "all" ),
|
84 | }
|
85 |
|
86 | impl Default for TestQual {
|
87 | fn default() -> Self {
|
88 | TestQual::Any
|
89 | }
|
90 | }
|
91 | |