MCPcopy Create free account
hub / github.com/csskit/csskit / generate_feature_entry_tokens

Function generate_feature_entry_tokens

crates/csskit_spec_generator/src/codegen.rs:907–1008  ·  view source on GitHub ↗
(
	id: &str,
	feature_id: &str,
	feature: &FeatureData,
	compat_status: &crate::web_features_data::CompatKeyStatus,
	popularity_map: &HashMap<String, f64>,
	all_groups: &mut HashMap<String, HashSet<St

Source from the content-addressed store, hash-verified

905}
906
907fn generate_feature_entry_tokens(
908 id: &str,
909 feature_id: &str,
910 feature: &FeatureData,
911 compat_status: &crate::web_features_data::CompatKeyStatus,
912 popularity_map: &HashMap<String, f64>,
913 all_groups: &mut HashMap<String, HashSet<String>>,
914 all_specs: &mut HashMap<String, HashSet<String>>,
915) -> TokenStream {
916 let name = feature.name.as_deref().unwrap_or("");
917 let description = feature.description.as_deref().unwrap_or("");
918
919 let spec = if let Some(spec_val) = &feature.spec {
920 match spec_val {
921 StringOrArray::Single(s) => s.as_str(),
922 StringOrArray::Multiple(v) => v.first().map(|s| s.as_str()).unwrap_or(""),
923 }
924 } else {
925 ""
926 };
927
928 if !spec.is_empty()
929 && let Some(spec_val) = &feature.spec
930 {
931 match spec_val {
932 StringOrArray::Single(s) => {
933 all_specs.entry(s.clone()).or_default().insert(id.to_string());
934 }
935 StringOrArray::Multiple(v) => {
936 for s in v {
937 all_specs.entry(s.clone()).or_default().insert(id.to_string());
938 }
939 }
940 }
941 }
942
943 let groups: Vec<&str> = if let Some(group_val) = &feature.group {
944 match group_val {
945 StringOrArray::Single(s) => {
946 if !s.is_empty() && s != "css" {
947 all_groups.entry(s.clone()).or_default().insert(id.to_string());
948 vec![s.as_str()]
949 } else {
950 vec![]
951 }
952 }
953 StringOrArray::Multiple(v) => v
954 .iter()
955 .filter(|g| !g.is_empty() && g.as_str() != "css")
956 .map(|g| {
957 all_groups.entry(g.clone()).or_default().insert(id.to_string());
958 g.as_str()
959 })
960 .collect(),
961 }
962 } else {
963 vec![]
964 };

Callers 1

generate_feature_dataFunction · 0.85

Calls 9

cloneMethod · 0.80
collectMethod · 0.80
iterMethod · 0.80
as_strMethod · 0.45
is_emptyMethod · 0.45
insertMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected