{"font-size", css_property_type::PROPERTY_FONT_SIZE},
{"color", css_property_type::PROPERTY_COLOR},
{"bgcolor", css_property_type::PROPERTY_BGCOLOR},
+ {"background-color", css_property_type::PROPERTY_BGCOLOR},
{"background", css_property_type::PROPERTY_BACKGROUND},
{"height", css_property_type::PROPERTY_HEIGHT},
{"width", css_property_type::PROPERTY_WIDTH},
});
/* Ensure that we have all cases listed */
-static_assert(prop_names_map.size() == static_cast<int>(css_property_type::PROPERTY_NYI));
+static_assert(prop_names_map.size() >= static_cast<int>(css_property_type::PROPERTY_NYI));
auto token_string_to_property(const std::string_view &inp)
-> css_property_type
/* Replace all visible characters with spaces */
auto start = std::next(hc->parsed.begin(), cur_offset);
std::replace_if(start, std::end(hc->parsed), [](const auto c) {
- return g_ascii_isprint(c);
+ return !g_ascii_isspace(c);
}, ' ');
}
"<p style=\"font-size: 11px; line-height: 1.2; color: #555555; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; mso-line-height-alt: 14px; margin: 0;\">\n"
" </p>",
" Sincerely,\n Skype Web\n"},
+ /* bgcolor propagation */
+ {"<a style=\"display: inline-block; color: #ffffff; background-color: #00aff0;\">\n"
+ "<span style=\"color: #00aff0;\">F</span>Rev<span style=\"opacity: 1;\"></span></span>ie<span style=\"opacity: 1;\"></span>\n"
+ "</span>w<span style=\"color: #00aff0;\">F<span style=\"opacity: 1;\">ΜΉ</span></span>",
+ " Review"},
};
rspamd_url_init(NULL);
auto simple_prop = [&](auto mask_val, auto &our_val, auto other_val) constexpr -> void {
if (!(mask & mask_val) && (other.mask & mask_val)) {
our_val = other_val;
+ mask |= mask_val;
}
};
simple_prop(fg_color_mask, fg_color, other.fg_color);
simple_prop(bg_color_mask, bg_color, other.bg_color);
- simple_prop(display_mask, display, other.display);
+
+ if (other.has_display() && !other.is_visible()) {
+ simple_prop(display_mask, display, other.display);
+ mask |= other.mask&(transparent_flag|invisible_flag);
+ }
/* Sizes are very different
* We can have multiple cases: