prism 0.17.1 → 0.19.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +60 -1
- data/Makefile +5 -5
- data/README.md +4 -3
- data/config.yml +214 -68
- data/docs/build_system.md +6 -6
- data/docs/building.md +10 -3
- data/docs/configuration.md +11 -9
- data/docs/encoding.md +92 -88
- data/docs/heredocs.md +1 -1
- data/docs/javascript.md +29 -1
- data/docs/local_variable_depth.md +229 -0
- data/docs/ruby_api.md +16 -0
- data/docs/serialization.md +18 -13
- data/ext/prism/api_node.c +411 -240
- data/ext/prism/extconf.rb +97 -127
- data/ext/prism/extension.c +97 -33
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +377 -159
- data/include/prism/defines.h +17 -0
- data/include/prism/diagnostic.h +38 -6
- data/include/prism/{enc/pm_encoding.h → encoding.h} +126 -64
- data/include/prism/options.h +2 -2
- data/include/prism/parser.h +62 -36
- data/include/prism/regexp.h +2 -2
- data/include/prism/util/pm_buffer.h +9 -1
- data/include/prism/util/pm_memchr.h +2 -2
- data/include/prism/util/pm_strpbrk.h +3 -3
- data/include/prism/version.h +3 -3
- data/include/prism.h +13 -15
- data/lib/prism/compiler.rb +15 -3
- data/lib/prism/debug.rb +13 -4
- data/lib/prism/desugar_compiler.rb +4 -3
- data/lib/prism/dispatcher.rb +70 -14
- data/lib/prism/dot_visitor.rb +4612 -0
- data/lib/prism/dsl.rb +77 -57
- data/lib/prism/ffi.rb +19 -6
- data/lib/prism/lex_compat.rb +19 -9
- data/lib/prism/mutation_compiler.rb +26 -6
- data/lib/prism/node.rb +1314 -522
- data/lib/prism/node_ext.rb +102 -19
- data/lib/prism/parse_result.rb +58 -27
- data/lib/prism/ripper_compat.rb +49 -34
- data/lib/prism/serialize.rb +251 -227
- data/lib/prism/visitor.rb +15 -3
- data/lib/prism.rb +21 -4
- data/prism.gemspec +7 -9
- data/rbi/prism.rbi +688 -284
- data/rbi/prism_static.rbi +3 -0
- data/sig/prism.rbs +426 -156
- data/sig/prism_static.rbs +1 -0
- data/src/diagnostic.c +280 -216
- data/src/encoding.c +5137 -0
- data/src/node.c +99 -21
- data/src/options.c +21 -2
- data/src/prettyprint.c +1743 -1241
- data/src/prism.c +1774 -831
- data/src/regexp.c +15 -15
- data/src/serialize.c +261 -164
- data/src/util/pm_buffer.c +10 -1
- data/src/util/pm_memchr.c +1 -1
- data/src/util/pm_strpbrk.c +4 -4
- metadata +8 -10
- data/src/enc/pm_big5.c +0 -53
- data/src/enc/pm_euc_jp.c +0 -59
- data/src/enc/pm_gbk.c +0 -62
- data/src/enc/pm_shift_jis.c +0 -57
- data/src/enc/pm_tables.c +0 -743
- data/src/enc/pm_unicode.c +0 -2369
- data/src/enc/pm_windows_31j.c +0 -57
data/lib/prism/visitor.rb
CHANGED
@@ -111,9 +111,15 @@ module Prism
|
|
111
111
|
# Visit a CallOrWriteNode node
|
112
112
|
alias visit_call_or_write_node visit_child_nodes
|
113
113
|
|
114
|
+
# Visit a CallTargetNode node
|
115
|
+
alias visit_call_target_node visit_child_nodes
|
116
|
+
|
114
117
|
# Visit a CapturePatternNode node
|
115
118
|
alias visit_capture_pattern_node visit_child_nodes
|
116
119
|
|
120
|
+
# Visit a CaseMatchNode node
|
121
|
+
alias visit_case_match_node visit_child_nodes
|
122
|
+
|
117
123
|
# Visit a CaseNode node
|
118
124
|
alias visit_case_node visit_child_nodes
|
119
125
|
|
@@ -249,6 +255,9 @@ module Prism
|
|
249
255
|
# Visit a ImplicitNode node
|
250
256
|
alias visit_implicit_node visit_child_nodes
|
251
257
|
|
258
|
+
# Visit a ImplicitRestNode node
|
259
|
+
alias visit_implicit_rest_node visit_child_nodes
|
260
|
+
|
252
261
|
# Visit a InNode node
|
253
262
|
alias visit_in_node visit_child_nodes
|
254
263
|
|
@@ -261,6 +270,9 @@ module Prism
|
|
261
270
|
# Visit a IndexOrWriteNode node
|
262
271
|
alias visit_index_or_write_node visit_child_nodes
|
263
272
|
|
273
|
+
# Visit a IndexTargetNode node
|
274
|
+
alias visit_index_target_node visit_child_nodes
|
275
|
+
|
264
276
|
# Visit a InstanceVariableAndWriteNode node
|
265
277
|
alias visit_instance_variable_and_write_node visit_child_nodes
|
266
278
|
|
@@ -357,6 +369,9 @@ module Prism
|
|
357
369
|
# Visit a NoKeywordsParameterNode node
|
358
370
|
alias visit_no_keywords_parameter_node visit_child_nodes
|
359
371
|
|
372
|
+
# Visit a NumberedParametersNode node
|
373
|
+
alias visit_numbered_parameters_node visit_child_nodes
|
374
|
+
|
360
375
|
# Visit a NumberedReferenceReadNode node
|
361
376
|
alias visit_numbered_reference_read_node visit_child_nodes
|
362
377
|
|
@@ -444,9 +459,6 @@ module Prism
|
|
444
459
|
# Visit a StatementsNode node
|
445
460
|
alias visit_statements_node visit_child_nodes
|
446
461
|
|
447
|
-
# Visit a StringConcatNode node
|
448
|
-
alias visit_string_concat_node visit_child_nodes
|
449
|
-
|
450
462
|
# Visit a StringNode node
|
451
463
|
alias visit_string_node visit_child_nodes
|
452
464
|
|
data/lib/prism.rb
CHANGED
@@ -16,6 +16,7 @@ module Prism
|
|
16
16
|
autoload :Debug, "prism/debug"
|
17
17
|
autoload :DesugarCompiler, "prism/desugar_compiler"
|
18
18
|
autoload :Dispatcher, "prism/dispatcher"
|
19
|
+
autoload :DotVisitor, "prism/dot_visitor"
|
19
20
|
autoload :DSL, "prism/dsl"
|
20
21
|
autoload :LexCompat, "prism/lex_compat"
|
21
22
|
autoload :LexRipper, "prism/lex_compat"
|
@@ -35,11 +36,11 @@ module Prism
|
|
35
36
|
private_constant :LexRipper
|
36
37
|
|
37
38
|
# :call-seq:
|
38
|
-
# Prism::lex_compat(source, **options) ->
|
39
|
+
# Prism::lex_compat(source, **options) -> ParseResult
|
39
40
|
#
|
40
|
-
# Returns
|
41
|
-
#
|
42
|
-
#
|
41
|
+
# Returns a parse result whose value is an array of tokens that closely
|
42
|
+
# resembles the return value of Ripper::lex. The main difference is that the
|
43
|
+
# `:on_sp` token is not emitted.
|
43
44
|
#
|
44
45
|
# For supported options, see Prism::parse.
|
45
46
|
def self.lex_compat(source, **options)
|
@@ -63,6 +64,22 @@ module Prism
|
|
63
64
|
def self.load(source, serialized)
|
64
65
|
Serialize.load(source, serialized)
|
65
66
|
end
|
67
|
+
|
68
|
+
# :call-seq:
|
69
|
+
# Prism::parse_failure?(source, **options) -> bool
|
70
|
+
#
|
71
|
+
# Returns true if the source parses with errors.
|
72
|
+
def self.parse_failure?(source, **options)
|
73
|
+
!parse_success?(source, **options)
|
74
|
+
end
|
75
|
+
|
76
|
+
# :call-seq:
|
77
|
+
# Prism::parse_file_failure?(filepath, **options) -> bool
|
78
|
+
#
|
79
|
+
# Returns true if the file at filepath parses with errors.
|
80
|
+
def self.parse_file_failure?(filepath, **options)
|
81
|
+
!parse_file_success?(filepath, **options)
|
82
|
+
end
|
66
83
|
end
|
67
84
|
|
68
85
|
require_relative "prism/node"
|
data/prism.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "prism"
|
5
|
-
spec.version = "0.
|
5
|
+
spec.version = "0.19.0"
|
6
6
|
spec.authors = ["Shopify"]
|
7
7
|
spec.email = ["ruby@shopify.com"]
|
8
8
|
|
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
"docs/fuzzing.md",
|
30
30
|
"docs/heredocs.md",
|
31
31
|
"docs/javascript.md",
|
32
|
+
"docs/local_variable_depth.md",
|
32
33
|
"docs/mapping.md",
|
33
34
|
"docs/releasing.md",
|
34
35
|
"docs/ripper.md",
|
@@ -43,7 +44,7 @@ Gem::Specification.new do |spec|
|
|
43
44
|
"include/prism/ast.h",
|
44
45
|
"include/prism/defines.h",
|
45
46
|
"include/prism/diagnostic.h",
|
46
|
-
"include/prism/
|
47
|
+
"include/prism/encoding.h",
|
47
48
|
"include/prism/node.h",
|
48
49
|
"include/prism/options.h",
|
49
50
|
"include/prism/pack.h",
|
@@ -67,6 +68,7 @@ Gem::Specification.new do |spec|
|
|
67
68
|
"lib/prism/debug.rb",
|
68
69
|
"lib/prism/desugar_compiler.rb",
|
69
70
|
"lib/prism/dispatcher.rb",
|
71
|
+
"lib/prism/dot_visitor.rb",
|
70
72
|
"lib/prism/dsl.rb",
|
71
73
|
"lib/prism/ffi.rb",
|
72
74
|
"lib/prism/lex_compat.rb",
|
@@ -83,13 +85,7 @@ Gem::Specification.new do |spec|
|
|
83
85
|
"lib/prism/parse_result/newlines.rb",
|
84
86
|
"lib/prism/visitor.rb",
|
85
87
|
"src/diagnostic.c",
|
86
|
-
"src/
|
87
|
-
"src/enc/pm_euc_jp.c",
|
88
|
-
"src/enc/pm_gbk.c",
|
89
|
-
"src/enc/pm_shift_jis.c",
|
90
|
-
"src/enc/pm_tables.c",
|
91
|
-
"src/enc/pm_unicode.c",
|
92
|
-
"src/enc/pm_windows_31j.c",
|
88
|
+
"src/encoding.c",
|
93
89
|
"src/node.c",
|
94
90
|
"src/pack.c",
|
95
91
|
"src/prettyprint.c",
|
@@ -118,4 +114,6 @@ Gem::Specification.new do |spec|
|
|
118
114
|
|
119
115
|
spec.extensions = ["ext/prism/extconf.rb"]
|
120
116
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
117
|
+
spec.metadata["source_code_uri"] = "https://github.com/ruby/prism"
|
118
|
+
spec.metadata["changelog_uri"] = "https://github.com/ruby/prism/blob/main/CHANGELOG.md"
|
121
119
|
end
|