habaki 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/ext/katana/extconf.rb +20 -0
  4. data/ext/katana/rb_katana.c +280 -0
  5. data/ext/katana/rb_katana.h +102 -0
  6. data/ext/katana/rb_katana_array.c +144 -0
  7. data/ext/katana/rb_katana_declaration.c +389 -0
  8. data/ext/katana/rb_katana_rule.c +461 -0
  9. data/ext/katana/rb_katana_selector.c +559 -0
  10. data/ext/katana/src/foundation.c +237 -0
  11. data/ext/katana/src/foundation.h +120 -0
  12. data/ext/katana/src/katana.h +590 -0
  13. data/ext/katana/src/katana.lex.c +4104 -0
  14. data/ext/katana/src/katana.lex.h +592 -0
  15. data/ext/katana/src/katana.tab.c +4422 -0
  16. data/ext/katana/src/katana.tab.h +262 -0
  17. data/ext/katana/src/parser.c +1563 -0
  18. data/ext/katana/src/parser.h +237 -0
  19. data/ext/katana/src/selector.c +659 -0
  20. data/ext/katana/src/selector.h +54 -0
  21. data/ext/katana/src/tokenizer.c +300 -0
  22. data/ext/katana/src/tokenizer.h +41 -0
  23. data/lib/habaki/charset_rule.rb +25 -0
  24. data/lib/habaki/declaration.rb +53 -0
  25. data/lib/habaki/declarations.rb +346 -0
  26. data/lib/habaki/error.rb +43 -0
  27. data/lib/habaki/font_face_rule.rb +24 -0
  28. data/lib/habaki/formal_syntax.rb +464 -0
  29. data/lib/habaki/formatter.rb +99 -0
  30. data/lib/habaki/import_rule.rb +34 -0
  31. data/lib/habaki/media_rule.rb +173 -0
  32. data/lib/habaki/namespace_rule.rb +31 -0
  33. data/lib/habaki/node.rb +52 -0
  34. data/lib/habaki/page_rule.rb +24 -0
  35. data/lib/habaki/qualified_name.rb +29 -0
  36. data/lib/habaki/rule.rb +48 -0
  37. data/lib/habaki/rules.rb +225 -0
  38. data/lib/habaki/selector.rb +98 -0
  39. data/lib/habaki/selectors.rb +49 -0
  40. data/lib/habaki/style_rule.rb +35 -0
  41. data/lib/habaki/stylesheet.rb +158 -0
  42. data/lib/habaki/sub_selector.rb +234 -0
  43. data/lib/habaki/sub_selectors.rb +42 -0
  44. data/lib/habaki/supports_rule.rb +65 -0
  45. data/lib/habaki/value.rb +321 -0
  46. data/lib/habaki/values.rb +86 -0
  47. data/lib/habaki/visitor/element.rb +50 -0
  48. data/lib/habaki/visitor/media.rb +22 -0
  49. data/lib/habaki/visitor/nokogiri_element.rb +56 -0
  50. data/lib/habaki.rb +39 -0
  51. metadata +190 -0
