Browse Source

[Project] Css: Further steps to parse css colors + rework

tags/3.0
Vsevolod Stakhov 3 years ago
parent
commit
11cf522ed3

+ 737
- 0
src/libserver/css/css_colors_list.hxx View File

@@ -0,0 +1,737 @@
/*-
* Copyright 2021 Vsevolod Stakhov
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef RSPAMD_CSS_COLORS_LIST_HXX
#define RSPAMD_CSS_COLORS_LIST_HXX

#pragma once

#include <string_view>
#include "contrib/robin-hood/robin_hood.h"
#include "css_value.hxx"

namespace rspamd::css {

/*
* List of all colors, intended to use with hashes/sets
* TODO: think about frozen structs when we can deal with 700 values without
* compiler limits...
*/
static const robin_hood::unordered_flat_map<std::string_view, css_color> css_colors_map{
{"aliceblue", {240, 248, 255}},
{"antiquewhite", {250, 235, 215}},
{"antiquewhite1", {255, 239, 219}},
{"antiquewhite2", {238, 223, 204}},
{"antiquewhite3", {205, 192, 176}},
{"antiquewhite4", {139, 131, 120}},
{"aqua", {0, 255, 255}},
{"aquamarine", {127, 255, 212}},
{"aquamarine1", {127, 255, 212}},
{"aquamarine2", {118, 238, 198}},
{"aquamarine3", {102, 205, 170}},
{"aquamarine4", {69, 139, 116}},
{"azure", {240, 255, 255}},
{"azure1", {240, 255, 255}},
{"azure2", {224, 238, 238}},
{"azure3", {193, 205, 205}},
{"azure4", {131, 139, 139}},
{"beige", {245, 245, 220}},
{"bisque", {255, 228, 196}},
{"bisque1", {255, 228, 196}},
{"bisque2", {238, 213, 183}},
{"bisque3", {205, 183, 158}},
{"bisque4", {139, 125, 107}},
{"black", {0, 0, 0}},
{"blanchedalmond", {255, 235, 205}},
{"blue", {0, 0, 255}},
{"blue1", {0, 0, 255}},
{"blue2", {0, 0, 238}},
{"blue3", {0, 0, 205}},
{"blue4", {0, 0, 139}},
{"blueviolet", {138, 43, 226}},
{"brown", {165, 42, 42}},
{"brown1", {255, 64, 64}},
{"brown2", {238, 59, 59}},
{"brown3", {205, 51, 51}},
{"brown4", {139, 35, 35}},
{"burlywood", {222, 184, 135}},
{"burlywood1", {255, 211, 155}},
{"burlywood2", {238, 197, 145}},
{"burlywood3", {205, 170, 125}},
{"burlywood4", {139, 115, 85}},
{"cadetblue", {95, 158, 160}},
{"cadetblue1", {152, 245, 255}},
{"cadetblue2", {142, 229, 238}},
{"cadetblue3", {122, 197, 205}},
{"cadetblue4", {83, 134, 139}},
{"chartreuse", {127, 255, 0}},
{"chartreuse1", {127, 255, 0}},
{"chartreuse2", {118, 238, 0}},
{"chartreuse3", {102, 205, 0}},
{"chartreuse4", {69, 139, 0}},
{"chocolate", {210, 105, 30}},
{"chocolate1", {255, 127, 36}},
{"chocolate2", {238, 118, 33}},
{"chocolate3", {205, 102, 29}},
{"chocolate4", {139, 69, 19}},
{"coral", {255, 127, 80}},
{"coral1", {255, 114, 86}},
{"coral2", {238, 106, 80}},
{"coral3", {205, 91, 69}},
{"coral4", {139, 62, 47}},
{"cornflowerblue", {100, 149, 237}},
{"cornsilk", {255, 248, 220}},
{"cornsilk1", {255, 248, 220}},
{"cornsilk2", {238, 232, 205}},
{"cornsilk3", {205, 200, 177}},
{"cornsilk4", {139, 136, 120}},
{"crimson", {220, 20, 60}},
{"cyan", {0, 255, 255}},
{"cyan1", {0, 255, 255}},
{"cyan2", {0, 238, 238}},
{"cyan3", {0, 205, 205}},
{"cyan4", {0, 139, 139}},
{"darkblue", {0, 0, 139}},
{"darkcyan", {0, 139, 139}},
{"darkgoldenrod", {184, 134, 11}},
{"darkgoldenrod1", {255, 185, 15}},
{"darkgoldenrod2", {238, 173, 14}},
{"darkgoldenrod3", {205, 149, 12}},
{"darkgoldenrod4", {139, 101, 8}},
{"darkgray", {169, 169, 169}},
{"darkgreen", {0, 100, 0}},
{"darkgrey", {169, 169, 169}},
{"darkkhaki", {189, 183, 107}},
{"darkmagenta", {139, 0, 139}},
{"darkolivegreen", {85, 107, 47}},
{"darkolivegreen1", {202, 255, 112}},
{"darkolivegreen2", {188, 238, 104}},
{"darkolivegreen3", {162, 205, 90}},
{"darkolivegreen4", {110, 139, 61}},
{"darkorange", {255, 140, 0}},
{"darkorange1", {255, 127, 0}},
{"darkorange2", {238, 118, 0}},
{"darkorange3", {205, 102, 0}},
{"darkorange4", {139, 69, 0}},
{"darkorchid", {153, 50, 204}},
{"darkorchid1", {191, 62, 255}},
{"darkorchid2", {178, 58, 238}},
{"darkorchid3", {154, 50, 205}},
{"darkorchid4", {104, 34, 139}},
{"darkred", {139, 0, 0}},
{"darksalmon", {233, 150, 122}},
{"darkseagreen", {143, 188, 143}},
{"darkseagreen1", {193, 255, 193}},
{"darkseagreen2", {180, 238, 180}},
{"darkseagreen3", {155, 205, 155}},
{"darkseagreen4", {105, 139, 105}},
{"darkslateblue", {72, 61, 139}},
{"darkslategray", {47, 79, 79}},
{"darkslategray1", {151, 255, 255}},
{"darkslategray2", {141, 238, 238}},
{"darkslategray3", {121, 205, 205}},
{"darkslategray4", {82, 139, 139}},
{"darkslategrey", {47, 79, 79}},
{"darkturquoise", {0, 206, 209}},
{"darkviolet", {148, 0, 211}},
{"deeppink", {255, 20, 147}},
{"deeppink1", {255, 20, 147}},
{"deeppink2", {238, 18, 137}},
{"deeppink3", {205, 16, 118}},
{"deeppink4", {139, 10, 80}},
{"deepskyblue", {0, 191, 255}},
{"deepskyblue1", {0, 191, 255}},
{"deepskyblue2", {0, 178, 238}},
{"deepskyblue3", {0, 154, 205}},
{"deepskyblue4", {0, 104, 139}},
{"dimgray", {105, 105, 105}},
{"dimgrey", {105, 105, 105}},
{"dodgerblue", {30, 144, 255}},
{"dodgerblue1", {30, 144, 255}},
{"dodgerblue2", {28, 134, 238}},
{"dodgerblue3", {24, 116, 205}},
{"dodgerblue4", {16, 78, 139}},
{"firebrick", {178, 34, 34}},
{"firebrick1", {255, 48, 48}},
{"firebrick2", {238, 44, 44}},
{"firebrick3", {205, 38, 38}},
{"firebrick4", {139, 26, 26}},
{"floralwhite", {255, 250, 240}},
{"forestgreen", {34, 139, 34}},
{"fuchsia", {255, 0, 255}},
{"gainsboro", {220, 220, 220}},
{"ghostwhite", {248, 248, 255}},
{"gold", {255, 215, 0}},
{"gold1", {255, 215, 0}},
{"gold2", {238, 201, 0}},
{"gold3", {205, 173, 0}},
{"gold4", {139, 117, 0}},
{"goldenrod", {218, 165, 32}},
{"goldenrod1", {255, 193, 37}},
{"goldenrod2", {238, 180, 34}},
{"goldenrod3", {205, 155, 29}},
{"goldenrod4", {139, 105, 20}},
{"gray", {190, 190, 190}},
{"gray0", {0, 0, 0}},
{"gray1", {3, 3, 3}},
{"gray10", {26, 26, 26}},
{"gray100", {255, 255, 255}},
{"gray11", {28, 28, 28}},
{"gray12", {31, 31, 31}},
{"gray13", {33, 33, 33}},
{"gray14", {36, 36, 36}},
{"gray15", {38, 38, 38}},
{"gray16", {41, 41, 41}},
{"gray17", {43, 43, 43}},
{"gray18", {46, 46, 46}},
{"gray19", {48, 48, 48}},
{"gray2", {5, 5, 5}},
{"gray20", {51, 51, 51}},
{"gray21", {54, 54, 54}},
{"gray22", {56, 56, 56}},
{"gray23", {59, 59, 59}},
{"gray24", {61, 61, 61}},
{"gray25", {64, 64, 64}},
{"gray26", {66, 66, 66}},
{"gray27", {69, 69, 69}},
{"gray28", {71, 71, 71}},
{"gray29", {74, 74, 74}},
{"gray3", {8, 8, 8}},
{"gray30", {77, 77, 77}},
{"gray31", {79, 79, 79}},
{"gray32", {82, 82, 82}},
{"gray33", {84, 84, 84}},
{"gray34", {87, 87, 87}},
{"gray35", {89, 89, 89}},
{"gray36", {92, 92, 92}},
{"gray37", {94, 94, 94}},
{"gray38", {97, 97, 97}},
{"gray39", {99, 99, 99}},
{"gray4", {10, 10, 10}},
{"gray40", {102, 102, 102}},
{"gray41", {105, 105, 105}},
{"gray42", {107, 107, 107}},
{"gray43", {110, 110, 110}},
{"gray44", {112, 112, 112}},
{"gray45", {115, 115, 115}},
{"gray46", {117, 117, 117}},
{"gray47", {120, 120, 120}},
{"gray48", {122, 122, 122}},
{"gray49", {125, 125, 125}},
{"gray5", {13, 13, 13}},
{"gray50", {127, 127, 127}},
{"gray51", {130, 130, 130}},
{"gray52", {133, 133, 133}},
{"gray53", {135, 135, 135}},
{"gray54", {138, 138, 138}},
{"gray55", {140, 140, 140}},
{"gray56", {143, 143, 143}},
{"gray57", {145, 145, 145}},
{"gray58", {148, 148, 148}},
{"gray59", {150, 150, 150}},
{"gray6", {15, 15, 15}},
{"gray60", {153, 153, 153}},
{"gray61", {156, 156, 156}},
{"gray62", {158, 158, 158}},
{"gray63", {161, 161, 161}},
{"gray64", {163, 163, 163}},
{"gray65", {166, 166, 166}},
{"gray66", {168, 168, 168}},
{"gray67", {171, 171, 171}},
{"gray68", {173, 173, 173}},
{"gray69", {176, 176, 176}},
{"gray7", {18, 18, 18}},
{"gray70", {179, 179, 179}},
{"gray71", {181, 181, 181}},
{"gray72", {184, 184, 184}},
{"gray73", {186, 186, 186}},
{"gray74", {189, 189, 189}},
{"gray75", {191, 191, 191}},
{"gray76", {194, 194, 194}},
{"gray77", {196, 196, 196}},
{"gray78", {199, 199, 199}},
{"gray79", {201, 201, 201}},
{"gray8", {20, 20, 20}},
{"gray80", {204, 204, 204}},
{"gray81", {207, 207, 207}},
{"gray82", {209, 209, 209}},
{"gray83", {212, 212, 212}},
{"gray84", {214, 214, 214}},
{"gray85", {217, 217, 217}},
{"gray86", {219, 219, 219}},
{"gray87", {222, 222, 222}},
{"gray88", {224, 224, 224}},
{"gray89", {227, 227, 227}},
{"gray9", {23, 23, 23}},
{"gray90", {229, 229, 229}},
{"gray91", {232, 232, 232}},
{"gray92", {235, 235, 235}},
{"gray93", {237, 237, 237}},
{"gray94", {240, 240, 240}},
{"gray95", {242, 242, 242}},
{"gray96", {245, 245, 245}},
{"gray97", {247, 247, 247}},
{"gray98", {250, 250, 250}},
{"gray99", {252, 252, 252}},
{"green", {0, 255, 0}},
{"green1", {0, 255, 0}},
{"green2", {0, 238, 0}},
{"green3", {0, 205, 0}},
{"green4", {0, 139, 0}},
{"greenyellow", {173, 255, 47}},
{"grey", {190, 190, 190}},
{"grey0", {0, 0, 0}},
{"grey1", {3, 3, 3}},
{"grey10", {26, 26, 26}},
{"grey100", {255, 255, 255}},
{"grey11", {28, 28, 28}},
{"grey12", {31, 31, 31}},
{"grey13", {33, 33, 33}},
{"grey14", {36, 36, 36}},
{"grey15", {38, 38, 38}},
{"grey16", {41, 41, 41}},
{"grey17", {43, 43, 43}},
{"grey18", {46, 46, 46}},
{"grey19", {48, 48, 48}},
{"grey2", {5, 5, 5}},
{"grey20", {51, 51, 51}},
{"grey21", {54, 54, 54}},
{"grey22", {56, 56, 56}},
{"grey23", {59, 59, 59}},
{"grey24", {61, 61, 61}},
{"grey25", {64, 64, 64}},
{"grey26", {66, 66, 66}},
{"grey27", {69, 69, 69}},
{"grey28", {71, 71, 71}},
{"grey29", {74, 74, 74}},
{"grey3", {8, 8, 8}},
{"grey30", {77, 77, 77}},
{"grey31", {79, 79, 79}},
{"grey32", {82, 82, 82}},
{"grey33", {84, 84, 84}},
{"grey34", {87, 87, 87}},
{"grey35", {89, 89, 89}},
{"grey36", {92, 92, 92}},
{"grey37", {94, 94, 94}},
{"grey38", {97, 97, 97}},
{"grey39", {99, 99, 99}},
{"grey4", {10, 10, 10}},
{"grey40", {102, 102, 102}},
{"grey41", {105, 105, 105}},
{"grey42", {107, 107, 107}},
{"grey43", {110, 110, 110}},
{"grey44", {112, 112, 112}},
{"grey45", {115, 115, 115}},
{"grey46", {117, 117, 117}},
{"grey47", {120, 120, 120}},
{"grey48", {122, 122, 122}},
{"grey49", {125, 125, 125}},
{"grey5", {13, 13, 13}},
{"grey50", {127, 127, 127}},
{"grey51", {130, 130, 130}},
{"grey52", {133, 133, 133}},
{"grey53", {135, 135, 135}},
{"grey54", {138, 138, 138}},
{"grey55", {140, 140, 140}},
{"grey56", {143, 143, 143}},
{"grey57", {145, 145, 145}},
{"grey58", {148, 148, 148}},
{"grey59", {150, 150, 150}},
{"grey6", {15, 15, 15}},
{"grey60", {153, 153, 153}},
{"grey61", {156, 156, 156}},
{"grey62", {158, 158, 158}},
{"grey63", {161, 161, 161}},
{"grey64", {163, 163, 163}},
{"grey65", {166, 166, 166}},
{"grey66", {168, 168, 168}},
{"grey67", {171, 171, 171}},
{"grey68", {173, 173, 173}},
{"grey69", {176, 176, 176}},
{"grey7", {18, 18, 18}},
{"grey70", {179, 179, 179}},
{"grey71", {181, 181, 181}},
{"grey72", {184, 184, 184}},
{"grey73", {186, 186, 186}},
{"grey74", {189, 189, 189}},
{"grey75", {191, 191, 191}},
{"grey76", {194, 194, 194}},
{"grey77", {196, 196, 196}},
{"grey78", {199, 199, 199}},
{"grey79", {201, 201, 201}},
{"grey8", {20, 20, 20}},
{"grey80", {204, 204, 204}},
{"grey81", {207, 207, 207}},
{"grey82", {209, 209, 209}},
{"grey83", {212, 212, 212}},
{"grey84", {214, 214, 214}},
{"grey85", {217, 217, 217}},
{"grey86", {219, 219, 219}},
{"grey87", {222, 222, 222}},
{"grey88", {224, 224, 224}},
{"grey89", {227, 227, 227}},
{"grey9", {23, 23, 23}},
{"grey90", {229, 229, 229}},
{"grey91", {232, 232, 232}},
{"grey92", {235, 235, 235}},
{"grey93", {237, 237, 237}},
{"grey94", {240, 240, 240}},
{"grey95", {242, 242, 242}},
{"grey96", {245, 245, 245}},
{"grey97", {247, 247, 247}},
{"grey98", {250, 250, 250}},
{"grey99", {252, 252, 252}},
{"honeydew", {240, 255, 240}},
{"honeydew1", {240, 255, 240}},
{"honeydew2", {224, 238, 224}},
{"honeydew3", {193, 205, 193}},
{"honeydew4", {131, 139, 131}},
{"hotpink", {255, 105, 180}},
{"hotpink1", {255, 110, 180}},
{"hotpink2", {238, 106, 167}},
{"hotpink3", {205, 96, 144}},
{"hotpink4", {139, 58, 98}},
{"indianred", {205, 92, 92}},
{"indianred1", {255, 106, 106}},
{"indianred2", {238, 99, 99}},
{"indianred3", {205, 85, 85}},
{"indianred4", {139, 58, 58}},
{"indigo", {75, 0, 130}},
{"ivory", {255, 255, 240}},
{"ivory1", {255, 255, 240}},
{"ivory2", {238, 238, 224}},
{"ivory3", {205, 205, 193}},
{"ivory4", {139, 139, 131}},
{"khaki", {240, 230, 140}},
{"khaki1", {255, 246, 143}},
{"khaki2", {238, 230, 133}},
{"khaki3", {205, 198, 115}},
{"khaki4", {139, 134, 78}},
{"lavender", {230, 230, 250}},
{"lavenderblush", {255, 240, 245}},
{"lavenderblush1", {255, 240, 245}},
{"lavenderblush2", {238, 224, 229}},
{"lavenderblush3", {205, 193, 197}},
{"lavenderblush4", {139, 131, 134}},
{"lawngreen", {124, 252, 0}},
{"lemonchiffon", {255, 250, 205}},
{"lemonchiffon1", {255, 250, 205}},
{"lemonchiffon2", {238, 233, 191}},
{"lemonchiffon3", {205, 201, 165}},
{"lemonchiffon4", {139, 137, 112}},
{"lightblue", {173, 216, 230}},
{"lightblue1", {191, 239, 255}},
{"lightblue2", {178, 223, 238}},
{"lightblue3", {154, 192, 205}},
{"lightblue4", {104, 131, 139}},
{"lightcoral", {240, 128, 128}},
{"lightcyan", {224, 255, 255}},
{"lightcyan1", {224, 255, 255}},
{"lightcyan2", {209, 238, 238}},
{"lightcyan3", {180, 205, 205}},
{"lightcyan4", {122, 139, 139}},
{"lightgoldenrod", {238, 221, 130}},
{"lightgoldenrod1", {255, 236, 139}},
{"lightgoldenrod2", {238, 220, 130}},
{"lightgoldenrod3", {205, 190, 112}},
{"lightgoldenrod4", {139, 129, 76}},
{"lightgoldenrodyellow", {250, 250, 210}},
{"lightgray", {211, 211, 211}},
{"lightgreen", {144, 238, 144}},
{"lightgrey", {211, 211, 211}},
{"lightpink", {255, 182, 193}},
{"lightpink1", {255, 174, 185}},
{"lightpink2", {238, 162, 173}},
{"lightpink3", {205, 140, 149}},
{"lightpink4", {139, 95, 101}},
{"lightsalmon", {255, 160, 122}},
{"lightsalmon1", {255, 160, 122}},
{"lightsalmon2", {238, 149, 114}},
{"lightsalmon3", {205, 129, 98}},
{"lightsalmon4", {139, 87, 66}},
{"lightseagreen", {32, 178, 170}},
{"lightskyblue", {135, 206, 250}},
{"lightskyblue1", {176, 226, 255}},
{"lightskyblue2", {164, 211, 238}},
{"lightskyblue3", {141, 182, 205}},
{"lightskyblue4", {96, 123, 139}},
{"lightslateblue", {132, 112, 255}},
{"lightslategray", {119, 136, 153}},
{"lightslategrey", {119, 136, 153}},
{"lightsteelblue", {176, 196, 222}},
{"lightsteelblue1", {202, 225, 255}},
{"lightsteelblue2", {188, 210, 238}},
{"lightsteelblue3", {162, 181, 205}},
{"lightsteelblue4", {110, 123, 139}},
{"lightyellow", {255, 255, 224}},
{"lightyellow1", {255, 255, 224}},
{"lightyellow2", {238, 238, 209}},
{"lightyellow3", {205, 205, 180}},
{"lightyellow4", {139, 139, 122}},
{"lime", {0, 255, 0}},
{"limegreen", {50, 205, 50}},
{"linen", {250, 240, 230}},
{"magenta", {255, 0, 255}},
{"magenta1", {255, 0, 255}},
{"magenta2", {238, 0, 238}},
{"magenta3", {205, 0, 205}},
{"magenta4", {139, 0, 139}},
{"maroon", {176, 48, 96}},
{"maroon1", {255, 52, 179}},
{"maroon2", {238, 48, 167}},
{"maroon3", {205, 41, 144}},
{"maroon4", {139, 28, 98}},
{"mediumaquamarine", {102, 205, 170}},
{"mediumblue", {0, 0, 205}},
{"mediumorchid", {186, 85, 211}},
{"mediumorchid1", {224, 102, 255}},
{"mediumorchid2", {209, 95, 238}},
{"mediumorchid3", {180, 82, 205}},
{"mediumorchid4", {122, 55, 139}},
{"mediumpurple", {147, 112, 219}},
{"mediumpurple1", {171, 130, 255}},
{"mediumpurple2", {159, 121, 238}},
{"mediumpurple3", {137, 104, 205}},
{"mediumpurple4", {93, 71, 139}},
{"mediumseagreen", {60, 179, 113}},
{"mediumslateblue", {123, 104, 238}},
{"mediumspringgreen", {0, 250, 154}},
{"mediumturquoise", {72, 209, 204}},
{"mediumvioletred", {199, 21, 133}},
{"midnightblue", {25, 25, 112}},
{"mintcream", {245, 255, 250}},
{"mistyrose", {255, 228, 225}},
{"mistyrose1", {255, 228, 225}},
{"mistyrose2", {238, 213, 210}},
{"mistyrose3", {205, 183, 181}},
{"mistyrose4", {139, 125, 123}},
{"moccasin", {255, 228, 181}},
{"navajowhite", {255, 222, 173}},
{"navajowhite1", {255, 222, 173}},
{"navajowhite2", {238, 207, 161}},
{"navajowhite3", {205, 179, 139}},
{"navajowhite4", {139, 121, 94}},
{"navy", {0, 0, 128}},
{"navyblue", {0, 0, 128}},
{"oldlace", {253, 245, 230}},
{"olive", {128, 128, 0}},
{"olivedrab", {107, 142, 35}},
{"olivedrab1", {192, 255, 62}},
{"olivedrab2", {179, 238, 58}},
{"olivedrab3", {154, 205, 50}},
{"olivedrab4", {105, 139, 34}},
{"orange", {255, 165, 0}},
{"orange1", {255, 165, 0}},
{"orange2", {238, 154, 0}},
{"orange3", {205, 133, 0}},
{"orange4", {139, 90, 0}},
{"orangered", {255, 69, 0}},
{"orangered1", {255, 69, 0}},
{"orangered2", {238, 64, 0}},
{"orangered3", {205, 55, 0}},
{"orangered4", {139, 37, 0}},
{"orchid", {218, 112, 214}},
{"orchid1", {255, 131, 250}},
{"orchid2", {238, 122, 233}},
{"orchid3", {205, 105, 201}},
{"orchid4", {139, 71, 137}},
{"palegoldenrod", {238, 232, 170}},
{"palegreen", {152, 251, 152}},
{"palegreen1", {154, 255, 154}},
{"palegreen2", {144, 238, 144}},
{"palegreen3", {124, 205, 124}},
{"palegreen4", {84, 139, 84}},
{"paleturquoise", {175, 238, 238}},
{"paleturquoise1", {187, 255, 255}},
{"paleturquoise2", {174, 238, 238}},
{"paleturquoise3", {150, 205, 205}},
{"paleturquoise4", {102, 139, 139}},
{"palevioletred", {219, 112, 147}},
{"palevioletred1", {255, 130, 171}},
{"palevioletred2", {238, 121, 159}},
{"palevioletred3", {205, 104, 137}},
{"palevioletred4", {139, 71, 93}},
{"papayawhip", {255, 239, 213}},
{"peachpuff", {255, 218, 185}},
{"peachpuff1", {255, 218, 185}},
{"peachpuff2", {238, 203, 173}},
{"peachpuff3", {205, 175, 149}},
{"peachpuff4", {139, 119, 101}},
{"peru", {205, 133, 63}},
{"pink", {255, 192, 203}},
{"pink1", {255, 181, 197}},
{"pink2", {238, 169, 184}},
{"pink3", {205, 145, 158}},
{"pink4", {139, 99, 108}},
{"plum", {221, 160, 221}},
{"plum1", {255, 187, 255}},
{"plum2", {238, 174, 238}},
{"plum3", {205, 150, 205}},
{"plum4", {139, 102, 139}},
{"powderblue", {176, 224, 230}},
{"purple", {160, 32, 240}},
{"purple1", {155, 48, 255}},
{"purple2", {145, 44, 238}},
{"purple3", {125, 38, 205}},
{"purple4", {85, 26, 139}},
{"rebeccapurple", {102, 51, 153}},
{"red", {255, 0, 0}},
{"red1", {255, 0, 0}},
{"red2", {238, 0, 0}},
{"red3", {205, 0, 0}},
{"red4", {139, 0, 0}},
{"rosybrown", {188, 143, 143}},
{"rosybrown1", {255, 193, 193}},
{"rosybrown2", {238, 180, 180}},
{"rosybrown3", {205, 155, 155}},
{"rosybrown4", {139, 105, 105}},
{"royalblue", {65, 105, 225}},
{"royalblue1", {72, 118, 255}},
{"royalblue2", {67, 110, 238}},
{"royalblue3", {58, 95, 205}},
{"royalblue4", {39, 64, 139}},
{"saddlebrown", {139, 69, 19}},
{"salmon", {250, 128, 114}},
{"salmon1", {255, 140, 105}},
{"salmon2", {238, 130, 98}},
{"salmon3", {205, 112, 84}},
{"salmon4", {139, 76, 57}},
{"sandybrown", {244, 164, 96}},
{"seagreen", {46, 139, 87}},
{"seagreen1", {84, 255, 159}},
{"seagreen2", {78, 238, 148}},
{"seagreen3", {67, 205, 128}},
{"seagreen4", {46, 139, 87}},
{"seashell", {255, 245, 238}},
{"seashell1", {255, 245, 238}},
{"seashell2", {238, 229, 222}},
{"seashell3", {205, 197, 191}},
{"seashell4", {139, 134, 130}},
{"sienna", {160, 82, 45}},
{"sienna1", {255, 130, 71}},
{"sienna2", {238, 121, 66}},
{"sienna3", {205, 104, 57}},
{"sienna4", {139, 71, 38}},
{"silver", {192, 192, 192}},
{"skyblue", {135, 206, 235}},
{"skyblue1", {135, 206, 255}},
{"skyblue2", {126, 192, 238}},
{"skyblue3", {108, 166, 205}},
{"skyblue4", {74, 112, 139}},
{"slateblue", {106, 90, 205}},
{"slateblue1", {131, 111, 255}},
{"slateblue2", {122, 103, 238}},
{"slateblue3", {105, 89, 205}},
{"slateblue4", {71, 60, 139}},
{"slategray", {112, 128, 144}},
{"slategray1", {198, 226, 255}},
{"slategray2", {185, 211, 238}},
{"slategray3", {159, 182, 205}},
{"slategray4", {108, 123, 139}},
{"slategrey", {112, 128, 144}},
{"snow", {255, 250, 250}},
{"snow1", {255, 250, 250}},
{"snow2", {238, 233, 233}},
{"snow3", {205, 201, 201}},
{"snow4", {139, 137, 137}},
{"springgreen", {0, 255, 127}},
{"springgreen1", {0, 255, 127}},
{"springgreen2", {0, 238, 118}},
{"springgreen3", {0, 205, 102}},
{"springgreen4", {0, 139, 69}},
{"steelblue", {70, 130, 180}},
{"steelblue1", {99, 184, 255}},
{"steelblue2", {92, 172, 238}},
{"steelblue3", {79, 148, 205}},
{"steelblue4", {54, 100, 139}},
{"tan", {210, 180, 140}},
{"tan1", {255, 165, 79}},
{"tan2", {238, 154, 73}},
{"tan3", {205, 133, 63}},
{"tan4", {139, 90, 43}},
{"teal", {0, 128, 128}},
{"thistle", {216, 191, 216}},
{"thistle1", {255, 225, 255}},
{"thistle2", {238, 210, 238}},
{"thistle3", {205, 181, 205}},
{"thistle4", {139, 123, 139}},
{"tomato", {255, 99, 71}},
{"tomato1", {255, 99, 71}},
{"tomato2", {238, 92, 66}},
{"tomato3", {205, 79, 57}},
{"tomato4", {139, 54, 38}},
{"turquoise", {64, 224, 208}},
{"turquoise1", {0, 245, 255}},
{"turquoise2", {0, 229, 238}},
{"turquoise3", {0, 197, 205}},
{"turquoise4", {0, 134, 139}},
{"violet", {238, 130, 238}},
{"violetred", {208, 32, 144}},
{"violetred1", {255, 62, 150}},
{"violetred2", {238, 58, 140}},
{"violetred3", {205, 50, 120}},
{"violetred4", {139, 34, 82}},
{"webgray", {128, 128, 128}},
{"webgreen", {0, 128, 0}},
{"webgrey", {128, 128, 128}},
{"webmaroon", {128, 0, 0}},
{"webpurple", {128, 0, 128}},
{"wheat", {245, 222, 179}},
{"wheat1", {255, 231, 186}},
{"wheat2", {238, 216, 174}},
{"wheat3", {205, 186, 150}},
{"wheat4", {139, 126, 102}},
{"white", {255, 255, 255}},
{"whitesmoke", {245, 245, 245}},
{"x11gray", {190, 190, 190}},
{"x11green", {0, 255, 0}},
{"x11grey", {190, 190, 190}},
{"x11maroon", {176, 48, 96}},
{"x11purple", {160, 32, 240}},
{"yellow", {255, 255, 0}},
{"yellow1", {255, 255, 0}},
{"yellow2", {238, 238, 0}},
{"yellow3", {205, 205, 0}},
{"yellow4", {139, 139, 0}},
{"yellowgreen", {154, 205, 50}},
{"activeborder", {180, 180, 180}},
{"activecaption", {153, 180, 209}},
{"appworkspace", {171, 171, 171}},
{"background", {0, 0, 0}},
{"buttonhighlight", {255, 255, 255}},
{"buttonshadow", {160, 160, 160}},
{"captiontext", {0, 0, 0}},
{"inactiveborder", {244, 247, 252}},
{"inactivecaption", {191, 205, 219}},
{"inactivecaptiontext", {0, 0, 0}},
{"infobackground", {255, 255, 225}},
{"infotext", {0, 0, 0}},
{"menu", {240, 240, 240}},
{"menutext", {0, 0, 0}},
{"scrollbar", {200, 200, 200}},
{"threeddarkshadow", {0, 0, 0}},
{"threedface", {0, 0, 0}},
{"threedhighlight", {0, 0, 0}},
{"threedlightshadow", {0, 0, 0}},
{"threedshadow", {0, 0, 0}},
{"window", {255, 255, 255}},
{"windowframe", {100, 100, 100}},
{"windowtext", {0, 0, 0}},
};

}

