1use regex::Regex;
2
3pub fn default_patterns() -> Vec<Regex> {
5 vec['"]\)"#).unwrap(),
8 Regex::new(r#"\bt\(['"]([^'"]+)['"]\)"#).unwrap(),
9
10 Regex::new(r#"i18n\.t\(['"]([^'"]+)['"]\)"#).unwrap(),
12
13 Regex::new(r#"\$t\(['"]([^'"]+)['"]\)"#).unwrap(),
15
16 ]
20}
21
22#[cfg(test)]
23mod tests {
24 use super::*;
25
26 #[test]
27 fn test_patterns_compile() {
28 let patterns = default_patterns();
29 assert!(!patterns.is_empty());
30 assert_eq!(patterns.len(), 4);
31 }
32
33 #[test]
34 fn test_ruby_i18n_pattern() {
35 let patterns = default_patterns();
36 let ruby_pattern = &patterns[0];
37
38 assert!(ruby_pattern.is_match(r#"I18n.t('invoice.labels.add_new')"#));
39 assert!(ruby_pattern.is_match(r#"I18n.t("invoice.labels.add_new")"#));
40 assert!(!ruby_pattern.is_match(r#"t('invoice.labels.add_new')"#));
41 }
42
43 #[test]
44 fn test_ruby_t_pattern() {
45 let patterns = default_patterns();
46 let t_pattern = &patterns[1];
47
48 assert!(t_pattern.is_match(r#"t('invoice.labels.add_new')"#));
49 assert!(t_pattern.is_match(r#"t("invoice.labels.add_new")"#));
50 assert!(t_pattern.is_match(r#" t('key')"#));
52 }
53
54 #[test]
55 fn test_js_i18n_pattern() {
56 let patterns = default_patterns();
57 let js_pattern = &patterns[2];
58
59 assert!(js_pattern.is_match(r#"i18n.t('invoice.labels.add_new')"#));
60 assert!(js_pattern.is_match(r#"i18n.t("invoice.labels.add_new")"#));
61 }
62
63 #[test]
64 fn test_vue_pattern() {
65 let patterns = default_patterns();
66 let vue_pattern = &patterns[3];
67
68 assert!(vue_pattern.is_match(r#"$t('invoice.labels.add_new')"#));
69 assert!(vue_pattern.is_match(r#"$t("invoice.labels.add_new")"#));
70 }
71}