@@ -0,0 +1,262 @@
1
+ /* A Bison parser, made by GNU Bison 3.5.1. */
2
+
3
+ /* Bison interface for Yacc-like parsers in C
4
+
5
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
6
+ Inc.
7
+
8
+ This program is free software: you can redistribute it and/or modify
9
+ it under the terms of the GNU General Public License as published by
10
+ the Free Software Foundation, either version 3 of the License, or
11
+ (at your option) any later version.
12
+
13
+ This program is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU General Public License for more details.
17
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
20
+
21
+ /* As a special exception, you may create a larger work that contains
22
+ part or all of the Bison parser skeleton and distribute that work
23
+ under terms of your choice, so long as that work isn't itself a
24
+ parser generator using the skeleton or a modified version thereof
25
+ as a parser skeleton. Alternatively, if you modify or redistribute
26
+ the parser skeleton itself, you may (at your option) remove this
27
+ special exception, which will cause the skeleton and the resulting
28
+ Bison output files to be licensed under the GNU General Public
29
+ License without this special exception.
30
+
31
+ This special exception was added by the Free Software Foundation in
32
+ version 2.2 of Bison. */
33
+
34
+ /* Undocumented macros, especially those whose name start with YY_,
35
+ are private implementation details. Do not rely on them. */
36
+
37
+ #ifndef YY_KATANA_SRC_KATANA_TAB_H_INCLUDED
38
+ # define YY_KATANA_SRC_KATANA_TAB_H_INCLUDED
39
+ /* Debug traces. */
40
+ #ifndef KATANADEBUG
41
+ # if defined YYDEBUG
42
+ #if YYDEBUG
43
+ # define KATANADEBUG 1
44
+ # else
45
+ # define KATANADEBUG 0
46
+ # endif
47
+ # else /* ! defined YYDEBUG */
48
+ # define KATANADEBUG 0
49
+ # endif /* ! defined YYDEBUG */
50
+ #endif /* ! defined KATANADEBUG */
51
+ #if KATANADEBUG
52
+ extern int katanadebug;
53
+ #endif
54
+ /* "%code requires" blocks. */
55
+
56
+
57
+ /*
58
+ * Copyright (C) 2002-2003 Lars Knoll (knoll@kde.org)
59
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
60
+ * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
61
+ * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
62
+ * Copyright (C) 2012 Intel Corporation. All rights reserved.
63
+ *
64
+ * This library is free software; you can redistribute it and/or
65
+ * modify it under the terms of the GNU Lesser General Public
66
+ * License as published by the Free Software Foundation; either
67
+ * version 2 of the License, or (at your option) any later version.
68
+ *
69
+ * This library is distributed in the hope that it will be useful,
70
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
71
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
72
+ * Lesser General Public License for more details.
73
+ *
74
+ * You should have received a copy of the GNU Lesser General Public
75
+ * License along with this library; if not, write to the Free Software
76
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
77
+ *
78
+ */
79
+
80
+ #include "foundation.h"
81
+ #include "katana.h"
82
+ #include <string.h>
83
+
84
+ #define YYENABLE_NLS 0
85
+ #define YYLTYPE_IS_TRIVIAL 1
86
+ #define YYMAXDEPTH 10000
87
+ #define YYDEBUG 0
88
+
89
+
90
+
91
+ /* Token type. */
92
+ #ifndef KATANATOKENTYPE
93
+ # define KATANATOKENTYPE
94
+ enum katanatokentype
95
+ {
96
+ TOKEN_EOF = 0,
97
+ LOWEST_PREC = 258,
98
+ UNIMPORTANT_TOK = 259,
99
+ KATANA_CSS_WHITESPACE = 260,
100
+ KATANA_CSS_SGML_CD = 261,
101
+ KATANA_CSS_INCLUDES = 262,
102
+ KATANA_CSS_DASHMATCH = 263,
103
+ KATANA_CSS_BEGINSWITH = 264,
104
+ KATANA_CSS_ENDSWITH = 265,
105
+ KATANA_CSS_CONTAINS = 266,
106
+ KATANA_CSS_STRING = 267,
107
+ KATANA_CSS_IDENT = 268,
108
+ KATANA_CSS_NTH = 269,
109
+ KATANA_CSS_HEX = 270,
110
+ KATANA_CSS_IDSEL = 271,
111
+ KATANA_CSS_IMPORT_SYM = 272,
112
+ KATANA_CSS_PAGE_SYM = 273,
113
+ KATANA_CSS_MEDIA_SYM = 274,
114
+ KATANA_CSS_SUPPORTS_SYM = 275,
115
+ KATANA_CSS_FONT_FACE_SYM = 276,
116
+ KATANA_CSS_CHARSET_SYM = 277,
117
+ KATANA_CSS_NAMESPACE_SYM = 278,
118
+ KATANA_CSS_VIEWPORT_RULE_SYM = 279,
119
+ KATANA_INTERNAL_DECLS_SYM = 280,
120
+ KATANA_INTERNAL_MEDIALIST_SYM = 281,
121
+ KATANA_INTERNAL_RULE_SYM = 282,
122
+ KATANA_INTERNAL_SELECTOR_SYM = 283,
123
+ KATANA_INTERNAL_VALUE_SYM = 284,
124
+ KATANA_INTERNAL_KEYFRAME_RULE_SYM = 285,
125
+ KATANA_INTERNAL_KEYFRAME_KEY_LIST_SYM = 286,
126
+ KATANA_INTERNAL_SUPPORTS_CONDITION_SYM = 287,
127
+ KATANA_CSS_KEYFRAMES_SYM = 288,
128
+ KATANA_CSS_WEBKIT_KATANA_CSS_KEYFRAMES_SYM = 289,
129
+ TOPLEFTCORNER_SYM = 290,
130
+ TOPLEFT_SYM = 291,
131
+ TOPCENTER_SYM = 292,
132
+ TOPRIGHT_SYM = 293,
133
+ TOPRIGHTCORNER_SYM = 294,
134
+ BOTTOMLEFTCORNER_SYM = 295,
135
+ BOTTOMLEFT_SYM = 296,
136
+ BOTTOMCENTER_SYM = 297,
137
+ BOTTOMRIGHT_SYM = 298,
138
+ BOTTOMRIGHTCORNER_SYM = 299,
139
+ LEFTTOP_SYM = 300,
140
+ LEFTMIDDLE_SYM = 301,
141
+ LEFTBOTTOM_SYM = 302,
142
+ RIGHTTOP_SYM = 303,
143
+ RIGHTMIDDLE_SYM = 304,
144
+ RIGHTBOTTOM_SYM = 305,
145
+ KATANA_CSS_ATKEYWORD = 306,
146
+ KATANA_CSS_IMPORTANT_SYM = 307,
147
+ KATANA_CSS_MEDIA_ONLY = 308,
148
+ KATANA_CSS_MEDIA_NOT = 309,
149
+ KATANA_CSS_MEDIA_AND = 310,
150
+ KATANA_CSS_MEDIA_OR = 311,
151
+ KATANA_CSS_SUPPORTS_NOT = 312,
152
+ KATANA_CSS_SUPPORTS_AND = 313,
153
+ KATANA_CSS_SUPPORTS_OR = 314,
154
+ KATANA_CSS_REMS = 315,
155
+ KATANA_CSS_CHS = 316,
156
+ KATANA_CSS_QEMS = 317,
157
+ KATANA_CSS_EMS = 318,
158
+ KATANA_CSS_EXS = 319,
159
+ KATANA_CSS_PXS = 320,
160
+ KATANA_CSS_CMS = 321,
161
+ KATANA_CSS_MMS = 322,
162
+ KATANA_CSS_INS = 323,
163
+ KATANA_CSS_PTS = 324,
164
+ KATANA_CSS_PCS = 325,
165
+ KATANA_CSS_DEGS = 326,
166
+ KATANA_CSS_RADS = 327,
167
+ KATANA_CSS_GRADS = 328,
168
+ KATANA_CSS_TURNS = 329,
169
+ KATANA_CSS_MSECS = 330,
170
+ KATANA_CSS_SECS = 331,
171
+ KATANA_CSS_HERTZ = 332,
172
+ KATANA_CSS_KHERTZ = 333,
173
+ KATANA_CSS_DIMEN = 334,
174
+ KATANA_CSS_INVALIDDIMEN = 335,
175
+ KATANA_CSS_PERCENTAGE = 336,
176
+ KATANA_CSS_FLOATTOKEN = 337,
177
+ KATANA_CSS_INTEGER = 338,
178
+ KATANA_CSS_VW = 339,
179
+ KATANA_CSS_VH = 340,
180
+ KATANA_CSS_VMIN = 341,
181
+ KATANA_CSS_VMAX = 342,
182
+ KATANA_CSS_DPPX = 343,
183
+ KATANA_CSS_DPI = 344,
184
+ KATANA_CSS_DPCM = 345,
185
+ KATANA_CSS_FR = 346,
186
+ KATANA_CSS_URI = 347,
187
+ KATANA_CSS_FUNCTION = 348,
188
+ KATANA_CSS_ANYFUNCTION = 349,
189
+ KATANA_CSS_CUEFUNCTION = 350,
190
+ KATANA_CSS_NOTFUNCTION = 351,
191
+ KATANA_CSS_DISTRIBUTEDFUNCTION = 352,
192
+ KATANA_CSS_CALCFUNCTION = 353,
193
+ KATANA_CSS_MINFUNCTION = 354,
194
+ KATANA_CSS_MAXFUNCTION = 355,
195
+ KATANA_CSS_HOSTFUNCTION = 356,
196
+ KATANA_CSS_HOSTCONTEXTFUNCTION = 357,
197
+ KATANA_CSS_UNICODERANGE = 358
198
+ };
199
+ #endif
200
+
201
+ /* Value type. */
202
+ #if ! defined KATANASTYPE && ! defined KATANASTYPE_IS_DECLARED
203
+ union KATANASTYPE
204
+ {
205
+
206
+
207
+ bool boolean;
208
+ char character;
209
+ int integer;
210
+ KatanaParserNumber number;
211
+ KatanaParserString string;
212
+
213
+ KatanaRule* rule;
214
+ // The content of the three below HeapVectors are guaranteed to be kept alive by
215
+ // the corresponding parsedRules, floatingMediaQueryExpList, and parsedKeyFrames
216
+ // lists
217
+ KatanaArray* ruleList;
218
+ KatanaArray* mediaQueryExpList;
219
+ KatanaArray* keyframeRuleList;
220
+
221
+ KatanaSelector* selector;
222
+ KatanaArray* selectorList;
223
+ // CSSSelector::MarginBoxType marginBox;
224
+ KatanaSelectorRelation relation;
225
+ KatanaAttributeMatchType attributeMatchType;
226
+ KatanaArray* mediaList;
227
+ KatanaMediaQuery* mediaQuery;
228
+ KatanaMediaQueryRestrictor mediaQueryRestrictor;
229
+ KatanaMediaQueryExp* mediaQueryExp;
230
+ KatanaValue* value;
231
+ KatanaArray* valueList;
232
+ KatanaKeyframe* keyframe;
233
+ KatanaSourcePosition* location;
234
+
235
+ KatanaSupportsExp* supportsExp;
236
+
237
+
238
+ };
239
+ typedef union KATANASTYPE KATANASTYPE;
240
+ # define KATANASTYPE_IS_TRIVIAL 1
241
+ # define KATANASTYPE_IS_DECLARED 1
242
+ #endif
243
+
244
+ /* Location type. */
245
+ #if ! defined KATANALTYPE && ! defined KATANALTYPE_IS_DECLARED
246
+ typedef struct KATANALTYPE KATANALTYPE;
247
+ struct KATANALTYPE
248
+ {
249
+ int first_line;
250
+ int first_column;
251
+ int last_line;
252
+ int last_column;
253
+ };
254
+ # define KATANALTYPE_IS_DECLARED 1
255
+ # define KATANALTYPE_IS_TRIVIAL 1
256
+ #endif
257
+
258
+
259
+
260
+ int katanaparse (void* scanner, struct KatanaInternalParser * parser);
261
+
262
+ #endif /* !YY_KATANA_SRC_KATANA_TAB_H_INCLUDED */