#endif //RSPAMD_CSS_COLORS_LIST_HXX

+ 35
- 0
src/libserver/css/css_property.hxx View File

@@ -45,6 +45,41 @@ struct css_property {
css_property_type type;
static tl::expected<css_property,css_parse_error> from_token(
const css_parser_token &tok);

constexpr auto to_string(void) const -> const char * {
const char *ret = "nyi";

switch(type) {
case css_property_type::PROPERTY_FONT:
ret = "font";
break;
case css_property_type::PROPERTY_COLOR:
ret = "color";
break;
case css_property_type::PROPERTY_BGCOLOR:
ret = "bgcolor";
break;
case css_property_type::PROPERTY_BACKGROUND:
ret = "background";
break;
case css_property_type::PROPERTY_HEIGHT:
ret = "height";
break;
case css_property_type::PROPERTY_WIDTH:
ret = "width";
break;
case css_property_type::PROPERTY_DISPLAY:
ret = "display";
break;
case css_property_type::PROPERTY_VISIBILITY:
ret = "visibility";
break;
default:
break;
}

return ret;
}
};



+ 2
- 0
src/libserver/css/css_rule.cxx View File

@@ -49,6 +49,8 @@ auto process_declaration_tokens(rspamd_mempool_t *pool,
continue;
}

