use regex::Regex;
pub fn default_patterns() -> Vec<Regex> {
vec['"]\)"#).unwrap(),
Regex::new(r#"\bt\(['"]([^'"]+)['"]\)"#).unwrap(),
Regex::new(r#"i18n\.t\(['"]([^'"]+)['"]\)"#).unwrap(),
Regex::new(r#"\$t\(['"]([^'"]+)['"]\)"#).unwrap(),
Regex::new(r#"id:\s*['"]([^'"]+)['"]"#).unwrap(), Regex::new(r#"id=\s*['"]([^'"]+)['"]"#).unwrap(), ]
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_patterns_compile() {
let patterns = default_patterns();
assert!(!patterns.is_empty());
assert_eq!(patterns.len(), 6);
}
#[test]
fn test_ruby_i18n_pattern() {
let patterns = default_patterns();
let ruby_pattern = &patterns[0];
assert!(ruby_pattern.is_match(r#"I18n.t('invoice.labels.add_new')"#));
assert!(ruby_pattern.is_match(r#"I18n.t("invoice.labels.add_new")"#));
assert!(!ruby_pattern.is_match(r#"t('invoice.labels.add_new')"#));
}
#[test]
fn test_ruby_t_pattern() {
let patterns = default_patterns();
let t_pattern = &patterns[1];
assert!(t_pattern.is_match(r#"t('invoice.labels.add_new')"#));
assert!(t_pattern.is_match(r#"t("invoice.labels.add_new")"#));
assert!(t_pattern.is_match(r#" t('key')"#));
}
#[test]
fn test_js_i18n_pattern() {
let patterns = default_patterns();
let js_pattern = &patterns[2];
assert!(js_pattern.is_match(r#"i18n.t('invoice.labels.add_new')"#));
assert!(js_pattern.is_match(r#"i18n.t("invoice.labels.add_new")"#));
}
#[test]
fn test_vue_pattern() {
let patterns = default_patterns();
let vue_pattern = &patterns[3];
assert!(vue_pattern.is_match(r#"$t('invoice.labels.add_new')"#));
assert!(vue_pattern.is_match(r#"$t("invoice.labels.add_new")"#));
}
}