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