@appthreat/atom-parsetools 1.3.0 → 1.4.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.
- package/README.md +111 -14
- package/package.json +2 -1
- package/plugins/composer/installed.php +6 -6
- package/plugins/rubyastgen/Gemfile +6 -4
- package/plugins/rubyastgen/Gemfile.lock +5 -8
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/Gemfile +11 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/exe/ruby_ast_gen +55 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/lib/ruby_ast_gen/cli.rb +133 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/lib/ruby_ast_gen/node_handling.rb +449 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/lib/ruby_ast_gen/version.rb +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/lib/ruby_ast_gen.rb +888 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/ruby_ast_gen.gemspec +25 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/current.rb +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/version.rb +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/ast-2.4.3.gemspec +29 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/bundler-2.6.9.gemspec +25 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/ostruct-0.6.3.gemspec +22 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/parser-3.3.12.0.gemspec +37 -0
- package/rbastgen.js +102 -13
- package/scalasem.js +11 -2
- package/plugins/bin/bundler +0 -14
- package/plugins/bin/ruby_ast_gen +0 -14
- package/plugins/rubyastgen/bundle/bundler/setup.rb +0 -44
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-cc312ebf06b4/exe/ruby_ast_gen +0 -63
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-cc312ebf06b4/lib/ruby_ast_gen/node_handling.rb +0 -269
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-cc312ebf06b4/lib/ruby_ast_gen.rb +0 -218
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/gem.build_complete +0 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/gem_make.out +0 -44
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/mkmf.log +0 -74
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/prism/prism.so +0 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/racc-1.8.1/gem.build_complete +0 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/racc-1.8.1/gem_make.out +0 -18
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/racc-1.8.1/racc/cparse.so +0 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/BSDmakefile +0 -58
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/Makefile +0 -116
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/Makefile +0 -273
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/api_node.c +0 -6945
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/api_pack.c +0 -276
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/extconf.rb +0 -127
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/extension.c +0 -1427
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/extension.h +0 -19
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/ast.h +0 -8254
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/defines.h +0 -260
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/diagnostic.h +0 -458
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/encoding.h +0 -283
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/node.h +0 -129
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/options.h +0 -488
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/pack.h +0 -163
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/parser.h +0 -936
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/prettyprint.h +0 -34
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/regexp.h +0 -43
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/static_literals.h +0 -121
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_buffer.h +0 -236
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_char.h +0 -204
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_constant_pool.h +0 -218
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_integer.h +0 -130
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_list.h +0 -103
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_memchr.h +0 -29
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_newline_list.h +0 -113
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_string.h +0 -200
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_strncasecmp.h +0 -32
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_strpbrk.h +0 -46
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/version.h +0 -29
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism.h +0 -408
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/compiler.rb +0 -801
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/desugar_compiler.rb +0 -392
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/dispatcher.rb +0 -2210
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/dot_visitor.rb +0 -4767
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/dsl.rb +0 -1003
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/ffi.rb +0 -578
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/inspect_visitor.rb +0 -2393
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/lex_compat.rb +0 -911
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/mutation_compiler.rb +0 -772
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/node.rb +0 -19966
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/node_ext.rb +0 -511
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/pack.rb +0 -230
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result/comments.rb +0 -188
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result/errors.rb +0 -66
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result/newlines.rb +0 -155
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result.rb +0 -907
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/pattern.rb +0 -269
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/append_as_bytes.rb +0 -15
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/byteindex.rb +0 -13
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/scan_byte.rb +0 -14
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/unpack1.rb +0 -14
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/warn.rb +0 -36
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/prism.so +0 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/reflection.rb +0 -416
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/relocation.rb +0 -505
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/serialize.rb +0 -2400
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/string_query.rb +0 -31
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser/builder.rb +0 -62
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser/compiler.rb +0 -2234
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser/lexer.rb +0 -820
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser.rb +0 -376
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser_current.rb +0 -26
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser_versions.rb +0 -36
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/filter.rb +0 -53
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/lexer.rb +0 -135
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/sexp.rb +0 -126
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/shim.rb +0 -5
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper.rb +0 -3520
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ruby_parser.rb +0 -1964
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation.rb +0 -18
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/visitor.rb +0 -813
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism.rb +0 -98
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/compiler.rbi +0 -12
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/dsl.rbi +0 -524
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/inspect_visitor.rbi +0 -12
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/node.rbi +0 -8750
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/node_ext.rbi +0 -107
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/parse_result.rbi +0 -404
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/reflection.rbi +0 -58
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/string_query.rbi +0 -12
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/translation/parser.rbi +0 -11
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/translation/parser_versions.rbi +0 -23
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/translation/ripper.rbi +0 -15
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/visitor.rbi +0 -473
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism.rbi +0 -63
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/compiler.rbs +0 -9
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/dispatcher.rbs +0 -19
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/dot_visitor.rbs +0 -6
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/dsl.rbs +0 -351
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/inspect_visitor.rbs +0 -22
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/lex_compat.rbs +0 -10
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/mutation_compiler.rbs +0 -159
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/node.rbs +0 -4042
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/node_ext.rbs +0 -149
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/pack.rbs +0 -43
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/parse_result/comments.rbs +0 -38
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/parse_result.rbs +0 -197
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/pattern.rbs +0 -13
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/reflection.rbs +0 -50
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/relocation.rbs +0 -185
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/serialize.rbs +0 -8
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/string_query.rbs +0 -11
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/visitor.rbs +0 -169
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism.rbs +0 -272
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/diagnostic.c +0 -854
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/encoding.c +0 -5340
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/node.c +0 -8685
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/options.c +0 -338
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/pack.c +0 -509
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/prettyprint.c +0 -8957
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/prism.c +0 -22679
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/regexp.c +0 -790
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/serialize.c +0 -2274
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/static_literals.c +0 -617
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/token_type.c +0 -703
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_buffer.c +0 -357
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_char.c +0 -318
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_constant_pool.c +0 -342
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_integer.c +0 -670
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_list.c +0 -49
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_memchr.c +0 -35
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_newline_list.c +0 -125
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_string.c +0 -381
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_strncasecmp.c +0 -36
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_strpbrk.c +0 -206
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/BSDL +0 -22
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/COPYING +0 -56
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ChangeLog +0 -846
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/README.ja.rdoc +0 -58
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/README.rdoc +0 -60
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/TODO +0 -5
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/bin/racc +0 -320
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ext/racc/cparse/Makefile +0 -273
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ext/racc/cparse/cparse.c +0 -840
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ext/racc/cparse/extconf.rb +0 -8
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/compat.rb +0 -33
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/cparse.so +0 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/debugflags.rb +0 -60
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/exception.rb +0 -16
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/grammar.rb +0 -1191
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/grammarfileparser.rb +0 -667
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/info.rb +0 -18
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/iset.rb +0 -92
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/logfilegenerator.rb +0 -212
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/parser-text.rb +0 -644
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/parser.rb +0 -630
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/parserfilegenerator.rb +0 -473
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/sourcetext.rb +0 -35
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/state.rb +0 -976
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/statetransitiontable.rb +0 -311
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/static.rb +0 -5
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc.rb +0 -6
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/.rspec +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/bin/console +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/bin/setup +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/update_version.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/bin/ruby-parse +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/bin/ruby-rewrite +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/gauntlet_parser.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/all.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ast/node.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ast/processor.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/base.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/builders/default.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/clobbering_error.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/color.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/context.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/current_arg_stack.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/deprecation.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/diagnostic/engine.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/diagnostic.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/dedenter.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/explanation.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/literal.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/stack_state.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-F0.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-F1.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-strings.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/macruby.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/max_numparam_stack.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/messages.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/meta.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/rewriter.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby18.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby19.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby20.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby21.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby22.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby23.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby24.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby25.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby26.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby27.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby30.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby31.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby32.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby33.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby34.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/rubymotion.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner/ruby_parse.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner/ruby_rewrite.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/buffer.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/comment/associator.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/comment.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/collection.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/condition.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/constant.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/definition.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/for.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/heredoc.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/index.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/keyword.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/method_definition.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/objc_kwarg.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/operator.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/rescue_body.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/send.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/ternary.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/variable.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/range.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/rewriter/action.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/rewriter.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/tree_rewriter/action.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/tree_rewriter.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/static_environment.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/syntax_error.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/tree_rewriter.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/unknown_encoding_in_magic_comment_error.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/variables_stack.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser.rb +0 -0
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ This package hosts a collection of parsing tools that complement the `@appthreat
|
|
|
4
4
|
|
|
5
5
|
- astgen - Generates AST for JavaScript and TypeScript projects in JSON format
|
|
6
6
|
- phpastgen - Generates AST for PHP projects using `php-parse` command from `nikic/php-parser`
|
|
7
|
-
- rbastgen - Generates AST for Ruby projects using
|
|
7
|
+
- rbastgen - Generates AST for Ruby projects using AppThreat's [`ruby_ast_gen`](https://github.com/AppThreat/ruby_ast_gen) gem (2.0.1)
|
|
8
8
|
- scalasem - Generates a custom semantics slice for Scala Projects by utilising scalac command.
|
|
9
9
|
|
|
10
10
|
## Runtime support
|
|
@@ -31,13 +31,13 @@ Options:
|
|
|
31
31
|
|
|
32
32
|
#### Environment variables
|
|
33
33
|
|
|
34
|
-
| Variable
|
|
35
|
-
|
|
|
36
|
-
| `ASTGEN_TYPE_WORKERS`
|
|
37
|
-
| `ASTGEN_INCLUDE_TEST_FILES`
|
|
38
|
-
| `ASTGEN_CONCURRENCY`
|
|
39
|
-
| `ASTGEN_INCLUDE_NODE_MODULES_BUNDLES` | `false`
|
|
40
|
-
| `ASTGEN_IGNORE_DIRS`
|
|
34
|
+
| Variable | Default | Purpose |
|
|
35
|
+
| ------------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
36
|
+
| `ASTGEN_TYPE_WORKERS` | `1` (off) | Number of worker threads for the TypeScript type-generation phase, or `auto` to derive it from the available CPUs. The TypeScript checker is single-threaded, so parallelism comes from sharding files across workers, each building its own program. **Opt-in:** sharding changes TypeScript's internal type-id ordering, which reorders the members of a small number of inferred union types (e.g. `A \| B` → `B \| A`; semantically identical). Leave unset for byte-identical output; set it (e.g. `auto` or `8`) to trade that cosmetic reordering for a large speedup on big projects. |
|
|
37
|
+
| `ASTGEN_INCLUDE_TEST_FILES` | `false` | When `true`, do not exclude test files (`*.poku.js`, `*.test.*`, `*.spec.*`, `*.e2e.*`, `__tests__/`, `__mocks__/`) from AST and type generation. They are excluded by default because they are typically the heaviest, lowest-value inputs for type generation. |
|
|
38
|
+
| `ASTGEN_CONCURRENCY` | `10` | Chunk size for the in-thread file loop (bounds peak memory between `gc()` passes). |
|
|
39
|
+
| `ASTGEN_INCLUDE_NODE_MODULES_BUNDLES` | `false` | When `true`, also parse bundled entrypoints inside `node_modules` (files matching `*.(bundle\|dist\|index\|min\|app).(js\|cjs\|mjs)`). Off by default; `node_modules` is otherwise skipped entirely. |
|
|
40
|
+
| `ASTGEN_IGNORE_DIRS` | unset | Comma/space-separated list of directories to ignore. As a side effect, when it is set and does **not** contain `node_modules`, the `node_modules` bundle entrypoints above are included (equivalent to `ASTGEN_INCLUDE_NODE_MODULES_BUNDLES=true`). |
|
|
41
41
|
|
|
42
42
|
### phpastgen
|
|
43
43
|
|
|
@@ -64,17 +64,90 @@ Operations is a list of the following options (--dump by default):
|
|
|
64
64
|
|
|
65
65
|
### rbastgen
|
|
66
66
|
|
|
67
|
+
Requires Ruby 3.4.x or 4.0.x on the `PATH`, or `ATOM_RUBY_HOME` pointing at an install. The gem and
|
|
68
|
+
its pure-Ruby dependencies are bundled under `plugins/rubyastgen`, so nothing needs to be
|
|
69
|
+
gem-installed, and one build of this package runs under every supported Ruby: the bundle is exposed
|
|
70
|
+
to the interpreter through `GEM_PATH` rather than through bundler's standalone loader, which
|
|
71
|
+
resolved its paths from the ABI of the Ruby that built it.
|
|
72
|
+
|
|
73
|
+
`prism` and `racc` are deliberately **not** bundled. Both carry C extensions, which are built per
|
|
74
|
+
ABI and per platform, and both are default gems in every supported Ruby, so the runtime's own copies
|
|
75
|
+
are used. One consequence is visible: the newest grammar available follows the interpreter's prism,
|
|
76
|
+
so Ruby 3.4 tops out lower than Ruby 4.0 (grammar 3.5 versus 4.1 at the time of writing). Installing
|
|
77
|
+
a newer `prism` gem on the machine raises it, since the caller's `GEM_PATH` is preserved.
|
|
78
|
+
|
|
67
79
|
```text
|
|
68
80
|
node rbastgen.js --help
|
|
69
81
|
Usage:
|
|
70
|
-
-i, --input
|
|
71
|
-
-o, --output
|
|
72
|
-
-e, --exclude The exclusion regex (default: '^(tests?|vendor|spec)')
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
--
|
|
82
|
+
-i, --input <path> The input file or directory (required)
|
|
83
|
+
-o, --output <dir> The output directory (default: '.ast')
|
|
84
|
+
-e, --exclude <regex> The exclusion regex (default: '^(tests?|vendor|spec)')
|
|
85
|
+
-l, --log <level> The logging level: debug, info, warn or error (default: info)
|
|
86
|
+
-d, --debug Enable debug logging (same as --log debug)
|
|
87
|
+
--parser-target <x.y>
|
|
88
|
+
Parse with a specific Ruby grammar (e.g. 3.4, 4.0) instead
|
|
89
|
+
of the newest available
|
|
90
|
+
--max-depth <n> Maximum AST depth before truncation (default: 250)
|
|
91
|
+
--threads <n> Worker threads for a directory run (default: 10)
|
|
92
|
+
--fail-on-error Exit non-zero when any input file failed to parse
|
|
93
|
+
--parser-info Print parser/runtime capability information
|
|
94
|
+
--version Print the version
|
|
95
|
+
--help Print usage
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Problems with individual files are reported and skipped, never fatal; only usage errors (a missing
|
|
99
|
+
`-i`, an unusable `--exclude` regex, an invalid `--parser-target`) exit non-zero. Note that
|
|
100
|
+
`rbastgen` does not propagate the generator's exit status, so `--fail-on-error` is reported in the
|
|
101
|
+
log but the wrapper still exits 0 — call the gem directly if a CI job needs to fail on a parse
|
|
102
|
+
error.
|
|
103
|
+
|
|
104
|
+
#### What the bundled generator emits (ruby_ast_gen 2.0.1)
|
|
105
|
+
|
|
106
|
+
- **Parsing is decoupled from the running Ruby.** When `prism` is available the newest grammar its
|
|
107
|
+
translation layer supports is used, so a 3.4 runtime parses Ruby 4.0/4.1 syntax. `--parser-target
|
|
108
|
+
x.y` pins a grammar instead (down to 1.8 through the `parser` gem), and a file that fails under
|
|
109
|
+
the selected grammar is retried once with the newest one. Every JSON file records the backend
|
|
110
|
+
that produced it in `parser_backend`, alongside `generator_version` and `ruby_version`.
|
|
111
|
+
- **Ruby DSL files are discovered, not just `.rb`.** `Rakefile`, `Gemfile`, `Capfile`,
|
|
112
|
+
`Vagrantfile`, `Fastfile` and friends are matched by basename, plus the `.gemspec`, `.rake`,
|
|
113
|
+
`.ru`, `.rbi`, `.thor`, `.jbuilder`, `.axlsx` and `.rabl` extensions. Vendor and tool
|
|
114
|
+
directories (`.git`, `.bundle`, `.venv`, …) are skipped.
|
|
115
|
+
- **Non-UTF-8 sources survive.** `# coding:` magic comments are honoured and undecodable bytes are
|
|
116
|
+
scrubbed rather than dropping the file, marked with `encoding_scrubbed: true`.
|
|
117
|
+
- **Deeply nested source is truncated, not dropped**, with `truncated: true` on the boundary node
|
|
118
|
+
and a `truncated_nodes` count at the top level (`--max-depth`).
|
|
119
|
+
- **Semantic metadata for consumers**: a `magic_comments` array (Sorbet `typed:` levels,
|
|
120
|
+
`frozen_string_literal`, …), `call_operator`/`has_parentheses` on calls, `percent_array` and
|
|
121
|
+
regexp `options`, heredoc body offsets, and `has_sig: true` on a `def` preceded by a Sorbet `sig`
|
|
122
|
+
block.
|
|
123
|
+
- **Two side-records per run, written inside the output directory**, both ending in `.jsonl` so a
|
|
124
|
+
consumer globbing `*.json` for ASTs never mistakes them for one:
|
|
125
|
+
`ruby_ast_gen_manifest.jsonl` (one object: input/output, backend, counts of parsed, failed,
|
|
126
|
+
skipped, excluded and truncated files, threads, max depth) and
|
|
127
|
+
`ruby_ast_gen_diagnostics.jsonl` (one object per failed file with message, line, column), the
|
|
128
|
+
latter written only when something failed and removed when a later run is clean.
|
|
129
|
+
|
|
130
|
+
To check which backend a machine will use:
|
|
131
|
+
|
|
132
|
+
```shell
|
|
133
|
+
rbastgen --parser-info
|
|
76
134
|
```
|
|
77
135
|
|
|
136
|
+
`Parser gem` and `Prism gem` name the versions actually loaded — the vendored `parser` and the
|
|
137
|
+
runtime's `prism` — so they are the quickest way to tell which copy of each library a machine is
|
|
138
|
+
parsing with. They read `unavailable` only when a library genuinely is not loaded.
|
|
139
|
+
|
|
140
|
+
#### Environment variables
|
|
141
|
+
|
|
142
|
+
| Variable | Default | Purpose |
|
|
143
|
+
| --------------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
144
|
+
| `ATOM_RUBY_HOME` | unset | Ruby install directory to use when a suitable `ruby` is not on the `PATH`; its `bin` is prepended to `PATH` for the child process. |
|
|
145
|
+
| `RUBY_CMD` | `ruby` | Ruby interpreter to invoke. Set this (or `ATOM_RUBY_HOME`) when the detected version is not 3.4.x/4.0.x. |
|
|
146
|
+
| `RUBY_ASTGEN_BIN` | bundled `ruby_ast_gen` | The generator script to run. Point it at a checkout's `exe/ruby_ast_gen` to test an unreleased `ruby_ast_gen` without touching this package. |
|
|
147
|
+
| `ATOM_CWD` | `process.cwd()` | Working directory for the generator, which is what relative `-i`/`-o` paths resolve against. |
|
|
148
|
+
| `ATOM_TIMEOUT` / `ASTGEN_TIMEOUT` | unset (no timeout) | Milliseconds before the generator process is killed. `ATOM_TIMEOUT` wins; a non-numeric value is ignored. Also honoured by `scalasem`. |
|
|
149
|
+
| `GEM_PATH` | unset | Preserved and appended to the vendored bundle, so gems installed on the machine (a newer `prism`, for instance) stay reachable. |
|
|
150
|
+
|
|
78
151
|
### scalasem
|
|
79
152
|
|
|
80
153
|
```text
|
|
@@ -87,6 +160,30 @@ Example:
|
|
|
87
160
|
scalasem $(pwd) slices.json
|
|
88
161
|
```
|
|
89
162
|
|
|
163
|
+
## Testing
|
|
164
|
+
|
|
165
|
+
`npm test` covers the JavaScript/TypeScript side and needs nothing but Node. The Ruby workflow tests
|
|
166
|
+
run the `rbastgen` command end to end against `test-fixtures/projects/ruby-parsing`, so they need a
|
|
167
|
+
built plugin bundle and a supported Ruby, and they skip themselves cleanly when either is missing:
|
|
168
|
+
|
|
169
|
+
```shell
|
|
170
|
+
bash build.sh --ruby-only
|
|
171
|
+
npm run test:ruby
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
`ci/verify-packed-tarball.sh` is the release check: it packs the tarball, installs it into a scratch
|
|
175
|
+
project and parses the fixture with the installed copy, asserting along the way that the Ruby bundle
|
|
176
|
+
is present and free of compiled extensions. CI runs it, and it runs the same way locally.
|
|
177
|
+
|
|
178
|
+
They assert what a consumer depends on rather than that the command ran: which files are discovered
|
|
179
|
+
(including `Gemfile` and `Rakefile`, matched by basename), that `has_sig`, `magic_comments`,
|
|
180
|
+
`percent_array` and regexp `options` are emitted, that the manifest's counts reconcile, that a
|
|
181
|
+
failed file lands in the diagnostics record while the run still exits 0, that a clean run leaves no
|
|
182
|
+
stale record behind, and that the bundle contains no compiled extension. CI runs them under both
|
|
183
|
+
Ruby 3.4 and Ruby 4.0 against a bundle built with 3.4, and separately installs the packed tarball
|
|
184
|
+
and parses with that, which is the check that catches a bundle usable only on the Ruby that built
|
|
185
|
+
it.
|
|
186
|
+
|
|
90
187
|
## License
|
|
91
188
|
|
|
92
189
|
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appthreat/atom-parsetools",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Parsing tools that complement the @appthreat/atom project.",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"pretty": "prettier --write *.js --trailing-comma=none",
|
|
9
9
|
"test": "node test-fixtures/astgen-type-regression.js && node test-fixtures/astgen-json-regression.js && node test-fixtures/astgen-vue-regression.js && node test-fixtures/astgen-shape-snapshot.js && node test-fixtures/evaluate-astgen.js",
|
|
10
10
|
"test:evaluate": "node test-fixtures/evaluate-astgen.js",
|
|
11
|
+
"test:ruby": "node test-fixtures/rbastgen-regression.js",
|
|
11
12
|
"test:shape": "node test-fixtures/astgen-shape-snapshot.js",
|
|
12
13
|
"test:shape:update": "UPDATE_SHAPE_SNAPSHOT=1 node test-fixtures/astgen-shape-snapshot.js",
|
|
13
14
|
"test:json": "node test-fixtures/astgen-json-regression.js",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<?php return array(
|
|
2
2
|
'root' => array(
|
|
3
3
|
'name' => '__root__',
|
|
4
|
-
'pretty_version' => 'v1.
|
|
5
|
-
'version' => '1.
|
|
6
|
-
'reference' => '
|
|
4
|
+
'pretty_version' => 'v1.4.0',
|
|
5
|
+
'version' => '1.4.0.0',
|
|
6
|
+
'reference' => 'f0a5257f9414e759bc4a433b007003ebb6d530cb',
|
|
7
7
|
'type' => 'library',
|
|
8
8
|
'install_path' => __DIR__ . '/../../',
|
|
9
9
|
'aliases' => array(),
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
),
|
|
12
12
|
'versions' => array(
|
|
13
13
|
'__root__' => array(
|
|
14
|
-
'pretty_version' => 'v1.
|
|
15
|
-
'version' => '1.
|
|
16
|
-
'reference' => '
|
|
14
|
+
'pretty_version' => 'v1.4.0',
|
|
15
|
+
'version' => '1.4.0.0',
|
|
16
|
+
'reference' => 'f0a5257f9414e759bc4a433b007003ebb6d530cb',
|
|
17
17
|
'type' => 'library',
|
|
18
18
|
'install_path' => __DIR__ . '/../../',
|
|
19
19
|
'aliases' => array(),
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
|
+
# Only pure-Ruby gems are vendored: rbastgen puts these on the load path directly, so the bundle
|
|
6
|
+
# works under every supported Ruby ABI. prism and racc are deliberately absent — both are default
|
|
7
|
+
# gems in Ruby 3.4+ and 4.0+, and their C extensions are built per ABI, which is what locked the
|
|
8
|
+
# published bundle to the single Ruby version it was built with.
|
|
5
9
|
group :frontend do
|
|
6
|
-
gem "ruby_ast_gen", github: 'appthreat/ruby_ast_gen', ref: '
|
|
7
|
-
gem "parser", "~> 3.3.
|
|
8
|
-
gem "prism", "~> 1.9"
|
|
10
|
+
gem "ruby_ast_gen", github: 'appthreat/ruby_ast_gen', ref: '4ac84327b3af4a8003bb9ece2566df6471cdd851'
|
|
11
|
+
gem "parser", "~> 3.3.12.0"
|
|
9
12
|
gem "ostruct", "~> 0.6.3"
|
|
10
|
-
gem "racc", "~> 1.8.1"
|
|
11
13
|
end
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
GIT
|
|
2
2
|
remote: https://github.com/appthreat/ruby_ast_gen.git
|
|
3
|
-
revision:
|
|
4
|
-
ref:
|
|
3
|
+
revision: 4ac84327b3af4a8003bb9ece2566df6471cdd851
|
|
4
|
+
ref: 4ac84327b3af4a8003bb9ece2566df6471cdd851
|
|
5
5
|
specs:
|
|
6
|
-
ruby_ast_gen (
|
|
6
|
+
ruby_ast_gen (2.0.1)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
11
|
ast (2.4.3)
|
|
12
12
|
ostruct (0.6.3)
|
|
13
|
-
parser (3.3.
|
|
13
|
+
parser (3.3.12.0)
|
|
14
14
|
ast (~> 2.4.1)
|
|
15
15
|
racc
|
|
16
|
-
prism (1.9.0)
|
|
17
16
|
racc (1.8.1)
|
|
18
17
|
|
|
19
18
|
PLATFORMS
|
|
@@ -22,9 +21,7 @@ PLATFORMS
|
|
|
22
21
|
|
|
23
22
|
DEPENDENCIES
|
|
24
23
|
ostruct (~> 0.6.3)
|
|
25
|
-
parser (~> 3.3.
|
|
26
|
-
prism (~> 1.9)
|
|
27
|
-
racc (~> 1.8.1)
|
|
24
|
+
parser (~> 3.3.12.0)
|
|
28
25
|
ruby_ast_gen!
|
|
29
26
|
|
|
30
27
|
BUNDLED WITH
|
package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/exe/ruby_ast_gen
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# require "bundler/setup"
|
|
5
|
+
# We do the below instead of the above, as the above can be flaky
|
|
6
|
+
libs = File.expand_path("../vendor/bundle/ruby/*/gems/**/lib", __dir__)
|
|
7
|
+
$LOAD_PATH.unshift(*Dir.glob(libs))
|
|
8
|
+
|
|
9
|
+
require_relative "../lib/ruby_ast_gen"
|
|
10
|
+
|
|
11
|
+
# Argument parsing and the usage text both come from RubyAstGen::CLI::FLAGS.
|
|
12
|
+
result = RubyAstGen::CLI.parse(ARGV)
|
|
13
|
+
options = result.options
|
|
14
|
+
|
|
15
|
+
# Configure logging before emitting anything, so -l/--log applies to the argument warnings too.
|
|
16
|
+
RubyAstGen::Logger.level = :debug if options[:debug]
|
|
17
|
+
RubyAstGen::Logger.level = options[:log_level] if options[:log_level]
|
|
18
|
+
result.warnings.each { |warning| RubyAstGen::Logger.warn warning }
|
|
19
|
+
|
|
20
|
+
# Informational modes run after the whole argv is read, so `--parser-info` reflects a
|
|
21
|
+
# `--parser-target` passed in any order.
|
|
22
|
+
case result.mode
|
|
23
|
+
when :parser_info
|
|
24
|
+
puts RubyAstGen.parser_info_text(parser_target: options[:parser_target])
|
|
25
|
+
exit
|
|
26
|
+
when :version
|
|
27
|
+
puts RubyAstGen::VERSION
|
|
28
|
+
exit
|
|
29
|
+
when :help
|
|
30
|
+
puts RubyAstGen::CLI.help_text
|
|
31
|
+
exit
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Usage errors are the only fatal cases: everything a run encounters per file is reported and
|
|
35
|
+
# skipped instead, because a non-zero exit costs the caller every file (see the comment in
|
|
36
|
+
# RubyAstGen::CLI.parse). --fail-on-error is the sole opt-out, for CI callers who would rather
|
|
37
|
+
# fail than analyse a partial corpus; chen never passes it.
|
|
38
|
+
begin
|
|
39
|
+
summary = RubyAstGen.parse(options)
|
|
40
|
+
if options[:fail_on_error] && summary[:files_failed] > 0
|
|
41
|
+
RubyAstGen::Logger.error "#{summary[:files_failed]} file(s) failed to parse; details in " \
|
|
42
|
+
"#{File.join(options[:output].to_s, RubyAstGen::DIAGNOSTICS_FILENAME)}"
|
|
43
|
+
exit 1
|
|
44
|
+
end
|
|
45
|
+
rescue ArgumentError => e
|
|
46
|
+
RubyAstGen::Logger.error e.message
|
|
47
|
+
exit 1
|
|
48
|
+
rescue StandardError => e
|
|
49
|
+
# Anything unexpected (an unwritable output directory, for example) still exits with a single
|
|
50
|
+
# readable line: the caller only sees our stdout, and a raw backtrace tells it nothing about
|
|
51
|
+
# which input it was invoked with. The backtrace is available with -d.
|
|
52
|
+
RubyAstGen::Logger.error "#{e.class}: #{e.message}"
|
|
53
|
+
RubyAstGen::Logger.debug e.backtrace.join("\n")
|
|
54
|
+
exit 1
|
|
55
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RubyAstGen
|
|
4
|
+
# Command-line surface, kept in the library rather than in `exe/ruby_ast_gen` so it can be
|
|
5
|
+
# tested without shelling out.
|
|
6
|
+
#
|
|
7
|
+
# FLAGS is the single source of truth: it drives argument parsing *and* renders `--help`, so
|
|
8
|
+
# the two cannot drift. They used to be maintained separately, and the README documented
|
|
9
|
+
# `-l/--log` for a release in which the argv loop rejected it with a non-zero exit.
|
|
10
|
+
module CLI
|
|
11
|
+
|
|
12
|
+
Flag = Struct.new(:short, :long, :kind, :key, :placeholder, :description, keyword_init: true) do
|
|
13
|
+
def names
|
|
14
|
+
[short, long].compact
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# "-i, --input <path>" / " --parser-info"
|
|
18
|
+
def usage
|
|
19
|
+
head = short ? "#{short}, #{long}" : " #{long}"
|
|
20
|
+
placeholder ? "#{head} #{placeholder}" : head
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Worker count for directory runs. Exposed because the ceiling is memory, not CPU: a JRuby
|
|
25
|
+
# container or a repo of very large files may need fewer (plan 03 §7).
|
|
26
|
+
DEFAULT_THREADS = 10
|
|
27
|
+
|
|
28
|
+
FLAGS = [
|
|
29
|
+
Flag.new(short: "-i", long: "--input", kind: :value, key: :input, placeholder: "<path>",
|
|
30
|
+
description: "The input file or directory (required)"),
|
|
31
|
+
Flag.new(short: "-o", long: "--output", kind: :value, key: :output, placeholder: "<dir>",
|
|
32
|
+
description: "The output directory (default: '.ast')"),
|
|
33
|
+
Flag.new(short: "-e", long: "--exclude", kind: :value, key: :exclude, placeholder: "<regex>",
|
|
34
|
+
description: "The exclusion regex (default: '^(tests?|vendor|spec)')"),
|
|
35
|
+
Flag.new(short: "-l", long: "--log", kind: :value, key: :log_level, placeholder: "<level>",
|
|
36
|
+
description: "The logging level: debug, info, warn or error (default: info)"),
|
|
37
|
+
Flag.new(short: "-d", long: "--debug", kind: :boolean, key: :debug,
|
|
38
|
+
description: "Enable debug logging (same as --log debug)"),
|
|
39
|
+
Flag.new(long: "--parser-target", kind: :value, key: :parser_target, placeholder: "<x.y>",
|
|
40
|
+
description: "Parse with a specific Ruby grammar (e.g. 3.4, 4.0) instead\nof the newest available"),
|
|
41
|
+
Flag.new(long: "--max-depth", kind: :value, key: :max_depth, placeholder: "<n>",
|
|
42
|
+
description: "Maximum AST depth before truncation " \
|
|
43
|
+
"(default: #{NodeHandling::MAX_NESTING_DEPTH})"),
|
|
44
|
+
Flag.new(long: "--threads", kind: :value, key: :threads, placeholder: "<n>",
|
|
45
|
+
description: "Worker threads for a directory run " \
|
|
46
|
+
"(default: #{DEFAULT_THREADS})"),
|
|
47
|
+
Flag.new(long: "--fail-on-error", kind: :boolean, key: :fail_on_error,
|
|
48
|
+
description: "Exit non-zero when any input file failed to parse"),
|
|
49
|
+
Flag.new(long: "--parser-info", kind: :mode, key: :parser_info,
|
|
50
|
+
description: "Print parser/runtime capability information"),
|
|
51
|
+
Flag.new(long: "--version", kind: :mode, key: :version,
|
|
52
|
+
description: "Print the version"),
|
|
53
|
+
Flag.new(long: "--help", kind: :mode, key: :help,
|
|
54
|
+
description: "Print usage")
|
|
55
|
+
].freeze
|
|
56
|
+
|
|
57
|
+
BY_NAME = FLAGS.flat_map { |flag| flag.names.map { |name| [name, flag] } }.to_h.freeze
|
|
58
|
+
|
|
59
|
+
DEFAULTS = {
|
|
60
|
+
input: nil,
|
|
61
|
+
output: ".ast",
|
|
62
|
+
exclude: "^(tests?|vendor|spec)",
|
|
63
|
+
debug: false,
|
|
64
|
+
log_level: nil,
|
|
65
|
+
parser_target: nil,
|
|
66
|
+
max_depth: nil,
|
|
67
|
+
threads: nil,
|
|
68
|
+
fail_on_error: false
|
|
69
|
+
}.freeze
|
|
70
|
+
|
|
71
|
+
# Warnings are collected rather than printed so the caller can configure the log level
|
|
72
|
+
# first: `-l error` would otherwise be unable to silence them, since they are produced
|
|
73
|
+
# before the level is known.
|
|
74
|
+
Result = Struct.new(:options, :mode, :warnings, keyword_init: true)
|
|
75
|
+
|
|
76
|
+
def self.parse(argv)
|
|
77
|
+
options = DEFAULTS.dup
|
|
78
|
+
mode = :parse
|
|
79
|
+
warnings = []
|
|
80
|
+
|
|
81
|
+
index = 0
|
|
82
|
+
while index < argv.size
|
|
83
|
+
arg = argv[index]
|
|
84
|
+
flag = BY_NAME[arg]
|
|
85
|
+
|
|
86
|
+
case flag&.kind
|
|
87
|
+
when :value
|
|
88
|
+
value = argv[index + 1]
|
|
89
|
+
# Only a *known flag* counts as a missing value. Testing for a leading "-" would
|
|
90
|
+
# reject legitimate values such as an exclusion regex of "-vendor".
|
|
91
|
+
if value.nil? || BY_NAME.key?(value)
|
|
92
|
+
warnings << "Option #{arg} expects a value; got #{value.inspect}. Ignoring it."
|
|
93
|
+
else
|
|
94
|
+
options[flag.key] = value
|
|
95
|
+
index += 1
|
|
96
|
+
end
|
|
97
|
+
when :boolean
|
|
98
|
+
options[flag.key] = true
|
|
99
|
+
when :mode
|
|
100
|
+
mode = flag.key
|
|
101
|
+
else
|
|
102
|
+
# chen maps any non-zero exit to a failed command -> DefaultAstGenRunnerResult() ->
|
|
103
|
+
# zero parsed files, i.e. an empty CPG (chen consumer plan 04 §10.1). An unrecognized flag must not
|
|
104
|
+
# cost the user their whole atom, so warn and continue.
|
|
105
|
+
warnings << "Unknown option: #{arg} (ignoring)"
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
index += 1
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
Result.new(options: options, mode: mode, warnings: warnings)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
DESCRIPTION_COLUMN = 25
|
|
115
|
+
|
|
116
|
+
def self.help_text
|
|
117
|
+
lines = ["Usage:"]
|
|
118
|
+
FLAGS.each do |flag|
|
|
119
|
+
usage = flag.usage
|
|
120
|
+
head, *rest = flag.description.split("\n")
|
|
121
|
+
if usage.length < DESCRIPTION_COLUMN
|
|
122
|
+
lines << " #{usage.ljust(DESCRIPTION_COLUMN)}#{head}"
|
|
123
|
+
else
|
|
124
|
+
# No room on the flag's own line; start the description underneath it.
|
|
125
|
+
lines << " #{usage}"
|
|
126
|
+
lines << " #{' ' * DESCRIPTION_COLUMN}#{head}"
|
|
127
|
+
end
|
|
128
|
+
rest.each { |line| lines << " #{' ' * DESCRIPTION_COLUMN}#{line}" }
|
|
129
|
+
end
|
|
130
|
+
lines.join("\n")
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|