on master help sign in
HighlightingAssets: Encapsulate syntax_set behind a getter
375d55aMartin Nordholts
src/assets.rs+17−13
@@ -18,7 +18,7 @@ use crate::syntax_mapping::{MappingTarget, SyntaxMapping};
18
18
19#[derive(Debug)]
19#[derive(Debug)]
20pub struct HighlightingAssets {
20pub struct HighlightingAssets {
21− pub(crate) syntax_set: SyntaxSet,
21+ syntax_set: SyntaxSet,
22 pub(crate) theme_set: ThemeSet,
22 pub(crate) theme_set: ThemeSet,
23 fallback_theme: Option<&'static str>,
23 fallback_theme: Option<&'static str>,
24}
24}
@@ -127,7 +127,7 @@ impl HighlightingAssets {
127 let _ = fs::create_dir_all(target_dir);
127 let _ = fs::create_dir_all(target_dir);
128 asset_to_cache(&self.theme_set, &target_dir.join("themes.bin"), "theme set")?;
128 asset_to_cache(&self.theme_set, &target_dir.join("themes.bin"), "theme set")?;
129 asset_to_cache(
129 asset_to_cache(
130− &self.syntax_set,
130+ self.get_syntax_set(),
131 &target_dir.join("syntaxes.bin"),
131 &target_dir.join("syntaxes.bin"),
132 "syntax set",
132 "syntax set",
133 )?;
133 )?;
@@ -146,8 +146,12 @@ impl HighlightingAssets {
146 self.fallback_theme = Some(theme);
146 self.fallback_theme = Some(theme);
147 }
147 }
148
148
149+ pub(crate) fn get_syntax_set(&self) -> &SyntaxSet {
150+ &self.syntax_set
151+ }
152+
149 pub fn syntaxes(&self) -> &[SyntaxReference] {
153 pub fn syntaxes(&self) -> &[SyntaxReference] {
150− self.syntax_set.syntaxes()
154+ self.get_syntax_set().syntaxes()
151 }
155 }
152
156
153 pub fn themes(&self) -> impl Iterator<Item = &str> {
157 pub fn themes(&self) -> impl Iterator<Item = &str> {
@@ -163,7 +167,7 @@ impl HighlightingAssets {
163 match mapping.get_syntax_for(file_name) {
167 match mapping.get_syntax_for(file_name) {
164 Some(MappingTarget::MapToUnknown) => None,
168 Some(MappingTarget::MapToUnknown) => None,
165 Some(MappingTarget::MapTo(syntax_name)) => {
169 Some(MappingTarget::MapTo(syntax_name)) => {
166− self.syntax_set.find_syntax_by_name(syntax_name)
170+ self.get_syntax_set().find_syntax_by_name(syntax_name)
167 }
171 }
168 None => self.get_extension_syntax(file_name.as_os_str()),
172 None => self.get_extension_syntax(file_name.as_os_str()),
169 }
173 }
@@ -192,7 +196,7 @@ impl HighlightingAssets {
192 mapping: &SyntaxMapping,
196 mapping: &SyntaxMapping,
193 ) -> Result<&SyntaxReference> {
197 ) -> Result<&SyntaxReference> {
194 if let Some(language) = language {
198 if let Some(language) = language {
195− self.syntax_set
199+ self.get_syntax_set()
196 .find_syntax_by_token(language)
200 .find_syntax_by_token(language)
197 .ok_or_else(|| ErrorKind::UnknownSyntax(language.to_owned()).into())
201 .ok_or_else(|| ErrorKind::UnknownSyntax(language.to_owned()).into())
198 } else {
202 } else {
@@ -225,7 +229,7 @@ impl HighlightingAssets {
225 }),
229 }),
226
230
227 Some(MappingTarget::MapTo(syntax_name)) => self
231 Some(MappingTarget::MapTo(syntax_name)) => self
228− .syntax_set
232+ .get_syntax_set()
229 .find_syntax_by_name(syntax_name)
233 .find_syntax_by_name(syntax_name)
230 .ok_or_else(|| ErrorKind::UnknownSyntax(syntax_name.to_owned()).into()),
234 .ok_or_else(|| ErrorKind::UnknownSyntax(syntax_name.to_owned()).into()),
231
235
@@ -246,11 +250,11 @@ impl HighlightingAssets {
246 }
250 }
247
251
248 fn get_extension_syntax(&self, file_name: &OsStr) -> Option<&SyntaxReference> {
252 fn get_extension_syntax(&self, file_name: &OsStr) -> Option<&SyntaxReference> {
249− self.syntax_set
253+ self.get_syntax_set()
250 .find_syntax_by_extension(file_name.to_str().unwrap_or_default())
254 .find_syntax_by_extension(file_name.to_str().unwrap_or_default())
251 .or_else(|| {
255 .or_else(|| {
252 let file_path = Path::new(file_name);
256 let file_path = Path::new(file_name);
253− self.syntax_set
257+ self.get_syntax_set()
254 .find_syntax_by_extension(
258 .find_syntax_by_extension(
255 file_path
259 file_path
256 .extension()
260 .extension()
@@ -274,7 +278,7 @@ impl HighlightingAssets {
274 fn get_first_line_syntax(&self, reader: &mut InputReader) -> Option<&SyntaxReference> {
278 fn get_first_line_syntax(&self, reader: &mut InputReader) -> Option<&SyntaxReference> {
275 String::from_utf8(reader.first_line.clone())
279 String::from_utf8(reader.first_line.clone())
276 .ok()
280 .ok()
277− .and_then(|l| self.syntax_set.find_syntax_by_first_line(&l))
281+ .and_then(|l| self.get_syntax_set().find_syntax_by_first_line(&l))
278 }
282 }
279}
283}
280
284
@@ -347,7 +351,7 @@ mod tests {
347
351
348 self.assets
352 self.assets
349 .get_syntax(None, &mut opened_input, &self.syntax_mapping)
353 .get_syntax(None, &mut opened_input, &self.syntax_mapping)
350− .unwrap_or_else(|_| self.assets.syntax_set.find_syntax_plain_text())
354+ .unwrap_or_else(|_| self.assets.get_syntax_set().find_syntax_plain_text())
351 .name
355 .name
352 .clone()
356 .clone()
353 }
357 }
@@ -361,7 +365,7 @@ mod tests {
361
365
362 self.assets
366 self.assets
363 .get_syntax(None, &mut opened_input, &self.syntax_mapping)
367 .get_syntax(None, &mut opened_input, &self.syntax_mapping)
364− .unwrap_or_else(|_| self.assets.syntax_set.find_syntax_plain_text())
368+ .unwrap_or_else(|_| self.assets.get_syntax_set().find_syntax_plain_text())
365 .name
369 .name
366 .clone()
370 .clone()
367 }
371 }
@@ -385,7 +389,7 @@ mod tests {
385
389
386 self.assets
390 self.assets
387 .get_syntax(None, &mut opened_input, &self.syntax_mapping)
391 .get_syntax(None, &mut opened_input, &self.syntax_mapping)
388− .unwrap_or_else(|_| self.assets.syntax_set.find_syntax_plain_text())
392+ .unwrap_or_else(|_| self.assets.get_syntax_set().find_syntax_plain_text())
389 .name
393 .name
390 .clone()
394 .clone()
391 }
395 }
@@ -543,7 +547,7 @@ mod tests {
543 assert_eq!(
547 assert_eq!(
544 test.assets
548 test.assets
545 .get_syntax(None, &mut opened_input, &test.syntax_mapping)
549 .get_syntax(None, &mut opened_input, &test.syntax_mapping)
546− .unwrap_or_else(|_| test.assets.syntax_set.find_syntax_plain_text())
550+ .unwrap_or_else(|_| test.assets.get_syntax_set().find_syntax_plain_text())
547 .name,
551 .name,
548 "SSH Config"
552 "SSH Config"
549 );
553 );
src/printer.rs+2−2
@@ -174,7 +174,7 @@ impl<'a> InteractivePrinter<'a> {
174 let syntax = match assets.get_syntax(config.language, input, &config.syntax_mapping) {
174 let syntax = match assets.get_syntax(config.language, input, &config.syntax_mapping) {
175 Ok(syntax) => syntax,
175 Ok(syntax) => syntax,
176 Err(Error(ErrorKind::UndetectedSyntax(_), _)) => {
176 Err(Error(ErrorKind::UndetectedSyntax(_), _)) => {
177− assets.syntax_set.find_syntax_plain_text()
177+ assets.get_syntax_set().find_syntax_plain_text()
178 }
178 }
179 Err(e) => return Err(e),
179 Err(e) => return Err(e),
180 };
180 };
@@ -192,7 +192,7 @@ impl<'a> InteractivePrinter<'a> {
192 #[cfg(feature = "git")]
192 #[cfg(feature = "git")]
193 line_changes,
193 line_changes,
194 highlighter,
194 highlighter,
195− syntax_set: &assets.syntax_set,
195+ syntax_set: assets.get_syntax_set(),
196 background_color_highlight,
196 background_color_highlight,
197 })
197 })
198 }
198 }