2 #include "constants.hpp"
7 extern const unsigned long MaxCallStack = 1024;
9 // https://github.com/sass/libsass/issues/592
10 // https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
11 // https://github.com/sass/sass/issues/1495#issuecomment-61189114
12 extern const unsigned long Specificity_Star = 0;
13 extern const unsigned long Specificity_Universal = 0;
14 extern const unsigned long Specificity_Element = 1;
15 extern const unsigned long Specificity_Base = 1000;
16 extern const unsigned long Specificity_Class = 1000;
17 extern const unsigned long Specificity_Attr = 1000;
18 extern const unsigned long Specificity_Pseudo = 1000;
19 extern const unsigned long Specificity_ID = 1000000;
22 extern const char at_root_kwd[] = "@at-root";
23 extern const char import_kwd[] = "@import";
24 extern const char mixin_kwd[] = "@mixin";
25 extern const char function_kwd[] = "@function";
26 extern const char return_kwd[] = "@return";
27 extern const char include_kwd[] = "@include";
28 extern const char content_kwd[] = "@content";
29 extern const char extend_kwd[] = "@extend";
30 extern const char if_kwd[] = "@if";
31 extern const char else_kwd[] = "@else";
32 extern const char if_after_else_kwd[] = "if";
33 extern const char for_kwd[] = "@for";
34 extern const char from_kwd[] = "from";
35 extern const char to_kwd[] = "to";
36 extern const char through_kwd[] = "through";
37 extern const char each_kwd[] = "@each";
38 extern const char in_kwd[] = "in";
39 extern const char while_kwd[] = "@while";
40 extern const char warn_kwd[] = "@warn";
41 extern const char error_kwd[] = "@error";
42 extern const char debug_kwd[] = "@debug";
43 extern const char default_kwd[] = "default";
44 extern const char global_kwd[] = "global";
45 extern const char null_kwd[] = "null";
46 extern const char optional_kwd[] = "optional";
47 extern const char with_kwd[] = "with";
48 extern const char without_kwd[] = "without";
49 extern const char all_kwd[] = "all";
50 extern const char rule_kwd[] = "rule";
53 extern const char em_kwd[] = "em";
54 extern const char ex_kwd[] = "ex";
55 extern const char px_kwd[] = "px";
56 extern const char cm_kwd[] = "cm";
57 extern const char mm_kwd[] = "mm";
58 extern const char pt_kwd[] = "pt";
59 extern const char pc_kwd[] = "pc";
60 extern const char deg_kwd[] = "deg";
61 extern const char rad_kwd[] = "rad";
62 extern const char grad_kwd[] = "grad";
63 extern const char turn_kwd[] = "turn";
64 extern const char ms_kwd[] = "ms";
65 extern const char s_kwd[] = "s";
66 extern const char Hz_kwd[] = "Hz";
67 extern const char kHz_kwd[] = "kHz";
70 extern const char vendor_opera_kwd[] = "-o-";
71 extern const char vendor_webkit_kwd[] = "-webkit-";
72 extern const char vendor_mozilla_kwd[] = "-moz-";
73 extern const char vendor_ms_kwd[] = "-ms-";
74 extern const char vendor_khtml_kwd[] = "-khtml-";
76 // css functions and keywords
77 extern const char charset_kwd[] = "@charset";
78 extern const char media_kwd[] = "@media";
79 extern const char supports_kwd[] = "@supports";
80 extern const char keyframes_kwd[] = "keyframes";
81 extern const char only_kwd[] = "only";
82 extern const char rgb_kwd[] = "rgb(";
83 extern const char url_kwd[] = "url";
84 // extern const char url_prefix_kwd[] = "url-prefix(";
85 extern const char important_kwd[] = "important";
86 extern const char pseudo_not_kwd[] = ":not(";
87 extern const char even_kwd[] = "even";
88 extern const char odd_kwd[] = "odd";
89 extern const char progid_kwd[] = "progid";
90 extern const char expression_kwd[] = "expression";
91 extern const char calc_fn_kwd[] = "calc";
93 extern const char almost_any_value_class[] = "\"'#!;{}";
95 // css selector keywords
96 extern const char sel_deep_kwd[] = "/deep/";
98 // css attribute-matching operators
99 extern const char tilde_equal[] = "~=";
100 extern const char pipe_equal[] = "|=";
101 extern const char caret_equal[] = "^=";
102 extern const char dollar_equal[] = "$=";
103 extern const char star_equal[] = "*=";
105 // relational & logical operators and constants
106 extern const char and_kwd[] = "and";
107 extern const char or_kwd[] = "or";
108 extern const char not_kwd[] = "not";
109 extern const char gt[] = ">";
110 extern const char gte[] = ">=";
111 extern const char lt[] = "<";
112 extern const char lte[] = "<=";
113 extern const char eq[] = "==";
114 extern const char neq[] = "!=";
115 extern const char true_kwd[] = "true";
116 extern const char false_kwd[] = "false";
118 // miscellaneous punctuation and delimiters
119 extern const char percent_str[] = "%";
120 extern const char empty_str[] = "";
121 extern const char slash_slash[] = "//";
122 extern const char slash_star[] = "/*";
123 extern const char star_slash[] = "*/";
124 extern const char hash_lbrace[] = "#{";
125 extern const char rbrace[] = "}";
126 extern const char rparen[] = ")";
127 extern const char sign_chars[] = "-+";
128 extern const char op_chars[] = "-+";
129 extern const char hyphen[] = "-";
130 extern const char ellipsis[] = "...";
131 // extern const char url_space_chars[] = " \t\r\n\f";
133 extern const char numeric_name[] = "numeric value";
134 extern const char number_name[] = "number";
135 extern const char percentage_name[] = "percentage";
136 extern const char dimension_name[] = "numeric dimension";
137 extern const char string_name[] = "string";
138 extern const char bool_name[] = "bool";
139 extern const char color_name[] = "color";
140 extern const char list_name[] = "list";
141 extern const char map_name[] = "map";
142 extern const char arglist_name[] = "arglist";
144 // constants for uri parsing (RFC 3986 Appendix A.)
145 extern const char uri_chars[] = ":;/?!%&#@|[]{}'`^\"*+-.,_=~";
146 extern const char real_uri_chars[] = "#%&";
148 // some specific constant character classes
149 // they must be static to be useable by lexer
150 extern const char static_ops[] = "*/%";
151 // some character classes for the parser
152 extern const char selector_list_delims[] = "){};!";
153 extern const char complex_selector_delims[] = ",){};!";
154 extern const char selector_combinator_ops[] = "+~>";
155 // optional modifiers for alternative compare context
156 extern const char attribute_compare_modifiers[] = "~|^$*";
157 extern const char selector_lookahead_ops[] = "*&%,()[]";
160 // (taken from http://en.wikipedia.org/wiki/Byte_order_mark)
161 extern const unsigned char utf_8_bom[] = { 0xEF, 0xBB, 0xBF };
162 extern const unsigned char utf_16_bom_be[] = { 0xFE, 0xFF };
163 extern const unsigned char utf_16_bom_le[] = { 0xFF, 0xFE };
164 extern const unsigned char utf_32_bom_be[] = { 0x00, 0x00, 0xFE, 0xFF };
165 extern const unsigned char utf_32_bom_le[] = { 0xFF, 0xFE, 0x00, 0x00 };
166 extern const unsigned char utf_7_bom_1[] = { 0x2B, 0x2F, 0x76, 0x38 };
167 extern const unsigned char utf_7_bom_2[] = { 0x2B, 0x2F, 0x76, 0x39 };
168 extern const unsigned char utf_7_bom_3[] = { 0x2B, 0x2F, 0x76, 0x2B };
169 extern const unsigned char utf_7_bom_4[] = { 0x2B, 0x2F, 0x76, 0x2F };
170 extern const unsigned char utf_7_bom_5[] = { 0x2B, 0x2F, 0x76, 0x38, 0x2D };
171 extern const unsigned char utf_1_bom[] = { 0xF7, 0x64, 0x4C };
172 extern const unsigned char utf_ebcdic_bom[] = { 0xDD, 0x73, 0x66, 0x73 };
173 extern const unsigned char scsu_bom[] = { 0x0E, 0xFE, 0xFF };
174 extern const unsigned char bocu_1_bom[] = { 0xFB, 0xEE, 0x28 };
175 extern const unsigned char gb_18030_bom[] = { 0x84, 0x31, 0x95, 0x33 };