MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / resolve_color_string

Function resolve_color_string

crates/opencode-tui/src/theme/mod.rs:501–536  ·  view source on GitHub ↗
(
    file: &ThemeFile,
    value: &str,
    mode: ThemeMode,
    stack: &mut Vec<String>,
)

Source from the content-addressed store, hash-verified

499}
500
501fn resolve_color_string(
502 file: &ThemeFile,
503 value: &str,
504 mode: ThemeMode,
505 stack: &mut Vec<String>,
506) -> Option<Color> {
507 let trimmed = value.trim();
508 if trimmed.eq_ignore_ascii_case("transparent")
509 || trimmed.eq_ignore_ascii_case("none")
510 || trimmed.starts_with('#')
511 {
512 return parse_color_literal(trimmed);
513 }
514
515 if let Some(v) = file.defs.get(trimmed) {
516 if stack.iter().any(|seen| seen == trimmed) {
517 return None;
518 }
519 stack.push(trimmed.to_string());
520 let resolved = resolve_color_value(file, v, mode, stack);
521 stack.pop();
522 return resolved;
523 }
524
525 if let Some(v) = file.theme.get(trimmed) {
526 if stack.iter().any(|seen| seen == trimmed) {
527 return None;
528 }
529 stack.push(trimmed.to_string());
530 let resolved = resolve_color_value(file, v, mode, stack);
531 stack.pop();
532 return resolved;
533 }
534
535 parse_color_literal(trimmed)
536}
537
538fn parse_color_literal(value: &str) -> Option<Color> {
539 let lowered = value.trim().to_ascii_lowercase();

Callers 1

resolve_color_valueFunction · 0.85

Calls 3

parse_color_literalFunction · 0.85
resolve_color_valueFunction · 0.85
getMethod · 0.45

Tested by

no test coverage detected