commonmarker 0.21.2 → 0.23.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of commonmarker might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac3365deb1dd8288503331626fc20ec583a5f96a23e25d330f4ff47e526bfc54
4
- data.tar.gz: 975bcb958eb2e994a15090311088ff95870af95b1fc2d73bc1c4eb216fe69388
3
+ metadata.gz: e9994d57ada57273f14d8098d2dbce3c923adf271fd7cbbc57d617cd3b78922a
4
+ data.tar.gz: 49911d1ce9bf022eb5b6f4698da9d3839476c20dffc2d2a3910784b483d74481
5
5
  SHA512:
6
- metadata.gz: 531cda0280a75a40c139969287106646c8b2cef181b48249055f3a896bc4329485a0f70ac59f6f3a85eed00247c15f4a6785f478b957ebd3594be3074a9d25a9
7
- data.tar.gz: 3bb88a326ea1e0e7f99da2b459b90cac2ea748e57d933029c11278f230064a433a00889c93d65851dfef4b131ba46562a33d4597ef677f3e382325a712b0ffe6
6
+ metadata.gz: a79d35be4e6046cc07ba6061ef8f3563ae31a78ee24e114675cf98c1188c13b40bec8eed1265ccd11ae39eef6032bc91d57ce8254f9b676f198c2a057c6ea7d3
7
+ data.tar.gz: bb887c9aa1d34dc200622b001b6a09ecb53625807de66a226331afe090db4d2d61fd5edce9be7b61fdd27e23ed1c8a70b41089f088e93936115b9f517b6bef03
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # CommonMarker
2
2
 
