///|
pub fn TokenCatalog::colors(self : TokenCatalog) -> Array[CatalogEntry] {
self.by_kind(Color)
}
///|
pub fn TokenCatalog::numbers(self : TokenCatalog) -> Array[CatalogEntry] {
self.by_kind(Number)
}
///|
pub fn TokenCatalog::texts(self : TokenCatalog) -> Array[CatalogEntry] {
self.by_kind(Text)
}
///|
pub fn TokenCatalog::booleans(self : TokenCatalog) -> Array[CatalogEntry] {
self.by_kind(Boolean)
}
///|
pub fn TokenCatalog::names_for_query(
self : TokenCatalog,
query : String,
) -> Array[String] {
let result : Array[String] = []
for entry in self.search(query) {
result.push(entry.name)
}
result
}
///|
pub fn TokenCatalog::paths_for_prefix(
self : TokenCatalog,
prefix : String,
) -> Array[String] {
let result : Array[String] = []
for entry in self.by_prefix(prefix) {
result.push(entry.path)
}
result
}
///|
pub fn TokenCatalog::grouped_markdown(self : TokenCatalog) -> String {
let sections : Array[String] = []
let kinds = [Color, Number, Text, Boolean]
for kind in kinds {
let entries = self.by_kind(kind)
if entries.length() > 0 {
sections.push("### " + token_kind_name(kind))
sections.push("")
for entry in entries {
sections.push(
"- `" + entry.path + "`: " + theme_value_display(entry.value),
)
}
}
}
sections.join("\n")
}
///|
pub fn CatalogStats::summary(self : CatalogStats) -> String {
"total=" +
self.total.to_string() +
", colors=" +
self.color_count.to_string() +
", numbers=" +
self.number_count.to_string() +
", text=" +
self.text_count.to_string() +
", booleans=" +
self.boolean_count.to_string() +
", documented=" +
self.documentation_rate().to_string() +
"%"
}
///|
pub fn BrandBook::token_catalog_markdown(self : BrandBook) -> String {
TokenCatalog::from_brand_book(self).to_markdown()
}
///|
pub fn BrandBook::token_catalog_stats(self : BrandBook) -> CatalogStats {
TokenCatalog::from_brand_book(self).stats()
}
///|
pub fn BrandBook::search_tokens(
self : BrandBook,
query : String,
) -> Array[CatalogEntry] {
TokenCatalog::from_brand_book(self).search(query)
}