| 99 | /// Check if a CSS property is supported across browsers specified by a browserslist query |
| 100 | #[cfg(feature = "browserslist")] |
| 101 | pub fn supports_browserslist( |
| 102 | &self, |
| 103 | browserslist_query: &[&str], |
| 104 | opts: &Opts, |
| 105 | ) -> Result<CompatibilityResult, Error> { |
| 106 | let browsers = resolve(browserslist_query, opts)?; |
| 107 | let mut supported_browsers = Vec::new(); |
| 108 | let mut unsupported_browsers = Vec::new(); |
| 109 | |
| 110 | for browser in browsers { |
| 111 | let str = format!("{} {}", browser.name(), browser.version()); |
| 112 | let named_browser = NamedBrowserVersion::try_from(browser); |
| 113 | if named_browser.is_ok_and(|ver| self.browser_support.supports(ver)) { |
| 114 | supported_browsers.push(str); |
| 115 | } else { |
| 116 | unsupported_browsers.push(str); |
| 117 | } |
| 118 | } |
| 119 | Ok(CompatibilityResult { |
| 120 | is_supported: unsupported_browsers.is_empty(), |
| 121 | unsupported_browsers, |
| 122 | supported_browsers, |
| 123 | }) |
| 124 | } |
| 125 | |
| 126 | pub fn supports(&self, browser: NamedBrowserVersion) -> bool { |
| 127 | self.browser_support.supports(browser) |