3
- [![Build Status](https://travis-ci.org/gjtorikian/commonmarker.svg)](https://travis-ci.org/gjtorikian/commonmarker) [![Gem Version](https://badge.fury.io/rb/commonmarker.svg)](http://badge.fury.io/rb/commonmarker)
3
+ ![Build Status](https://github.com/gjtorikian/commonmarker/workflows/CI/badge.svg) [![Gem Version](https://badge.fury.io/rb/commonmarker.svg)](http://badge.fury.io/rb/commonmarker)
4
4
 
5
5
  Ruby wrapper for [libcmark-gfm](https://github.com/github/cmark),
6
6
  GitHub's fork of the reference parser for CommonMark. It passes all of the C tests, and is therefore spec-complete. It also includes extensions to the CommonMark spec as documented in the [GitHub Flavored Markdown spec](http://github.github.com/gfm/), such as support for tables, strikethroughs, and autolinking.
@@ -130,26 +130,31 @@ CommonMarker accepts the same options that CMark does, as symbols. Note that the
130
130
  | Name | Description
131
131
  | ----------------------------- | -----------
132
132
  | `:DEFAULT` | The default parsing system.
133
+ | `:SOURCEPOS` | Include source position in nodes
133
134
  | `:UNSAFE` | Allow raw/custom HTML and unsafe links.
134
- | `:FOOTNOTES` | Parse footnotes.
135
- | `:LIBERAL_HTML_TAG` | Support liberal parsing of inline HTML tags.
135
+ | `:VALIDATE_UTF8` | Replace illegal sequences with the replacement character `U+FFFD`.
136
136
  | `:SMART` | Use smart punctuation (curly quotes, etc.).
137
+ | `:LIBERAL_HTML_TAG` | Support liberal parsing of inline HTML tags.
138
+ | `:FOOTNOTES` | Parse footnotes.
137
139
  | `:STRIKETHROUGH_DOUBLE_TILDE` | Parse strikethroughs by double tildes (compatibility with [redcarpet](https://github.com/vmg/redcarpet))
138
- | `:VALIDATE_UTF8` | Replace illegal sequences with the replacement character `U+FFFD`.
139
140
 
140
141
  ### Render options
141
142
 
142
143
  | Name | Description |
143
144
  | ------------------ | ----------- |
144
145
  | `:DEFAULT` | The default rendering system. |
145
- | `:UNSAFE` | Allow raw/custom HTML and unsafe links. |
146
- | `:GITHUB_PRE_LANG` | Use GitHub-style `<pre lang>` for fenced code blocks. |
146
+ | `:SOURCEPOS` | Include source position in rendered HTML. |
147
147
  | `:HARDBREAKS` | Treat `\n` as hardbreaks (by adding `<br/>`). |
148
+ | `:UNSAFE` | Allow raw/custom HTML and unsafe links. |
148
149
  | `:NOBREAKS` | Translate `\n` in the source to a single whitespace. |
149
- | `:SOURCEPOS` | Include source position in rendered HTML. |
150
+ | `:VALIDATE_UTF8` | Replace illegal sequences with the replacement character `U+FFFD`. |
151
+ | `:SMART` | Use smart punctuation (curly quotes, etc.). |
152
+ | `:GITHUB_PRE_LANG` | Use GitHub-style `<pre lang>` for fenced code blocks. |
153
+ | `:LIBERAL_HTML_TAG` | Support liberal parsing of inline HTML tags. |
154
+ | `:FOOTNOTES` | Render footnotes. |
155
+ | `:STRIKETHROUGH_DOUBLE_TILDE` | Parse strikethroughs by double tildes (compatibility with [redcarpet](https://github.com/vmg/redcarpet)) |
150
156
  | `:TABLE_PREFER_STYLE_ATTRIBUTES` | Use `style` insted of `align` for table cells. |
151
157
  | `:FULL_INFO_STRING` | Include full info strings of code blocks in separate attribute. |
152
- | `:FOOTNOTES` | Render footnotes. |
153
158
 
154
159
  ### Passing options
155
160
 
@@ -180,6 +185,76 @@ The available extensions are:
180
185
  * `:autolink` - This provides support for automatically converting URLs to anchor tags.
181
186
  * `:tagfilter` - This escapes [several "unsafe" HTML tags](https://github.github.com/gfm/#disallowed-raw-html-extension-), causing them to not have any effect.
182
187
 
188
+ ## Output formats
189
+
190
+ Like CMark, CommonMarker can generate output in several formats: HTML, XML, plaintext, and commonmark are currently supported.
191
+
192
+ ### HTML
193
+
194
+ The default output format, HTML, will be generated when calling `to_html` or using `--to=html` on the command line.
195
+
196
+ ```ruby
197
+ doc = CommonMarker.render_doc('*Hello* world!', :DEFAULT)
198
+ puts(doc.to_html)
199
+
200
+ <p><em>Hello</em> world!</p>
201
+ ```
202
+
203
+ ### XML
204
+
205
+ XML will be generated when calling `to_xml` or using `--to=xml` on the command line.
206
+
207
+ ```ruby
208
+ doc = CommonMarker.render_doc('*Hello* world!', :DEFAULT)
209
+ puts(doc.to_xml)
210
+
211
+ <?xml version="1.0" encoding="UTF-8"?>
212
+ <!DOCTYPE document SYSTEM "CommonMark.dtd">
213
+ <document xmlns="http://commonmark.org/xml/1.0">
214
+ <paragraph>
215
+ <emph>
216
+ <text xml:space="preserve">Hello</text>
217
+ </emph>
218
+ <text xml:space="preserve"> world!</text>
219
+ </paragraph>
220
+ </document>
221
+ ```
222
+
223
+ ### Plaintext
224
+
225
+ Plaintext will be generated when calling `to_plaintext` or using `--to=plaintext` on the command line.
226
+
227
+ ```ruby
228
+ doc = CommonMarker.render_doc('*Hello* world!', :DEFAULT)
229
+ puts(doc.to_plaintext)
230
+
231
+ Hello world!
232
+ ```
233
+
234
+ ### Commonmark
235
+
236
+ Commonmark will be generated when calling `to_commonmark` or using `--to=commonmark` on the command line.
237
+
238
+ ``` ruby
239
+ text = <<-TEXT
240
+ 1. I am a numeric list.
241
+ 2. I continue the list.
242
+ * Suddenly, an unordered list!
243
+ * What fun!
244
+ TEXT
245
+
246
+ doc = CommonMarker.render_doc(text, :DEFAULT)
247
+ puts(doc.to_commonmark)
248
+
249
+ 1. I am a numeric list.
250
+ 2. I continue the list.
251
+
252
+ <!-- end list -->
253
+
254
+ - Suddenly, an unordered list\!
255
+ - What fun\!
256
+ ```
257
+
183
258
  ## Developing locally
184
259
 
185
260
  After cloning the repo:
data/bin/commonmarker CHANGED
@@ -13,15 +13,18 @@ $LOAD_PATH.unshift File.expand_path('lib', root)
13
13
  def parse_options
14
14
  options = OpenStruct.new
15
15
  extensions = CommonMarker.extensions
16
- parse_options = CommonMarker::Config::Parse
17
- render_options = CommonMarker::Config::Render
16
+ parse_options = CommonMarker::Config::OPTS.fetch(:parse)
17
+ render_options = CommonMarker::Config::OPTS.fetch(:render)
18
+ format_options = CommonMarker::Config::OPTS.fetch(:format)
18
19
 
19
20
  options.active_extensions = []
20
21
  options.active_parse_options = [:DEFAULT]
21
22
  options.active_render_options = [:DEFAULT]
23
+ options.output_format = :html
22
24
 
23
25
  option_parser = OptionParser.new do |opts|
24
26
  opts.banner = 'Usage: commonmarker [--html-renderer] [--extension=EXTENSION]'
27
+ opts.separator ' [--to=FORMAT]'
25
28
  opts.separator ' [--parse-option=OPTION]'
26
29
  opts.separator ' [--render-option=OPTION]'
27
30
  opts.separator ' [FILE..]'
@@ -43,6 +46,7 @@ def parse_options
43
46
  opts.on('-h', '--help', 'Prints this help') do
44
47
  puts opts
45
48
  puts
49
+ puts "Available formats: #{format_options.join(', ')}"
46
50
  puts "Available extentions: #{extensions.join(', ')}"
47
51
  puts "Available parse options: #{parse_options.keys.join(', ')}"
48
52
  puts "Available render options: #{render_options.keys.join(', ')}"
@@ -51,7 +55,16 @@ def parse_options
51
55
  exit
52
56
  end
53
57
 
54
- opts.on('--html-renderer', 'Use the HtmlRenderer renderer rather than the native C renderer') do
58
+ opts.on('-tFORMAT', '--to=FORMAT', String, 'Specify output FORMAT') do |value|
59
+ value = value.to_sym
60
+ if format_options.include?(value)
61
+ options.output_format = value
62
+ else
63
+ abort("format '#{value}' not found")
64
+ end
65
+ end
66
+
67
+ opts.on('--html-renderer', 'Use the HtmlRenderer renderer rather than the native C renderer (only valid when format is html)') do
55
68
  options.renderer = true
56
69
  end
57
70
 
@@ -88,11 +101,23 @@ end
88
101
 
89
102
  options = parse_options
90
103
 
104
+ abort("format '#{options.output_format}' does not support using the HtmlRenderer renderer") if
105
+ options.renderer && options.output_format != :html
106
+
91
107
  doc = CommonMarker.render_doc(ARGF.read, options.active_parse_options, options.active_extensions)
92
108
 
93
- if options.renderer
94
- renderer = CommonMarker::HtmlRenderer.new(extensions: options.active_extensions)
95
- $stdout.write(renderer.render(doc))
96
- else
97
- $stdout.write(doc.to_html(options.active_render_options, options.active_extensions))
109
+ case options.output_format
110
+ when :html
111
+ if options.renderer
112
+ renderer = CommonMarker::HtmlRenderer.new(options: options.active_render_options, extensions: options.active_extensions)
113
+ $stdout.write(renderer.render(doc))
114
+ else
115
+ $stdout.write(doc.to_html(options.active_render_options, options.active_extensions))
116
+ end
117
+ when :xml
118
+ $stdout.write(doc.to_xml(options.active_render_options))
119
+ when :commonmark
120
+ $stdout.write(doc.to_commonmark(options.active_render_options))
121
+ when :plaintext
122
+ $stdout.write(doc.to_plaintext(options.active_render_options))
98
123
  end
data/commonmarker.gemspec CHANGED
@@ -21,12 +21,10 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.executables = ['commonmarker']
23
23
  s.require_paths = %w[lib ext]
24
- s.required_ruby_version = ['>= 2.4.10', '< 4.0']
24
+ s.required_ruby_version = ['>= 2.6', '< 4.0']
25
25
 
26
26
  s.rdoc_options += ['-x', 'ext/commonmarker/cmark/.*']
27
27
 
28
- s.add_dependency 'ruby-enum', '~> 0.5'
29
-
30
28
  s.add_development_dependency 'awesome_print'
31
29
  s.add_development_dependency 'json', '~> 2.3'
32
30
  s.add_development_dependency 'minitest', '~> 5.6'
@@ -468,7 +468,6 @@ static void process_footnotes(cmark_parser *parser) {
468
468
  while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {
469
469
  cur = cmark_iter_get_node(iter);
470
470
  if (ev_type == CMARK_EVENT_EXIT && cur->type == CMARK_NODE_FOOTNOTE_DEFINITION) {
471
- cmark_node_unlink(cur);
472
471
  cmark_footnote_create(map, cur);
473
472
  }
474
473
  }
@@ -485,6 +484,15 @@ static void process_footnotes(cmark_parser *parser) {
485
484
  if (!footnote->ix)
486
485
  footnote->ix = ++ix;
487
486
 
487
+ // store a reference to this footnote reference's footnote definition
488
+ // this is used by renderers when generating label ids
489
+ cur->parent_footnote_def = footnote->node;
490
+
491
+ // keep track of a) count of how many times this footnote def has been
492
+ // referenced, and b) which reference index this footnote ref is at.
493
+ // this is used by renderers when generating links and backreferences.
494
+ cur->footnote.ref_ix = ++footnote->node->footnote.def_count;
495
+
488
496
  char n[32];
489
497
  snprintf(n, sizeof(n), "%d", footnote->ix);
490
498
  cmark_chunk_free(parser->mem, &cur->as.literal);
@@ -515,13 +523,16 @@ static void process_footnotes(cmark_parser *parser) {
515
523
  qsort(map->sorted, map->size, sizeof(cmark_map_entry *), sort_footnote_by_ix);
516
524
  for (unsigned int i = 0; i < map->size; ++i) {
517
525
  cmark_footnote *footnote = (cmark_footnote *)map->sorted[i];
518
- if (!footnote->ix)
526
+ if (!footnote->ix) {
527
+ cmark_node_unlink(footnote->node);
519
528
  continue;
529
+ }
520
530
  cmark_node_append_child(parser->root, footnote->node);
521
531
  footnote->node = NULL;
522
532
  }
523
533
  }
524
534
 
535
+ cmark_unlink_footnotes_map(map);
525
536
  cmark_map_free(map);
526
537
  }
527
538
 
@@ -1,7 +1,7 @@
1
1
  #ifndef CMARK_GFM_VERSION_H
2
2
  #define CMARK_GFM_VERSION_H
3
3
 
4
- #define CMARK_GFM_VERSION ((0 << 24) | (29 << 16) | (0 << 8) | 0)
5
- #define CMARK_GFM_VERSION_STRING "0.29.0.gfm.0"
4
+ #define CMARK_GFM_VERSION ((0 << 24) | (29 << 16) | (0 << 8) | 2)
5
+ #define CMARK_GFM_VERSION_STRING "0.29.0.gfm.2"
6
6
 
7
7
  #endif
@@ -477,7 +477,13 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node,
477
477
  case CMARK_NODE_FOOTNOTE_REFERENCE:
478
478
  if (entering) {
479
479
  LIT("[^");
480
- OUT(cmark_chunk_to_cstr(renderer->mem, &node->as.literal), false, LITERAL);
480
+
481
+ char *footnote_label = renderer->mem->calloc(node->parent_footnote_def->as.literal.len + 1, sizeof(char));
482
+ memmove(footnote_label, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);
483
+
484
+ OUT(footnote_label, false, LITERAL);
485
+ renderer->mem->free(footnote_label);
486
+
481
487
  LIT("]");
482
488
  }
483
489
  break;
@@ -486,9 +492,13 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node,
486
492
  if (entering) {
487
493
  renderer->footnote_ix += 1;
488
494
  LIT("[^");
489
- char n[32];
490
- snprintf(n, sizeof(n), "%d", renderer->footnote_ix);
491
- OUT(n, false, LITERAL);
495
+
496
+ char *footnote_label = renderer->mem->calloc(node->as.literal.len + 1, sizeof(char));
497
+ memmove(footnote_label, node->as.literal.data, node->as.literal.len);
498
+
499
+ OUT(footnote_label, false, LITERAL);
500
+ renderer->mem->free(footnote_label);
501
+
492
502
  LIT("]:\n");
493
503
 
494
504
  cmark_strbuf_puts(renderer->prefix, " ");
@@ -45,6 +45,13 @@ static VALUE encode_utf8_string(const char *c_string) {
45
45
  return string;
46
46
  }
47
47
 
48
+ /* Encode a C string using the encoding from Ruby string +source+. */
49
+ static VALUE encode_source_string(const char *c_string, VALUE source) {
50
+ VALUE string = rb_str_new2(c_string);
51
+ rb_enc_copy(string, source);
52
+ return string;
53
+ }
54
+
48
55
  static void rb_mark_c_struct(void *data) {
49
56
  cmark_node *node = data;
50
57
  cmark_node *child;
@@ -179,6 +186,40 @@ static VALUE rb_markdown_to_html(VALUE self, VALUE rb_text, VALUE rb_options, VA
179
186
  return ruby_html;
180
187
  }
181
188
 
189
+ /*
190
+ * Internal: Parses a Markdown string into an HTML string.
191
+ *
192
+ */
193
+ static VALUE rb_markdown_to_xml(VALUE self, VALUE rb_text, VALUE rb_options, VALUE rb_extensions) {
194
+ char *str, *xml;
195
+ int len;
196
+ cmark_parser *parser;
197
+ cmark_node *doc;
198
+ Check_Type(rb_text, T_STRING);
199
+ Check_Type(rb_options, T_FIXNUM);
200
+
201
+ parser = prepare_parser(rb_options, rb_extensions, cmark_get_arena_mem_allocator());
202
+
203
+ str = (char *)RSTRING_PTR(rb_text);
204
+ len = RSTRING_LEN(rb_text);
205
+
206
+ cmark_parser_feed(parser, str, len);
207
+ doc = cmark_parser_finish(parser);
208
+ if (doc == NULL) {
209
+ cmark_arena_reset();
210
+ rb_raise(rb_eNodeError, "error parsing document");
211
+ }
212
+
213
+ cmark_mem *default_mem = cmark_get_default_mem_allocator();
214
+ xml = cmark_render_xml_with_mem(doc, FIX2INT(rb_options), default_mem);
215
+ cmark_arena_reset();
216
+
217
+ VALUE ruby_xml = rb_str_new2(xml);
218
+ default_mem->free(xml);
219
+
220
+ return ruby_xml;
221
+ }
222
+
182
223
  /*
183
224
  * Internal: Creates a node based on a node type.
184
225
  *
@@ -567,6 +608,28 @@ static VALUE rb_render_html(VALUE self, VALUE rb_options, VALUE rb_extensions) {
567
608
  return ruby_html;
568
609
  }
569
610
 
611
+ /* Internal: Convert the node to an XML string.
612
+ *
613
+ * Returns a {String}.
614
+ */
615
+ static VALUE rb_render_xml(VALUE self, VALUE rb_options) {
616
+ int options;
617
+ int i;
618
+ cmark_node *node;
619
+ Check_Type(rb_options, T_FIXNUM);
620
+
621
+ options = FIX2INT(rb_options);
622
+
623
+ Data_Get_Struct(self, cmark_node, node);
624
+
625
+ char *xml = cmark_render_xml(node, options);
626
+ VALUE ruby_xml = rb_str_new2(xml);
627
+
628
+ free(xml);
629
+
630
+ return ruby_xml;
631
+ }
632
+
570
633
  /* Internal: Convert the node to a CommonMark string.
571
634
  *
572
635
  * Returns a {String}.
@@ -1130,7 +1193,8 @@ static VALUE rb_html_escape_href(VALUE self, VALUE rb_text) {
1130
1193
  if (houdini_escape_href(&buf, (const uint8_t *)RSTRING_PTR(rb_text),
1131
1194
  RSTRING_LEN(rb_text))) {
1132
1195
  result = (char *)cmark_strbuf_detach(&buf);
1133
- return rb_str_new2(result);
1196
+ return encode_source_string(result, rb_text);
1197
+
1134
1198
  }
1135
1199
 
1136
1200
  return rb_text;
@@ -1150,7 +1214,7 @@ static VALUE rb_html_escape_html(VALUE self, VALUE rb_text) {
1150
1214
  if (houdini_escape_html0(&buf, (const uint8_t *)RSTRING_PTR(rb_text),
1151
1215
  RSTRING_LEN(rb_text), 0)) {
1152
1216
  result = (char *)cmark_strbuf_detach(&buf);
1153
- return rb_str_new2(result);
1217
+ return encode_source_string(result, rb_text);
1154
1218
  }
1155
1219
 
1156
1220
  return rb_text;
@@ -1208,6 +1272,8 @@ __attribute__((visibility("default"))) void Init_commonmarker() {
1208
1272
  rb_cNode = rb_define_class_under(module, "Node", rb_cObject);
1209
1273
  rb_define_singleton_method(rb_cNode, "markdown_to_html", rb_markdown_to_html,
1210
1274
  3);
1275
+ rb_define_singleton_method(rb_cNode, "markdown_to_xml", rb_markdown_to_xml,
1276
+ 3);
1211
1277
  rb_define_singleton_method(rb_cNode, "new", rb_node_new, 1);
1212
1278
  rb_define_singleton_method(rb_cNode, "parse_document", rb_parse_document, 4);
1213
1279
  rb_define_method(rb_cNode, "string_content", rb_node_get_string_content, 0);
@@ -1220,6 +1286,7 @@ __attribute__((visibility("default"))) void Init_commonmarker() {
1220
1286
  rb_define_method(rb_cNode, "next", rb_node_next, 0);
1221
1287
  rb_define_method(rb_cNode, "insert_before", rb_node_insert_before, 1);
1222
1288
  rb_define_method(rb_cNode, "_render_html", rb_render_html, 2);
1289
+ rb_define_method(rb_cNode, "_render_xml", rb_render_xml, 1);
1223
1290
  rb_define_method(rb_cNode, "_render_commonmark", rb_render_commonmark, -1);
1224
1291
  rb_define_method(rb_cNode, "_render_plaintext", rb_render_plaintext, -1);
1225
1292
  rb_define_method(rb_cNode, "insert_after", rb_node_insert_after, 1);
@@ -1,4 +1,5 @@
1
- /* Generated by re2c 1.1.1 */
1
+ /* Generated by re2c 1.3 */
2
+
2
3
  #include "ext_scanners.h"
3
4
  #include <stdlib.h>
4
5
 
@@ -39,265 +40,180 @@ bufsize_t _scan_table_start(const unsigned char *p) {
39
40
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
40
41
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
41
42
  };
42
- yych = *(marker = p);
43
- if (yych <= '{') {
44
- if (yych <= 0x1F) {
45
- if (yych <= '\t') {
46
- if (yych <= 0x08)
47
- goto yy3;
43
+ yych = *p;
44
+ if (yych <= ' ') {
45
+ if (yych <= '\n') {
46
+ if (yych == '\t')
48
47
  goto yy4;
49
- } else {
50
- if (yych <= '\n')
51
- goto yy2;
52
- if (yych <= '\f')
53
- goto yy4;
54
- goto yy3;
55
- }
56
48
  } else {
57
- if (yych <= '-') {
58
- if (yych <= ' ')
59
- goto yy4;
60
- if (yych <= ',')
61
- goto yy3;
62
- goto yy5;
63
- } else {
64
- if (yych == ':')
65
- goto yy6;
66
- goto yy3;
67
- }
49
+ if (yych <= '\f')
50
+ goto yy4;
51
+ if (yych >= ' ')
52
+ goto yy4;
68
53
  }
69
54
  } else {
70
- if (yych <= 0xEC) {
71
- if (yych <= 0xC1) {
72
- if (yych <= '|')
73
- goto yy4;
74
- if (yych <= 0x7F)
75
- goto yy3;
76
- } else {
77
- if (yych <= 0xDF)
78
- goto yy7;
79
- if (yych <= 0xE0)
80
- goto yy9;
81
- goto yy10;
82
- }
55
+ if (yych <= '9') {
56
+ if (yych == '-')
57
+ goto yy5;
83
58
  } else {
84
- if (yych <= 0xF0) {
85
- if (yych <= 0xED)
86
- goto yy11;
87
- if (yych <= 0xEF)
88
- goto yy10;
89
- goto yy12;
90
- } else {
91
- if (yych <= 0xF3)
92
- goto yy13;
93
- if (yych <= 0xF4)
94
- goto yy14;
95
- }
59
+ if (yych <= ':')
60
+ goto yy6;
61
+ if (yych == '|')
62
+ goto yy4;
96
63
  }
97
64
  }
98
- yy2 : { return 0; }
99
- yy3:
100
65
  ++p;
101
- goto yy2;
66
+ yy3 : { return 0; }
102
67
  yy4:
103
68
  yych = *(marker = ++p);
104
69
  if (yybm[0 + yych] & 64) {
105
- goto yy15;
70
+ goto yy7;
106
71
  }
107
72
  if (yych == '-')
108
- goto yy17;
73
+ goto yy10;
109
74
  if (yych == ':')
110
- goto yy19;
111
- goto yy2;
75
+ goto yy12;
76
+ goto yy3;
112
77
  yy5:
113
78
  yych = *(marker = ++p);
114
79
  if (yybm[0 + yych] & 128) {
115
- goto yy17;
80
+ goto yy10;
116
81
  }
117
82
  if (yych <= ' ') {
118
83
  if (yych <= 0x08)
119
- goto yy2;
84
+ goto yy3;
120
85
  if (yych <= '\r')
121
- goto yy21;
86
+ goto yy14;
122
87
  if (yych <= 0x1F)
123
- goto yy2;
124
- goto yy21;
88
+ goto yy3;
89
+ goto yy14;
125
90
  } else {
126
91
  if (yych <= ':') {
127
92
  if (yych <= '9')
128
- goto yy2;
129
- goto yy20;
93
+ goto yy3;
94
+ goto yy13;
130
95
  } else {
131
96
  if (yych == '|')
132
- goto yy21;
133
- goto yy2;
97
+ goto yy14;
98
+ goto yy3;
134
99
  }
135
100
  }
136
101
  yy6:
137
102
  yych = *(marker = ++p);
138
103
  if (yybm[0 + yych] & 128) {
139
- goto yy17;
104
+ goto yy10;
140
105
  }
141
- goto yy2;
106
+ goto yy3;
142
107
  yy7:
143
- yych = *++p;
144
- if (yych <= 0x7F)
145
- goto yy8;
146
- if (yych <= 0xBF)
147
- goto yy3;
148
- yy8:
149
- p = marker;
150
- goto yy2;
151
- yy9:
152
- yych = *++p;
153
- if (yych <= 0x9F)
154
- goto yy8;
155
- if (yych <= 0xBF)
156
- goto yy7;
157
- goto yy8;
158
- yy10:
159
- yych = *++p;
160
- if (yych <= 0x7F)
161
- goto yy8;
162
- if (yych <= 0xBF)
163
- goto yy7;
164
- goto yy8;
165
- yy11:
166
- yych = *++p;
167
- if (yych <= 0x7F)
168
- goto yy8;
169
- if (yych <= 0x9F)
170
- goto yy7;
171
- goto yy8;
172
- yy12:
173
- yych = *++p;
174
- if (yych <= 0x8F)
175
- goto yy8;
176
- if (yych <= 0xBF)
177
- goto yy10;
178
- goto yy8;
179
- yy13:
180
- yych = *++p;
181
- if (yych <= 0x7F)
182
- goto yy8;
183
- if (yych <= 0xBF)
184
- goto yy10;
185
- goto yy8;
186
- yy14:
187
- yych = *++p;
188
- if (yych <= 0x7F)
189
- goto yy8;
190
- if (yych <= 0x8F)
191
- goto yy10;
192
- goto yy8;
193
- yy15:
194
108
  yych = *++p;
195
109
  if (yybm[0 + yych] & 64) {
196
- goto yy15;
110
+ goto yy7;
197
111
  }
198
112
  if (yych == '-')
199
- goto yy17;
113
+ goto yy10;
200
114
  if (yych == ':')
201
- goto yy19;
202
- goto yy8;
203
- yy17:
115
+ goto yy12;
116
+ yy9:
117
+ p = marker;
118
+ goto yy3;
119
+ yy10:
204
120
  yych = *++p;
205
121
  if (yybm[0 + yych] & 128) {
206
- goto yy17;
122
+ goto yy10;
207
123
  }
208
124
  if (yych <= 0x1F) {
209
125
  if (yych <= '\n') {
210
126
  if (yych <= 0x08)
211
- goto yy8;
127
+ goto yy9;
212
128
  if (yych <= '\t')
213
- goto yy20;
214
- goto yy22;
129
+ goto yy13;
130
+ goto yy15;
215
131
  } else {
216
132
  if (yych <= '\f')
217
- goto yy20;
133
+ goto yy13;
218
134
  if (yych <= '\r')
219
- goto yy24;
220
- goto yy8;
135
+ goto yy17;
136
+ goto yy9;
221
137
  }
222
138
  } else {
223
139
  if (yych <= ':') {
224
140
  if (yych <= ' ')
225
- goto yy20;
141
+ goto yy13;
226
142
  if (yych <= '9')
227
- goto yy8;
228
- goto yy20;
143
+ goto yy9;
144
+ goto yy13;
229
145
  } else {
230
146
  if (yych == '|')
231
- goto yy25;
232
- goto yy8;
147
+ goto yy18;
148
+ goto yy9;
233
149
  }
234
150
  }
235
- yy19:
151
+ yy12:
236
152
  yych = *++p;
237
153
  if (yybm[0 + yych] & 128) {
238
- goto yy17;
154
+ goto yy10;
239
155
  }
240
- goto yy8;
241
- yy20:
156
+ goto yy9;
157
+ yy13:
242
158
  yych = *++p;
243
- yy21:
159
+ yy14:
244
160
  if (yych <= '\r') {
245
161
  if (yych <= '\t') {
246
162
  if (yych <= 0x08)
247
- goto yy8;
248
- goto yy20;
163
+ goto yy9;
164
+ goto yy13;
249
165
  } else {
250
166
  if (yych <= '\n')
251
- goto yy22;
167
+ goto yy15;
252
168
  if (yych <= '\f')
253
- goto yy20;
254
- goto yy24;
169
+ goto yy13;
170
+ goto yy17;
255
171
  }
256
172
  } else {
257
173
  if (yych <= ' ') {
258
174
  if (yych <= 0x1F)
259
- goto yy8;
260
- goto yy20;
175
+ goto yy9;
176
+ goto yy13;
261
177
  } else {
262
178
  if (yych == '|')
263
- goto yy25;
264
- goto yy8;
179
+ goto yy18;
180
+ goto yy9;
265
181
  }
266
182
  }
267
- yy22:
183
+ yy15:
268
184
  ++p;
269
185
  { return (bufsize_t)(p - start); }
270
- yy24:
186
+ yy17:
271
187
  yych = *++p;
272
188
  if (yych == '\n')
273
- goto yy22;
274
- goto yy8;
275
- yy25:
189
+ goto yy15;
190
+ goto yy9;
191
+ yy18:
276
192
  yych = *++p;
277
193
  if (yybm[0 + yych] & 128) {
278
- goto yy17;
194
+ goto yy10;
279
195
  }
280
196
  if (yych <= '\r') {
281
197
  if (yych <= '\t') {
282
198
  if (yych <= 0x08)
283
- goto yy8;
284
- goto yy25;
199
+ goto yy9;
200
+ goto yy18;
285
201
  } else {
286
202
  if (yych <= '\n')
287
- goto yy22;
203
+ goto yy15;
288
204
  if (yych <= '\f')
289
- goto yy25;
290
- goto yy24;
205
+ goto yy18;
206
+ goto yy17;
291
207
  }
292
208
  } else {
293
209
  if (yych <= ' ') {
294
210
  if (yych <= 0x1F)
295
- goto yy8;
296
- goto yy25;
211
+ goto yy9;
212
+ goto yy18;
297
213
  } else {
298
214
  if (yych == ':')
299
- goto yy19;
300
- goto yy8;
215
+ goto yy12;
216
+ goto yy9;
301
217
  }
302
218
  }
303
219
  }
@@ -309,6 +225,7 @@ bufsize_t _scan_table_cell(const unsigned char *p) {
309
225
 
310
226
  {
311
227
  unsigned char yych;
228
+ unsigned int yyaccept = 0;
312
229
  static const unsigned char yybm[] = {
313
230
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 0, 64, 64, 64, 64,
314
231
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
@@ -326,53 +243,51 @@ bufsize_t _scan_table_cell(const unsigned char *p) {
326
243
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
327
244
  0, 0, 0, 0,
328
245
  };
329
- yych = *(marker = p);
246
+ yych = *p;
330
247
  if (yybm[0 + yych] & 64) {
331
- goto yy30;
248
+ goto yy22;
332
249
  }
333
- if (yych <= 0xE0) {
334
- if (yych <= '\\') {
335
- if (yych <= '\n')
336
- goto yy29;
250
+ if (yych <= 0xEC) {
251
+ if (yych <= 0xC1) {
337
252
  if (yych <= '\r')
338
- goto yy32;
339
- goto yy34;
253
+ goto yy25;
254
+ if (yych <= '\\')
255
+ goto yy27;
256
+ goto yy25;
340
257
  } else {
341
- if (yych <= '|')
342
- goto yy32;
343
- if (yych <= 0xC1)
344
- goto yy29;
345
258
  if (yych <= 0xDF)
346
- goto yy36;
347
- goto yy38;
259
+ goto yy29;
260
+ if (yych <= 0xE0)
261
+ goto yy30;
262
+ goto yy31;
348
263
  }
349
264
  } else {
350
- if (yych <= 0xEF) {
351
- if (yych == 0xED)
352
- goto yy40;
353
- goto yy39;
265
+ if (yych <= 0xF0) {
266
+ if (yych <= 0xED)
267
+ goto yy32;
268
+ if (yych <= 0xEF)
269
+ goto yy31;
270
+ goto yy33;
354
271
  } else {
355
- if (yych <= 0xF0)
356
- goto yy41;
357
272
  if (yych <= 0xF3)
358
- goto yy42;
273
+ goto yy34;
359
274
  if (yych <= 0xF4)
360
- goto yy43;
275
+ goto yy35;
276
+ goto yy25;
361
277
  }
362
278
  }
363
- yy29 : { return (bufsize_t)(p - start); }
364
- yy30:
279
+ yy22:
280
+ yyaccept = 0;
365
281
  yych = *(marker = ++p);
366
282
  if (yybm[0 + yych] & 64) {
367
- goto yy30;
283
+ goto yy22;
368
284
  }
369
285
  if (yych <= 0xEC) {
370
286
  if (yych <= 0xC1) {
371
287
  if (yych <= '\r')
372
- goto yy29;
288
+ goto yy24;
373
289
  if (yych <= '\\')
374
- goto yy34;
375
- goto yy29;
290
+ goto yy27;
376
291
  } else {
377
292
  if (yych <= 0xDF)
378
293
  goto yy36;
@@ -392,29 +307,31 @@ bufsize_t _scan_table_cell(const unsigned char *p) {
392
307
  goto yy42;
393
308
  if (yych <= 0xF4)
394
309
  goto yy43;
395
- goto yy29;
396
310
  }
397
311
  }
398
- yy32:
312
+ yy24 : { return (bufsize_t)(p - start); }
313
+ yy25:
399
314
  ++p;
400
- { return 0; }
401
- yy34:
315
+ yy26 : { return 0; }
316
+ yy27:
317
+ yyaccept = 0;
402
318
  yych = *(marker = ++p);
403
319
  if (yybm[0 + yych] & 128) {
404
- goto yy34;
320
+ goto yy27;
405
321
  }
406
322
  if (yych <= 0xDF) {
407
323
  if (yych <= '\f') {
408
324
  if (yych == '\n')
409
- goto yy29;
410
- goto yy30;
325
+ goto yy24;
326
+ goto yy22;
411
327
  } else {
412
328
  if (yych <= '\r')
413
- goto yy29;
329
+ goto yy24;
414
330
  if (yych <= 0x7F)
415
- goto yy30;
331
+ goto yy22;
416
332
  if (yych <= 0xC1)
417
- goto yy29;
333
+ goto yy24;
334
+ goto yy36;
418
335
  }
419
336
  } else {
420
337
  if (yych <= 0xEF) {
@@ -430,18 +347,77 @@ bufsize_t _scan_table_cell(const unsigned char *p) {
430
347
  goto yy42;
431
348
  if (yych <= 0xF4)
432
349
  goto yy43;
433
- goto yy29;
350
+ goto yy24;
434
351
  }
435
352
  }
353
+ yy29:
354
+ yych = *++p;
355
+ if (yych <= 0x7F)
356
+ goto yy26;
357
+ if (yych <= 0xBF)
358
+ goto yy22;
359
+ goto yy26;
360
+ yy30:
361
+ yyaccept = 1;
362
+ yych = *(marker = ++p);
363
+ if (yych <= 0x9F)
364
+ goto yy26;
365
+ if (yych <= 0xBF)
366
+ goto yy36;
367
+ goto yy26;
368
+ yy31:
369
+ yyaccept = 1;
370
+ yych = *(marker = ++p);
371
+ if (yych <= 0x7F)
372
+ goto yy26;
373
+ if (yych <= 0xBF)
374
+ goto yy36;
375
+ goto yy26;
376
+ yy32:
377
+ yyaccept = 1;
378
+ yych = *(marker = ++p);
379
+ if (yych <= 0x7F)
380
+ goto yy26;
381
+ if (yych <= 0x9F)
382
+ goto yy36;
383
+ goto yy26;
384
+ yy33:
385
+ yyaccept = 1;
386
+ yych = *(marker = ++p);
387
+ if (yych <= 0x8F)
388
+ goto yy26;
389
+ if (yych <= 0xBF)
390
+ goto yy39;
391
+ goto yy26;
392
+ yy34:
393
+ yyaccept = 1;
394
+ yych = *(marker = ++p);
395
+ if (yych <= 0x7F)
396
+ goto yy26;
397
+ if (yych <= 0xBF)
398
+ goto yy39;
399
+ goto yy26;
400
+ yy35:
401
+ yyaccept = 1;
402
+ yych = *(marker = ++p);
403
+ if (yych <= 0x7F)
404
+ goto yy26;
405
+ if (yych <= 0x8F)
406
+ goto yy39;
407
+ goto yy26;
436
408
  yy36:
437
409
  yych = *++p;
438
410
  if (yych <= 0x7F)
439
411
  goto yy37;
440
412
  if (yych <= 0xBF)
441
- goto yy30;
413
+ goto yy22;
442
414
  yy37:
443
415
  p = marker;
444
- goto yy29;
416
+ if (yyaccept == 0) {
417
+ goto yy24;
418
+ } else {
419
+ goto yy26;
420
+ }
445
421
  yy38:
446
422
  yych = *++p;
447
423
  if (yych <= 0x9F)
@@ -488,12 +464,10 @@ bufsize_t _scan_table_cell(const unsigned char *p) {
488
464
  }
489
465
 
490
466
  bufsize_t _scan_table_cell_end(const unsigned char *p) {
491
- const unsigned char *marker = NULL;
492
467
  const unsigned char *start = p;
493
468
 
494
469
  {
495
470
  unsigned char yych;
496
- unsigned int yyaccept = 0;
497
471
  static const unsigned char yybm[] = {
498
472
  0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0,
499
473
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0,
@@ -509,115 +483,17 @@ bufsize_t _scan_table_cell_end(const unsigned char *p) {
509
483
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
510
484
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
511
485
  };
512
- yych = *(marker = p);
513
- if (yych <= 0xDF) {
514
- if (yych <= '{') {
515
- if (yych != '\n')
516
- goto yy47;
517
- } else {
518
- if (yych <= '|')
519
- goto yy48;
520
- if (yych <= 0x7F)
521
- goto yy47;
522
- if (yych >= 0xC2)
523
- goto yy51;
524
- }
525
- } else {
526
- if (yych <= 0xEF) {
527
- if (yych <= 0xE0)
528
- goto yy53;
529
- if (yych == 0xED)
530
- goto yy55;
531
- goto yy54;
532
- } else {
533
- if (yych <= 0xF0)
534
- goto yy56;
535
- if (yych <= 0xF3)
536
- goto yy57;
537
- if (yych <= 0xF4)
538
- goto yy58;
539
- }
540
- }
541
- yy46 : { return 0; }
542
- yy47:
486
+ yych = *p;
487
+ if (yych == '|')
488
+ goto yy48;
543
489
  ++p;
544
- goto yy46;
490
+ { return 0; }
545
491
  yy48:
546
- yyaccept = 1;
547
- yych = *(marker = ++p);
492
+ yych = *++p;
548
493
  if (yybm[0 + yych] & 128) {
549
494
  goto yy48;
550
495
  }
551
- if (yych <= 0x08)
552
- goto yy50;
553
- if (yych <= '\n')
554
- goto yy59;
555
- if (yych <= '\r')
556
- goto yy60;
557
- yy50 : { return (bufsize_t)(p - start); }
558
- yy51:
559
- yych = *++p;
560
- if (yych <= 0x7F)
561
- goto yy52;
562
- if (yych <= 0xBF)
563
- goto yy47;
564
- yy52:
565
- p = marker;
566
- if (yyaccept == 0) {
567
- goto yy46;
568
- } else {
569
- goto yy50;
570
- }
571
- yy53:
572
- yych = *++p;
573
- if (yych <= 0x9F)
574
- goto yy52;
575
- if (yych <= 0xBF)
576
- goto yy51;
577
- goto yy52;
578
- yy54:
579
- yych = *++p;
580
- if (yych <= 0x7F)
581
- goto yy52;
582
- if (yych <= 0xBF)
583
- goto yy51;
584
- goto yy52;
585
- yy55:
586
- yych = *++p;
587
- if (yych <= 0x7F)
588
- goto yy52;
589
- if (yych <= 0x9F)
590
- goto yy51;
591
- goto yy52;
592
- yy56:
593
- yych = *++p;
594
- if (yych <= 0x8F)
595
- goto yy52;
596
- if (yych <= 0xBF)
597
- goto yy54;
598
- goto yy52;
599
- yy57:
600
- yych = *++p;
601
- if (yych <= 0x7F)
602
- goto yy52;
603
- if (yych <= 0xBF)
604
- goto yy54;
605
- goto yy52;
606
- yy58:
607
- yych = *++p;
608
- if (yych <= 0x7F)
609
- goto yy52;
610
- if (yych <= 0x8F)
611
- goto yy54;
612
- goto yy52;
613
- yy59:
614
- ++p;
615
- goto yy50;
616
- yy60:
617
- yych = *++p;
618
- if (yych == '\n')
619
- goto yy59;
620
- goto yy52;
496
+ { return (bufsize_t)(p - start); }
621
497
  }
622
498
  }
623
499
 
@@ -642,138 +518,62 @@ bufsize_t _scan_table_row_end(const unsigned char *p) {
642
518
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
643
519
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
644
520
  };
645
- yych = *(marker = p);
646
- if (yych <= 0xC1) {
647
- if (yych <= '\f') {
648
- if (yych <= 0x08)
649
- goto yy64;
650
- if (yych == '\n')
651
- goto yy66;
652
- goto yy65;
653
- } else {
654
- if (yych <= 0x1F) {
655
- if (yych <= '\r')
656
- goto yy68;
657
- goto yy64;
658
- } else {
659
- if (yych <= ' ')
660
- goto yy65;
661
- if (yych <= 0x7F)
662
- goto yy64;
663
- }
664
- }
521
+ yych = *p;
522
+ if (yych <= '\f') {
523
+ if (yych <= 0x08)
524
+ goto yy53;
525
+ if (yych == '\n')
526
+ goto yy56;
527
+ goto yy55;
665
528
  } else {
666
- if (yych <= 0xED) {
667
- if (yych <= 0xDF)
668
- goto yy69;
669
- if (yych <= 0xE0)
670
- goto yy71;
671
- if (yych <= 0xEC)
672
- goto yy72;
673
- goto yy73;
674
- } else {
675
- if (yych <= 0xF0) {
676
- if (yych <= 0xEF)
677
- goto yy72;
678
- goto yy74;
679
- } else {
680
- if (yych <= 0xF3)
681
- goto yy75;
682
- if (yych <= 0xF4)
683
- goto yy76;
684
- }
685
- }
529
+ if (yych <= '\r')
530
+ goto yy58;
531
+ if (yych == ' ')
532
+ goto yy55;
686
533
  }
687
- yy63 : { return 0; }
688
- yy64:
534
+ yy53:
689
535
  ++p;
690
- goto yy63;
691
- yy65:
536
+ yy54 : { return 0; }
537
+ yy55:
692
538
  yych = *(marker = ++p);
693
539
  if (yych <= 0x08)
694
- goto yy63;
540
+ goto yy54;
695
541
  if (yych <= '\r')
696
- goto yy78;
542
+ goto yy60;
697
543
  if (yych == ' ')
698
- goto yy78;
699
- goto yy63;
700
- yy66:
544
+ goto yy60;
545
+ goto yy54;
546
+ yy56:
701
547
  ++p;
702
548
  { return (bufsize_t)(p - start); }
703
- yy68:
549
+ yy58:
704
550
  yych = *++p;
705
551
  if (yych == '\n')
706
- goto yy66;
707
- goto yy63;
708
- yy69:
709
- yych = *++p;
710
- if (yych <= 0x7F)
711
- goto yy70;
712
- if (yych <= 0xBF)
713
- goto yy64;
714
- yy70:
715
- p = marker;
716
- goto yy63;
717
- yy71:
718
- yych = *++p;
719
- if (yych <= 0x9F)
720
- goto yy70;
721
- if (yych <= 0xBF)
722
- goto yy69;
723
- goto yy70;
724
- yy72:
725
- yych = *++p;
726
- if (yych <= 0x7F)
727
- goto yy70;
728
- if (yych <= 0xBF)
729
- goto yy69;
730
- goto yy70;
731
- yy73:
732
- yych = *++p;
733
- if (yych <= 0x7F)
734
- goto yy70;
735
- if (yych <= 0x9F)
736
- goto yy69;
737
- goto yy70;
738
- yy74:
739
- yych = *++p;
740
- if (yych <= 0x8F)
741
- goto yy70;
742
- if (yych <= 0xBF)
743
- goto yy72;
744
- goto yy70;
745
- yy75:
746
- yych = *++p;
747
- if (yych <= 0x7F)
748
- goto yy70;
749
- if (yych <= 0xBF)
750
- goto yy72;
751
- goto yy70;
752
- yy76:
753
- yych = *++p;
754
- if (yych <= 0x7F)
755
- goto yy70;
756
- if (yych <= 0x8F)
757
- goto yy72;
758
- goto yy70;
759
- yy77:
552
+ goto yy56;
553
+ goto yy54;
554
+ yy59:
760
555
  yych = *++p;
761
- yy78:
556
+ yy60:
762
557
  if (yybm[0 + yych] & 128) {
763
- goto yy77;
558
+ goto yy59;
764
559
  }
765
560
  if (yych <= 0x08)
766
- goto yy70;
561
+ goto yy61;
767
562
  if (yych <= '\n')
768
- goto yy66;
769
- if (yych >= 0x0E)
770
- goto yy70;
563
+ goto yy56;
564
+ if (yych <= '\r')
565
+ goto yy62;
566
+ yy61:
567
+ p = marker;
568
+ goto yy54;
569
+ yy62:
771
570
  yych = *++p;
772
571
  if (yych == '\n')
773
- goto yy66;
774
- goto yy70;
572
+ goto yy56;
573
+ goto yy61;
775
574
  }
776
575
  }
576
+
777
577
  bufsize_t _scan_tasklist(const unsigned char *p) {
778
578
  const unsigned char *marker = NULL;
779
579
  const unsigned char *start = p;
@@ -798,361 +598,281 @@ bufsize_t _scan_tasklist(const unsigned char *p) {
798
598
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
799
599
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
800
600
  };
801
- yych = *(marker = p);
802
- if (yych <= '/') {
803
- if (yych <= 0x1F) {
804
- if (yych <= '\t') {
805
- if (yych <= 0x08)
806
- goto yy83;
807
- goto yy84;
808
- } else {
809
- if (yych <= '\n')
810
- goto yy82;
811
- if (yych <= '\f')
812
- goto yy84;
813
- goto yy83;
814
- }
601
+ yych = *p;
602
+ if (yych <= ' ') {
603
+ if (yych <= '\n') {
604
+ if (yych == '\t')
605
+ goto yy67;
815
606
  } else {
816
- if (yych <= '+') {
817
- if (yych <= ' ')
818
- goto yy84;
819
- if (yych <= ')')
820
- goto yy83;
821
- goto yy85;
822
- } else {
823
- if (yych == '-')
824
- goto yy85;
825
- goto yy83;
826
- }
607
+ if (yych <= '\f')
608
+ goto yy67;
609
+ if (yych >= ' ')
610
+ goto yy67;
827
611
  }
828
612
  } else {
829
- if (yych <= 0xEC) {
830
- if (yych <= 0xC1) {
831
- if (yych <= '9')
832
- goto yy86;
833
- if (yych <= 0x7F)
834
- goto yy83;
835
- } else {
836
- if (yych <= 0xDF)
837
- goto yy87;
838
- if (yych <= 0xE0)
839
- goto yy89;
840
- goto yy90;
841
- }
613
+ if (yych <= ',') {
614
+ if (yych <= ')')
615
+ goto yy65;
616
+ if (yych <= '+')
617
+ goto yy68;
842
618
  } else {
843
- if (yych <= 0xF0) {
844
- if (yych <= 0xED)
845
- goto yy91;
846
- if (yych <= 0xEF)
847
- goto yy90;
848
- goto yy92;
849
- } else {
850
- if (yych <= 0xF3)
851
- goto yy93;
852
- if (yych <= 0xF4)
853
- goto yy94;
854
- }
619
+ if (yych <= '-')
620
+ goto yy68;
621
+ if (yych <= '/')
622
+ goto yy65;
623
+ if (yych <= '9')
624
+ goto yy69;
855
625
  }
856
626
  }
857
- yy82 : { return 0; }
858
- yy83:
627
+ yy65:
859
628
  ++p;
860
- goto yy82;
861
- yy84:
629
+ yy66 : { return 0; }
630
+ yy67:
862
631
  yych = *(marker = ++p);
863
632
  if (yybm[0 + yych] & 64) {
864
- goto yy95;
633
+ goto yy70;
865
634
  }
866
635
  if (yych <= ',') {
867
636
  if (yych <= ')')
868
- goto yy82;
637
+ goto yy66;
869
638
  if (yych <= '+')
870
- goto yy97;
871
- goto yy82;
639
+ goto yy73;
640
+ goto yy66;
872
641
  } else {
873
642
  if (yych <= '-')
874
- goto yy97;
643
+ goto yy73;
875
644
  if (yych <= '/')
876
- goto yy82;
645
+ goto yy66;
877
646
  if (yych <= '9')
878
- goto yy98;
879
- goto yy82;
647
+ goto yy74;
648
+ goto yy66;
880
649
  }
881
- yy85:
650
+ yy68:
882
651
  yych = *(marker = ++p);
883
652
  if (yych <= '\n') {
884
653
  if (yych == '\t')
885
- goto yy99;
886
- goto yy82;
654
+ goto yy75;
655
+ goto yy66;
887
656
  } else {
888
657
  if (yych <= '\f')
889
- goto yy99;
658
+ goto yy75;
890
659
  if (yych == ' ')
891
- goto yy99;
892
- goto yy82;
660
+ goto yy75;
661
+ goto yy66;
893
662
  }
894
- yy86:
663
+ yy69:
895
664
  yych = *(marker = ++p);
896
665
  if (yych <= 0x1F) {
897
666
  if (yych <= '\t') {
898
667
  if (yych <= 0x08)
899
- goto yy102;
900
- goto yy97;
668
+ goto yy78;
669
+ goto yy73;
901
670
  } else {
902
671
  if (yych <= '\n')
903
- goto yy82;
672
+ goto yy66;
904
673
  if (yych <= '\f')
905
- goto yy97;
906
- goto yy102;
674
+ goto yy73;
675
+ goto yy78;
907
676
  }
908
677
  } else {
909
678
  if (yych <= 0x7F) {
910
679
  if (yych <= ' ')
911
- goto yy97;
912
- goto yy102;
680
+ goto yy73;
681
+ goto yy78;
913
682
  } else {
914
683
  if (yych <= 0xC1)
915
- goto yy82;
684
+ goto yy66;
916
685
  if (yych <= 0xF4)
917
- goto yy102;
918
- goto yy82;
686
+ goto yy78;
687
+ goto yy66;
919
688
  }
920
689
  }
921
- yy87:
922
- yych = *++p;
923
- if (yych <= 0x7F)
924
- goto yy88;
925
- if (yych <= 0xBF)
926
- goto yy83;
927
- yy88:
928
- p = marker;
929
- goto yy82;
930
- yy89:
931
- yych = *++p;
932
- if (yych <= 0x9F)
933
- goto yy88;
934
- if (yych <= 0xBF)
935
- goto yy87;
936
- goto yy88;
937
- yy90:
938
- yych = *++p;
939
- if (yych <= 0x7F)
940
- goto yy88;
941
- if (yych <= 0xBF)
942
- goto yy87;
943
- goto yy88;
944
- yy91:
945
- yych = *++p;
946
- if (yych <= 0x7F)
947
- goto yy88;
948
- if (yych <= 0x9F)
949
- goto yy87;
950
- goto yy88;
951
- yy92:
952
- yych = *++p;
953
- if (yych <= 0x8F)
954
- goto yy88;
955
- if (yych <= 0xBF)
956
- goto yy90;
957
- goto yy88;
958
- yy93:
959
- yych = *++p;
960
- if (yych <= 0x7F)
961
- goto yy88;
962
- if (yych <= 0xBF)
963
- goto yy90;
964
- goto yy88;
965
- yy94:
966
- yych = *++p;
967
- if (yych <= 0x7F)
968
- goto yy88;
969
- if (yych <= 0x8F)
970
- goto yy90;
971
- goto yy88;
972
- yy95:
690
+ yy70:
973
691
  yych = *++p;
974
692
  if (yybm[0 + yych] & 64) {
975
- goto yy95;
693
+ goto yy70;
976
694
  }
977
695
  if (yych <= ',') {
978
696
  if (yych <= ')')
979
- goto yy88;
980
- if (yych >= ',')
981
- goto yy88;
697
+ goto yy72;
698
+ if (yych <= '+')
699
+ goto yy73;
982
700
  } else {
983
701
  if (yych <= '-')
984
- goto yy97;
702
+ goto yy73;
985
703
  if (yych <= '/')
986
- goto yy88;
704
+ goto yy72;
987
705
  if (yych <= '9')
988
- goto yy98;
989
- goto yy88;
706
+ goto yy74;
990
707
  }
991
- yy97:
708
+ yy72:
709
+ p = marker;
710
+ goto yy66;
711
+ yy73:
992
712
  yych = *++p;
993
713
  if (yych == '[')
994
- goto yy88;
995
- goto yy100;
996
- yy98:
714
+ goto yy72;
715
+ goto yy76;
716
+ yy74:
997
717
  yych = *++p;
998
718
  if (yych <= '\n') {
999
719
  if (yych == '\t')
1000
- goto yy97;
1001
- goto yy102;
720
+ goto yy73;
721
+ goto yy78;
1002
722
  } else {
1003
723
  if (yych <= '\f')
1004
- goto yy97;
724
+ goto yy73;
1005
725
  if (yych == ' ')
1006
- goto yy97;
1007
- goto yy102;
726
+ goto yy73;
727
+ goto yy78;
1008
728
  }
1009
- yy99:
729
+ yy75:
1010
730
  yych = *++p;
1011
- yy100:
731
+ yy76:
1012
732
  if (yych <= '\f') {
1013
733
  if (yych == '\t')
1014
- goto yy99;
734
+ goto yy75;
1015
735
  if (yych <= '\n')
1016
- goto yy88;
1017
- goto yy99;
736
+ goto yy72;
737
+ goto yy75;
1018
738
  } else {
1019
739
  if (yych <= ' ') {
1020
740
  if (yych <= 0x1F)
1021
- goto yy88;
1022
- goto yy99;
741
+ goto yy72;
742
+ goto yy75;
1023
743
  } else {
1024
744
  if (yych == '[')
1025
- goto yy110;
1026
- goto yy88;
745
+ goto yy86;
746
+ goto yy72;
1027
747
  }
1028
748
  }
1029
- yy101:
749
+ yy77:
1030
750
  yych = *++p;
1031
- yy102:
751
+ yy78:
1032
752
  if (yybm[0 + yych] & 128) {
1033
- goto yy101;
753
+ goto yy77;
1034
754
  }
1035
755
  if (yych <= 0xC1) {
1036
756
  if (yych <= '\f') {
1037
757
  if (yych <= 0x08)
1038
- goto yy97;
758
+ goto yy73;
1039
759
  if (yych == '\n')
1040
- goto yy88;
1041
- goto yy99;
760
+ goto yy72;
761
+ goto yy75;
1042
762
  } else {
1043
763
  if (yych == ' ')
1044
- goto yy99;
764
+ goto yy75;
1045
765
  if (yych <= 0x7F)
1046
- goto yy97;
1047
- goto yy88;
766
+ goto yy73;
767
+ goto yy72;
1048
768
  }
1049
769
  } else {
1050
770
  if (yych <= 0xED) {
1051
771
  if (yych <= 0xDF)
1052
- goto yy103;
772
+ goto yy79;
1053
773
  if (yych <= 0xE0)
1054
- goto yy104;
774
+ goto yy80;
1055
775
  if (yych <= 0xEC)
1056
- goto yy105;
1057
- goto yy106;
776
+ goto yy81;
777
+ goto yy82;
1058
778
  } else {
1059
779
  if (yych <= 0xF0) {
1060
780
  if (yych <= 0xEF)
1061
- goto yy105;
1062
- goto yy107;
781
+ goto yy81;
782
+ goto yy83;
1063
783
  } else {
1064
784
  if (yych <= 0xF3)
1065
- goto yy108;
785
+ goto yy84;
1066
786
  if (yych <= 0xF4)
1067
- goto yy109;
1068
- goto yy88;
787
+ goto yy85;
788
+ goto yy72;
1069
789
  }
1070
790
  }
1071
791
  }
1072
- yy103:
792
+ yy79:
1073
793
  yych = *++p;
1074
794
  if (yych <= 0x7F)
1075
- goto yy88;
795
+ goto yy72;
1076
796
  if (yych <= 0xBF)
1077
- goto yy97;
1078
- goto yy88;
1079
- yy104:
797
+ goto yy73;
798
+ goto yy72;
799
+ yy80:
1080
800
  yych = *++p;
1081
801
  if (yych <= 0x9F)
1082
- goto yy88;
802
+ goto yy72;
1083
803
  if (yych <= 0xBF)
1084
- goto yy103;
1085
- goto yy88;
1086
- yy105:
804
+ goto yy79;
805
+ goto yy72;
806
+ yy81:
1087
807
  yych = *++p;
1088
808
  if (yych <= 0x7F)
1089
- goto yy88;
809
+ goto yy72;
1090
810
  if (yych <= 0xBF)
1091
- goto yy103;
1092
- goto yy88;
1093
- yy106:
811
+ goto yy79;
812
+ goto yy72;
813
+ yy82:
1094
814
  yych = *++p;
1095
815
  if (yych <= 0x7F)
1096
- goto yy88;
816
+ goto yy72;
1097
817
  if (yych <= 0x9F)
1098
- goto yy103;
1099
- goto yy88;
1100
- yy107:
818
+ goto yy79;
819
+ goto yy72;
820
+ yy83:
1101
821
  yych = *++p;
1102
822
  if (yych <= 0x8F)
1103
- goto yy88;
823
+ goto yy72;
1104
824
  if (yych <= 0xBF)
1105
- goto yy105;
1106
- goto yy88;
1107
- yy108:
825
+ goto yy81;
826
+ goto yy72;
827
+ yy84:
1108
828
  yych = *++p;
1109
829
  if (yych <= 0x7F)
1110
- goto yy88;
830
+ goto yy72;
1111
831
  if (yych <= 0xBF)
1112
- goto yy105;
1113
- goto yy88;
1114
- yy109:
832
+ goto yy81;
833
+ goto yy72;
834
+ yy85:
1115
835
  yych = *++p;
1116
836
  if (yych <= 0x7F)
1117
- goto yy88;
837
+ goto yy72;
1118
838
  if (yych <= 0x8F)
1119
- goto yy105;
1120
- goto yy88;
1121
- yy110:
839
+ goto yy81;
840
+ goto yy72;
841
+ yy86:
1122
842
  yych = *++p;
1123
843
  if (yych <= 'W') {
1124
844
  if (yych != ' ')
1125
- goto yy88;
845
+ goto yy72;
1126
846
  } else {
1127
847
  if (yych <= 'X')
1128
- goto yy111;
848
+ goto yy87;
1129
849
  if (yych != 'x')
1130
- goto yy88;
850
+ goto yy72;
1131
851
  }
1132
- yy111:
852
+ yy87:
1133
853
  yych = *++p;
1134
854
  if (yych != ']')
1135
- goto yy88;
855
+ goto yy72;
1136
856
  yych = *++p;
1137
857
  if (yych <= '\n') {
1138
858
  if (yych != '\t')
1139
- goto yy88;
859
+ goto yy72;
1140
860
  } else {
1141
861
  if (yych <= '\f')
1142
- goto yy113;
862
+ goto yy89;
1143
863
  if (yych != ' ')
1144
- goto yy88;
864
+ goto yy72;
1145
865
  }
1146
- yy113:
866
+ yy89:
1147
867
  yych = *++p;
1148
868
  if (yych <= '\n') {
1149
869
  if (yych == '\t')
1150
- goto yy113;
870
+ goto yy89;
1151
871
  } else {
1152
872
  if (yych <= '\f')
1153
- goto yy113;
873
+ goto yy89;
1154
874
  if (yych == ' ')
1155
- goto yy113;
875
+ goto yy89;
1156
876
  }
1157
877
  { return (bufsize_t)(p - start); }
1158
878
  }