/* * Copyright 2005, 2006, 2007 Florian Schmitz * * This file is part of CSSTidy. * * CSSTidy is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * CSSTidy is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . */ #include "csspp_globals.hpp" map settings; map< string, vector > shorthands; map background_prop_default,replace_colors,all_properties; vector unit_values,color_values; map at_rules; void prepare() { unit_values.push_back("background"); unit_values.push_back("background-position"); unit_values.push_back("border"); unit_values.push_back("border-top"); unit_values.push_back("border-right"); unit_values.push_back("border-bottom"); unit_values.push_back("border-left"); unit_values.push_back("border-width"); unit_values.push_back("border-top-width"); unit_values.push_back("border-right-width"); unit_values.push_back("border-left-width"); unit_values.push_back("border-bottom-width"); unit_values.push_back("bottom"); unit_values.push_back("border-spacing"); unit_values.push_back("font-size"); unit_values.push_back("height"); unit_values.push_back("left"); unit_values.push_back("margin"); unit_values.push_back("margin-top"); unit_values.push_back("margin-right"); unit_values.push_back("margin-bottom"); unit_values.push_back("margin-left"); unit_values.push_back("max-height"); unit_values.push_back("max-width"); unit_values.push_back("min-height"); unit_values.push_back("min-width"); unit_values.push_back("outline-width"); unit_values.push_back("padding"); unit_values.push_back("padding-top"); unit_values.push_back("padding-right"); unit_values.push_back("padding-bottom"); unit_values.push_back("padding-left"); unit_values.push_back("position"); unit_values.push_back("right"); unit_values.push_back("top"); unit_values.push_back("text-indent"); unit_values.push_back("letter-spacing"); unit_values.push_back("word-spacing"); unit_values.push_back("width"); color_values.push_back("color"); color_values.push_back("background-color"); color_values.push_back("border-color"); color_values.push_back("border-top-color"); color_values.push_back("border-right-color"); color_values.push_back("border-bottom-color"); color_values.push_back("border-left-color"); color_values.push_back("border-color"); color_values.push_back("color"); color_values.push_back("outline-color"); replace_colors["aliceblue"] = "#F0F8FF"; replace_colors["antiquewhite"] = "#FAEBD7"; replace_colors["aquamarine"] = "#7FFFD4"; replace_colors["azure"] = "#F0FFFF"; replace_colors["beige"] = "#F5F5DC"; replace_colors["bisque"] = "#FFE4C4"; replace_colors["blanchedalmond"] = "#FFEBCD"; replace_colors["blueviolet"] = "#8A2BE2"; replace_colors["brown"] = "#A52A2A"; replace_colors["burlywood"] = "#DEB887"; replace_colors["cadetblue"] = "#5F9EA0"; replace_colors["chartreuse"] = "#7FFF00"; replace_colors["chocolate"] = "#D2691E"; replace_colors["coral"] = "#FF7F50"; replace_colors["cornflowerblue"] = "#6495ED"; replace_colors["cornsilk"] = "#FFF8DC"; replace_colors["crimson"] = "#DC143C"; replace_colors["cyan"] = "#00FFFF"; replace_colors["darkblue"] = "#00008B"; replace_colors["darkcyan"] = "#008B8B"; replace_colors["darkgoldenrod"] = "#B8860B"; replace_colors["darkgray"] = "#A9A9A9"; replace_colors["darkgreen"] = "#006400"; replace_colors["darkkhaki"] = "#BDB76B"; replace_colors["darkmagenta"] = "#8B008B"; replace_colors["darkolivegreen"] = "#556B2F"; replace_colors["darkorange"] = "#FF8C00"; replace_colors["darkorchid"] = "#9932CC"; replace_colors["darkred"] = "#8B0000"; replace_colors["darksalmon"] = "#E9967A"; replace_colors["darkseagreen"] = "#8FBC8F"; replace_colors["darkslateblue"] = "#483D8B"; replace_colors["darkslategray"] = "#2F4F4F"; replace_colors["darkturquoise"] = "#00CED1"; replace_colors["darkviolet"] = "#9400D3"; replace_colors["deeppink"] = "#FF1493"; replace_colors["deepskyblue"] = "#00BFFF"; replace_colors["dimgray"] = "#696969"; replace_colors["dodgerblue"] = "#1E90FF"; replace_colors["feldspar"] = "#D19275"; replace_colors["firebrick"] = "#B22222"; replace_colors["floralwhite"] = "#FFFAF0"; replace_colors["forestgreen"] = "#228B22"; replace_colors["gainsboro"] = "#DCDCDC"; replace_colors["ghostwhite"] = "#F8F8FF"; replace_colors["gold"] = "#FFD700"; replace_colors["goldenrod"] = "#DAA520"; replace_colors["greenyellow"] = "#ADFF2F"; replace_colors["honeydew"] = "#F0FFF0"; replace_colors["hotpink"] = "#FF69B4"; replace_colors["indianred"] = "#CD5C5C"; replace_colors["indigo"] = "#4B0082"; replace_colors["ivory"] = "#FFFFF0"; replace_colors["khaki"] = "#F0E68C"; replace_colors["lavender"] = "#E6E6FA"; replace_colors["lavenderblush"] = "#FFF0F5"; replace_colors["lawngreen"] = "#7CFC00"; replace_colors["lemonchiffon"] = "#FFFACD"; replace_colors["lightblue"] = "#ADD8E6"; replace_colors["lightcoral"] = "#F08080"; replace_colors["lightcyan"] = "#E0FFFF"; replace_colors["lightgoldenrodyellow"] = "#FAFAD2"; replace_colors["lightgrey"] = "#D3D3D3"; replace_colors["lightgreen"] = "#90EE90"; replace_colors["lightpink"] = "#FFB6C1"; replace_colors["lightsalmon"] = "#FFA07A"; replace_colors["lightseagreen"] = "#20B2AA"; replace_colors["lightskyblue"] = "#87CEFA"; replace_colors["lightslateblue"] = "#8470FF"; replace_colors["lightslategray"] = "#778899"; replace_colors["lightsteelblue"] = "#B0C4DE"; replace_colors["lightyellow"] = "#FFFFE0"; replace_colors["limegreen"] = "#32CD32"; replace_colors["linen"] = "#FAF0E6"; replace_colors["magenta"] = "#FF00FF"; replace_colors["mediumaquamarine"] = "#66CDAA"; replace_colors["mediumblue"] = "#0000CD"; replace_colors["mediumorchid"] = "#BA55D3"; replace_colors["mediumpurple"] = "#9370D8"; replace_colors["mediumseagreen"] = "#3CB371"; replace_colors["mediumslateblue"] = "#7B68EE"; replace_colors["mediumspringgreen"] = "#00FA9A"; replace_colors["mediumturquoise"] = "#48D1CC"; replace_colors["mediumvioletred"] = "#C71585"; replace_colors["midnightblue"] = "#191970"; replace_colors["mintcream"] = "#F5FFFA"; replace_colors["mistyrose"] = "#FFE4E1"; replace_colors["moccasin"] = "#FFE4B5"; replace_colors["navajowhite"] = "#FFDEAD"; replace_colors["oldlace"] = "#FDF5E6"; replace_colors["olivedrab"] = "#6B8E23"; replace_colors["orangered"] = "#FF4500"; replace_colors["orchid"] = "#DA70D6"; replace_colors["palegoldenrod"] = "#EEE8AA"; replace_colors["palegreen"] = "#98FB98"; replace_colors["paleturquoise"] = "#AFEEEE"; replace_colors["palevioletred"] = "#D87093"; replace_colors["papayawhip"] = "#FFEFD5"; replace_colors["peachpuff"] = "#FFDAB9"; replace_colors["peru"] = "#CD853F"; replace_colors["pink"] = "#FFC0CB"; replace_colors["plum"] = "#DDA0DD"; replace_colors["powderblue"] = "#B0E0E6"; replace_colors["rosybrown"] = "#BC8F8F"; replace_colors["royalblue"] = "#4169E1"; replace_colors["saddlebrown"] = "#8B4513"; replace_colors["salmon"] = "#FA8072"; replace_colors["sandybrown"] = "#F4A460"; replace_colors["seagreen"] = "#2E8B57"; replace_colors["seashell"] = "#FFF5EE"; replace_colors["sienna"] = "#A0522D"; replace_colors["skyblue"] = "#87CEEB"; replace_colors["slateblue"] = "#6A5ACD"; replace_colors["slategray"] = "#708090"; replace_colors["snow"] = "#FFFAFA"; replace_colors["springgreen"] = "#00FF7F"; replace_colors["steelblue"] = "#4682B4"; replace_colors["tan"] = "#D2B48C"; replace_colors["thistle"] = "#D8BFD8"; replace_colors["tomato"] = "#FF6347"; replace_colors["turquoise"] = "#40E0D0"; replace_colors["violet"] = "#EE82EE"; replace_colors["violetred"] = "#D02090"; replace_colors["wheat"] = "#F5DEB3"; replace_colors["whitesmoke"] = "#F5F5F5"; replace_colors["yellowgreen"] = "#9ACD32"; shorthands["border-color"].push_back("border-top-color"); shorthands["border-color"].push_back("border-right-color"); shorthands["border-color"].push_back("border-bottom-color"); shorthands["border-color"].push_back("border-left-color"); shorthands["border-style"].push_back("border-top-style"); shorthands["border-style"].push_back("border-right-style"); shorthands["border-style"].push_back("border-bottom-style"); shorthands["border-style"].push_back("border-left-style"); shorthands["border-width"].push_back("border-top-width"); shorthands["border-width"].push_back("border-right-width"); shorthands["border-width"].push_back("border-bottom-width"); shorthands["border-width"].push_back("border-left-width"); shorthands["margin"].push_back("margin-top"); shorthands["margin"].push_back("margin-right"); shorthands["margin"].push_back("margin-bottom"); shorthands["margin"].push_back("margin-left"); shorthands["padding"].push_back("padding-top"); shorthands["padding"].push_back("padding-right"); shorthands["padding"].push_back("padding-bottom"); shorthands["padding"].push_back("padding-left"); shorthands["-moz-border-radius"].push_back("0"); all_properties["background"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["background-color"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["background-image"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["background-repeat"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["background-attachment"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["background-position"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["background-clip"] = "CSS3.0"; all_properties["background-origin"] = "CSS3.0"; all_properties["background-size"] = "CSS3.0"; all_properties["border"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0,CSS3.0"; all_properties["border-top"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-right"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-bottom"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-left"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-color"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-top-color"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["border-bottom-color"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["border-left-color"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["border-right-color"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["border-style"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-top-style"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["border-right-style"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["border-left-style"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["border-bottom-style"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["border-width"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-top-width"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-right-width"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-left-width"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-bottom-width"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["border-collapse"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["border-spacing"] = "CSS3.0"; all_properties["border-radius"] = "CSS3.0"; all_properties["box-shadow"] = "CSS3.0"; all_properties["box-sizing"] = "CSS3.0"; all_properties["bottom"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["caption-side"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["content"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["clear"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["clip"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["color"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["counter-reset"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["counter-increment"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["cursor"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["empty-cells"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["display"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["direction"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["float"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["zoom"] = "CSS3.0"; all_properties["opacity"] = "CSS3.0"; /* Font styles */ all_properties["font"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["font-family"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["font-style"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["font-variant"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["font-weight"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["font-stretch"] = "CSS2.0"; all_properties["font-size-adjust"] = "CSS2.0"; all_properties["font-size"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["font-format"] = "CSS3.0"; all_properties["font-family"] = "CSS3.0"; all_properties["src"] = "CSS3.0"; all_properties["height"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["left"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["line-height"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["list-style"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["list-style-type"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["list-style-image"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["list-style-position"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["margin"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["margin-top"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["margin-right"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["margin-bottom"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["margin-left"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["marks"] = "CSS1.0,CSS2.0"; all_properties["marker-offset"] = "CSS2.0"; all_properties["max-height"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["max-width"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["min-height"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["min-width"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["overflow"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["orphans"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["outline"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["outline-width"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["outline-style"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["outline-color"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["overflow"] = "CSS3.0"; all_properties["overflow-x"] = "CSS3.0"; all_properties["overflow-y"] = "CSS3.0"; all_properties["overflow-wrap"] = "CSS3.0"; all_properties["padding"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["padding-top"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["padding-right"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["padding-bottom"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["padding-left"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["page-break-before"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["page-break-after"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["page-break-inside"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["page"] = "CSS2.0"; all_properties["position"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["quotes"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["right"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["size"] = "CSS1.0,CSS2.0"; all_properties["speak-header"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["table-layout"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["top"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["text-indent"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["text-align"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["text-decoration"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["text-overflow"] = "CSS3.0"; all_properties["text-shadow"] = "CSS2.0"; all_properties["letter-spacing"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["word-spacing"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["text-transform"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["white-space"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["text-shadow"] = "CSS3.0"; all_properties["unicode-bidi"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["vertical-align"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["visibility"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; all_properties["width"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["widows"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["word-wrap"] = "CSS3.0"; all_properties["z-index"] = "CSS1.0,CSS2.0,CSS2.1,CSS3.0"; /* Speech */ all_properties["volume"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["speak"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["pause"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["pause-before"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["pause-after"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["cue"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["cue-before"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["cue-after"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["play-during"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["azimuth"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["elevation"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["speech-rate"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["voice-family"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["pitch"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["pitch-range"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["stress"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["richness"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["speak-punctuation"] = "CSS2.0,CSS2.1,CSS3.0"; all_properties["speak-numeral"] = "CSS2.0,CSS2.1,CSS3.0"; /* Flexbox */ all_properties["align-content"] = "CSS3.0"; all_properties["align-items"] = "CSS3.0"; all_properties["align-self"] = "CSS3.0"; all_properties["flex-basis"] = "CSS3.0"; all_properties["flex"] = "CSS3.0"; all_properties["flex-direction"] = "CSS3.0"; all_properties["flex-grow"] = "CSS3.0"; all_properties["flex-shrink"] = "CSS3.0"; all_properties["flex-wrap"] = "CSS3.0"; all_properties["justify-content"] = "CSS3.0"; /* Animation */ all_properties["animation"] = "CSS3.0"; all_properties["animation-name"] = "CSS3.0"; all_properties["animation-duration"] = "CSS3.0"; all_properties["animation-timing-function"] = "CSS3.0"; all_properties["animation-delay"] = "CSS3.0"; all_properties["animation-iteration-count"] = "CSS3.0"; all_properties["animation-direction"] = "CSS3.0"; all_properties["animation-fill-mode"] = "CSS3.0"; all_properties["animation-play-state"] = "CSS3.0"; all_properties["transition"] = "CSS3.0"; all_properties["transition-property"] = "CSS3.0"; all_properties["transition-duration"] = "CSS3.0"; all_properties["transition-timing-function"] = "CSS3.0"; all_properties["transition-delay"] = "CSS3.0"; background_prop_default["background-image"] = "none"; background_prop_default["background-size"] = "auto"; background_prop_default["background-repeat"] = "repeat"; background_prop_default["background-position"] = "0 0"; background_prop_default["background-attachment"] = "scroll"; background_prop_default["background-clip"] = "border"; background_prop_default["background-origin"] = "padding"; background_prop_default["background-color"] = "transparent"; at_rules["page"] = is; at_rules["font-face"] = is; at_rules["charset"] = iv; at_rules["import"] = iv; at_rules["namespace"] = iv; at_rules["media"] = at; at_rules["keyframes"] = at; at_rules["-moz-keyframes"] = at; at_rules["-ms-keyframes"] = at; // MS actually went prefixless in the final version of IE10, // but supports the prefix for backwards compatibility. at_rules["-o-keyframes"] = at; at_rules["-webkit-keyframes"] = at; }