accessibility_rs/engine/
issue.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Default, Debug, Clone, Serialize, Deserialize)]
5pub struct Clip {
6 pub x: u32,
8 pub y: u32,
10 pub height: u32,
12 pub width: u32,
14}
15
16#[derive(Default, Debug, Clone, Serialize, Deserialize)]
18pub struct RunnerExtras {
19 pub help_url: &'static str,
21 pub description: &'static str,
23 pub impact: &'static str,
25}
26
27#[derive(Default, Debug, Clone, Serialize, Deserialize)]
29pub struct Issue {
30 pub context: String,
32 pub selectors: Vec<String>,
34 pub code: String,
36 pub issue_type: &'static str,
38 pub type_code: u8,
40 pub message: String,
42 pub runner: &'static str,
44 pub runner_extras: RunnerExtras,
46 pub recurrence: u32,
48 pub clip: Option<Clip>,
50}
51
52impl Issue {
53 pub fn new(
55 message: String,
56 context: &str,
57 code: &str,
58 issue_type: &'static str,
59 selectors: Vec<String>,
60 ) -> Issue {
61 Issue {
62 message,
63 context: context.into(),
64 runner: "accessibility-rs",
65 code: code.into(),
66 issue_type,
67 type_code: match issue_type {
68 "error" => 0,
69 "warning" => 1,
70 _ => 2,
71 },
72 selectors,
73 ..Default::default()
74 }
75 }
76}