1use std::collections::BTreeMap;
2
3pub const MATCHING: &[(&str, &str)] = &[
5 ("(", ")"),
6 ("[", "]"),
7 ("{", "}"),
8 ("«", "»"),
9 ("‘", "’"),
10 ("“", "”"),
11 ("‹", "›"),
12 ("⁅", "⁆"),
13 ("⁽", "⁾"),
14 ("₍", "₎"),
15 ("⌈", "⌉"),
16 ("⌊", "⌋"),
17 ("〈", "〉"),
18 ("❨", "❩"),
19 ("❪", "❫"),
20 ("❬", "❭"),
21 ("❮", "❯"),
22 ("❰", "❱"),
23 ("❲", "❳"),
24 ("❴", "❵"),
25 ("⟅", "⟆"),
26 ("⟦", "⟧"),
27 ("⟨", "⟩"),
28 ("⟪", "⟫"),
29 ("⟬", "⟭"),
30 ("⟮", "⟯"),
31 ("⦃", "⦄"),
32 ("⦅", "⦆"),
33 ("⦇", "⦈"),
34 ("⦉", "⦊"),
35 ("⦋", "⦌"),
36 ("⦍", "⦎"),
37 ("⦏", "⦐"),
38 ("⦑", "⦒"),
39 ("⦓", "⦔"),
40 ("⦕", "⦖"),
41 ("⦗", "⦘"),
42 ("⧘", "⧙"),
43 ("⧚", "⧛"),
44 ("⧼", "⧽"),
45 ("⸂", "⸃"),
46 ("⸄", "⸅"),
47 ("⸉", "⸊"),
48 ("⸌", "⸍"),
49 ("⸜", "⸝"),
50 ("⸠", "⸡"),
51 ("⸢", "⸣"),
52 ("⸤", "⸥"),
53 ("⸦", "⸧"),
54 ("⸨", "⸩"),
55 ("⹕", "⹖"),
56 ("⹗", "⹘"),
57 ("⹙", "⹚"),
58 ("⹛", "⹜"),
59 ("〈", "〉"),
60 ("《", "》"),
61 ("「", "」"),
62 ("『", "』"),
63 ("【", "】"),
64 ("〔", "〕"),
65 ("〖", "〗"),
66 ("〘", "〙"),
67 ("〚", "〛"),
68 ("﴾", "﴿"),
69 ("︗", "︘"),
70 ("︵", "︶"),
71 ("︷", "︸"),
72 ("︹", "︺"),
73 ("︻", "︼"),
74 ("︽", "︾"),
75 ("︿", "﹀"),
76 ("﹁", "﹂"),
77 ("﹃", "﹄"),
78 ("﹇", "﹈"),
79 ("﹙", "﹚"),
80 ("﹛", "﹜"),
81 ("﹝", "﹞"),
82 ("(", ")"),
83 ("[", "]"),
84 ("{", "}"),
85 ("⦅", "⦆"),
86 ("「", "」"),
87 ("<", ">"),
89 ("'", "'"),
90 ("\"", "\""),
91];
92
93pub fn close() -> BTreeMap<&'static str, &'static str> {
95 MATCHING.iter().cloned().collect()
96}
97
98pub fn open() -> BTreeMap<&'static str, &'static str> {
100 MATCHING
101 .iter()
102 .cloned()
103 .map(|(open, close)| (close, open))
104 .collect()
105}
106
107pub fn matching() -> BTreeMap<&'static str, &'static str> {
109 MATCHING
110 .iter()
111 .cloned()
112 .flat_map(|(open, close)| [(open, close), (close, open)])
113 .collect()
114}