lm::read_accumulate("Uses", uses_strings), | lm::read_accumulate("Uses", uses_strings), | ||||
lm::read_accumulate("Links", links_strings), | lm::read_accumulate("Links", links_strings), | ||||
lm::read_required("Name", ret.name), | lm::read_required("Name", ret.name), | ||||
lm::ignore_x_keys(), | |||||
lm::reject_unknown()); | lm::reject_unknown()); | ||||
extend(ret.uses, ranges::views::transform(uses_strings, lm::split_usage_string)); | extend(ret.uses, ranges::views::transform(uses_strings, lm::split_usage_string)); |
} | } | ||||
}; | }; | ||||
class ignore_x_keys { | |||||
public: | |||||
bool operator()(std::string_view, std::string_view key, std::string_view) const { | |||||
return key.find("X-") == 0; | |||||
} | |||||
}; | |||||
class reject_unknown { | class reject_unknown { | ||||
public: | public: | ||||
int operator()(std::string_view context, std::string_view key, std::string_view) const { | int operator()(std::string_view context, std::string_view key, std::string_view) const { |