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