use once_cell::sync::Lazy;
use regex::Regex;
pub static KOTLIN_SYNTHETIC_IMPORT: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"import\s+kotlin\.android\.synthetic\.(\w+)\.\*"#).unwrap());
pub static VIEWBINDING_VAR: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"(\w+Binding)\s+(\w+)\s*="#).unwrap());
pub static PROPERTY_ACCESS: Lazy<Regex> = Lazy::new(|| Regex::new(r#"(\w+)\.(\w+)"#).unwrap());
pub static GRPC_CLIENT: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"(?m)grpc\.NewClient\s*\(\s*"([^"]+)"[,\s]""#).unwrap());
pub static YAML_ADDRESS: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"be_(\w+)_address\s*[=:]\s*["']([^"']+)["']"#).unwrap());
pub static CONFIG_COMMENT: Lazy<Regex> = Lazy::new(|| Regex::new(r"(?m)^\s*//.*$").unwrap());
pub static DEPENDENCY_SECTION: Lazy<Regex> =
Lazy::new(|| Regex::new(r"^\[(.*dependencies.*)\]").unwrap());
pub static DEPENDENCY_LINE: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"^([a-zA-Z0-9_\-]+)\s*=\s*(.*)"#).unwrap());
pub static GO_REQUIRE_SINGLE: Lazy<Regex> =
Lazy::new(|| Regex::new(r"^\s*require\s+([^\s]+)\s+(v[^\s]+)").unwrap());
pub static GO_REQUIRE_BLOCK_START: Lazy<Regex> =
Lazy::new(|| Regex::new(r"^\s*require\s*\(\s*$").unwrap());
pub static GO_REQUIRE_BLOCK_END: Lazy<Regex> = Lazy::new(|| Regex::new(r"^\s*\)\s*$").unwrap());
pub static GO_REQUIRE_LINE: Lazy<Regex> =
Lazy::new(|| Regex::new(r"^\s*([^\s]+)\s+(v[^\s]+)").unwrap());
pub static TF_RESOURCE: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"(?m)^resource\s+"([^"]+)"\s+"([^"]+)""#).unwrap());
pub static TF_DATA: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"(?m)^data\s+"([^"]+)"\s+"([^"]+)""#).unwrap());
pub static TF_VARIABLE: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"(?m)^variable\s+"([^"]+)""#).unwrap());
pub static TF_OUTPUT: Lazy<Regex> = Lazy::new(|| Regex::new(r#"(?m)^output\s+"([^"]+)""#).unwrap());
pub static TF_MODULE: Lazy<Regex> = Lazy::new(|| Regex::new(r#"(?m)^module\s+"([^"]+)""#).unwrap());
pub static TF_PROVIDER: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"(?m)^provider\s+"([^"]+)""#).unwrap());
pub static ANDROID_NAME_ATTR: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"android:name\s*=\s*["']([^"']+)["']"#).unwrap());
pub static XML_ELEMENT: Lazy<Regex> = Lazy::new(|| {
Regex::new(r"<([a-zA-Z][a-zA-Z0-9_.]*)\s[^>]*>|</([a-zA-Z][a-zA-Z0-9_.]*)\s*>").unwrap()
});
pub static ANDROID_ID: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"android:id\s*=\s*["']@\+id/([^"']+)["']"#).unwrap());
pub static ANDROID_ONCLICK: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"android:onClick\s*=\s*["']([^"']+)["']"#).unwrap());
pub static VIEW_ID_PLUS: Lazy<Regex> =
Lazy::new(|| Regex::new(r"@\+id/([a-zA-Z_][a-zA-Z0-9_]*)").unwrap());
pub static VIEW_ID: Lazy<Regex> =
Lazy::new(|| Regex::new(r"@id/([a-zA-Z_][a-zA-Z0-9_]*)").unwrap());
pub static TOOLS_CONTEXT: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"tools:context\s*=\s*["']([^"']+)["']"#).unwrap());
pub static LAYOUT_CLASS: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"android:name\s*=\s*["']([^"']+\.)([^"']+)["']"#).unwrap());
pub static STYLE_REF: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"style\s*=\s*["']@style/([^"']+)["']"#).unwrap());
pub static STRING_RESOURCE: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"<string\s+name\s*=\s*"([^"]+)"[^>]*>([^<]*)</string>"#).unwrap());
pub static COLOR_RESOURCE: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"<color\s+name\s*=\s*"([^"]+)"[^>]*>([^<]*)</color>"#).unwrap());
pub static DIMEN_RESOURCE: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"<dimen\s+name\s*=\s*"([^"]+)"[^>]*>([^<]*)</dimen>"#).unwrap());
pub static THEME_RESOURCE: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"<theme\s+name\s*=\s*"([^"]+)"[^>]*>[\s\S]*?</theme>"#).unwrap());
pub static BOOL_RESOURCE: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"<bool\s+name\s*=\s*"([^"]+)"[^>]*>([^<]*)</bool>"#).unwrap());
pub static INTEGER_RESOURCE: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"<integer\s+name\s*=\s*"([^"]+)"[^>]*>([^<]*)</integer>"#).unwrap());
pub static MAVEN_DEPENDENCY: Lazy<Regex> =
Lazy::new(|| Regex::new(r"<dependency>([\s\S]*?)</dependency>").unwrap());
pub static GRADLE_INCLUDE: Lazy<Regex> =
Lazy::new(|| Regex::new(r#"include\(["']([^"']+)["']\)"#).unwrap());
pub static MAVEN_MODULE: Lazy<Regex> =
Lazy::new(|| Regex::new(r"<module>([^<]+)</module>").unwrap());