msg_debug_css("got css property: %s", cur_property.to_string());

/* We now expect colon block */
const auto &expect_colon_block = next_block_functor();


+ 15
- 0
src/libserver/css/css_value.cxx View File

@@ -15,13 +15,28 @@
*/

#include "css_value.hxx"
#include "css_colors_list.hxx"
#include "contrib/robin-hood/robin_hood.h"

namespace rspamd::css {



tl::expected<css_value,css_parse_error>
css_value::from_css_block(const css_consumed_block &bl)
{
return tl::unexpected{css_parse_error(css_parse_error_type::PARSE_ERROR_NYI)};
}

auto css_value::maybe_color_from_string(const std::string_view &input)
-> std::optional<css_value>
{
auto found_it = css_colors_map.find(input);

if (found_it != css_colors_map.end()) {

}

return std::nullopt;
}
}

+ 23
- 19
src/libserver/css/css_value.hxx View File

@@ -29,12 +29,23 @@

namespace rspamd::css {

struct alignas(int) css_color {
std::uint8_t r;
std::uint8_t g;
std::uint8_t b;

std::uint8_t alpha;

constexpr css_color(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _alpha = 255) :
r(_r), g(_g), b(_b), alpha(_alpha) {}
};

/*
* Simple enum class for display stuff
*/
enum class css_display_value {
DISPLAY_NORMAL,
DISPLAY_
DISPLAY_HIDDEN
};

/*
@@ -54,27 +65,25 @@ struct css_value {
enum class css_value_type {
CSS_VALUE_COLOR,
CSS_VALUE_SIZE,
CSS_VALUE_STRING,
CSS_VALUE_DISPLAY,
CSS_VALUE_FLAG,
CSS_VALUE_NYI,
} type;

std::variant<struct html_color,
std::variant<css_color,
double,
std::string,
css_display_value,
css_flag_value> value;

constexpr std::optional<struct html_color> to_color (void) const {
constexpr std::optional<css_color> to_color(void) const {
if (type == css_value_type::CSS_VALUE_COLOR) {
return std::get<struct html_color>(value);
return std::get<css_color>(value);
}

return std::nullopt;
}

constexpr std::optional<double> to_size (void) const {
constexpr std::optional<double> to_size(void) const {
if (type == css_value_type::CSS_VALUE_SIZE) {
return std::get<double>(value);
}
@@ -82,7 +91,7 @@ struct css_value {
return std::nullopt;
}

constexpr std::optional<css_display_value> to_display (void) const {
constexpr std::optional<css_display_value> to_display(void) const {
if (type == css_value_type::CSS_VALUE_DISPLAY) {
return std::get<css_display_value>(value);
}
@@ -90,7 +99,7 @@ struct css_value {
return std::nullopt;
}

constexpr std::optional<css_flag_value> to_flag (void) const {
constexpr std::optional<css_flag_value> to_flag(void) const {
if (type == css_value_type::CSS_VALUE_FLAG) {
return std::get<css_flag_value>(value);
}
@@ -98,19 +107,14 @@ struct css_value {
return std::nullopt;
}

constexpr std::optional<std::string_view> to_string (void) const {
if (type == css_value_type::CSS_VALUE_STRING) {
return std::string_view(std::get<std::string>(value));
}

return std::nullopt;
}

constexpr bool is_valid (void) const {
constexpr bool is_valid(void) const {
return (type != css_value_type::CSS_VALUE_NYI);
}

static tl::expected<css_value,css_parse_error> from_css_block(const css_consumed_block &bl);
static auto from_css_block(const css_consumed_block &bl) -> tl::expected<css_value, css_parse_error>;

static auto maybe_color_from_string(const std::string_view &input)
-> std::optional<css_value>;
};

}

Loading…
Cancel
Save