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 Regex::new(r#"id:\s*['"]([^'"]+)['"]"#).unwrap(), Regex::new(r#"id=\s*['"]([^'"]+)['"]"#).unwrap(), ]
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(), 6);
29 }
30
31 #[test]
32 fn test_ruby_i18n_pattern() {
33 let patterns = default_patterns();
34 let ruby_pattern = &patterns[0];
35
36 assert!(ruby_pattern.is_match(r#"I18n.t('invoice.labels.add_new')"#));
37 assert!(ruby_pattern.is_match(r#"I18n.t("invoice.labels.add_new")"#));
38 assert!(!ruby_pattern.is_match(r#"t('invoice.labels.add_new')"#));
39 }
40
41 #[test]
42 fn test_ruby_t_pattern() {
43 let patterns = default_patterns();
44 let t_pattern = &patterns[1];
45
46 assert!(t_pattern.is_match(r#"t('invoice.labels.add_new')"#));
47 assert!(t_pattern.is_match(r#"t("invoice.labels.add_new")"#));
48 assert!(t_pattern.is_match(r#" t('key')"#));
50 }
51
52 #[test]
53 fn test_js_i18n_pattern() {
54 let patterns = default_patterns();
55 let js_pattern = &patterns[2];
56
57 assert!(js_pattern.is_match(r#"i18n.t('invoice.labels.add_new')"#));
58 assert!(js_pattern.is_match(r#"i18n.t("invoice.labels.add_new")"#));
59 }
60
61 #[test]
62 fn test_vue_pattern() {
63 let patterns = default_patterns();
64 let vue_pattern = &patterns[3];
65
66 assert!(vue_pattern.is_match(r#"$t('invoice.labels.add_new')"#));
67 assert!(vue_pattern.is_match(r#"$t("invoice.labels.add_new")"#));
68 }
69}