prism 0.18.0 → 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 +31 -1
- data/README.md +2 -1
- data/config.yml +188 -55
- data/docs/building.md +9 -2
- data/docs/configuration.md +10 -9
- data/docs/encoding.md +24 -56
- data/docs/local_variable_depth.md +229 -0
- data/docs/ruby_api.md +2 -0
- data/docs/serialization.md +18 -13
- data/ext/prism/api_node.c +337 -195
- data/ext/prism/extconf.rb +13 -7
- data/ext/prism/extension.c +96 -32
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +340 -137
- data/include/prism/defines.h +17 -0
- data/include/prism/diagnostic.h +11 -5
- data/include/prism/encoding.h +248 -0
- data/include/prism/options.h +2 -2
- data/include/prism/parser.h +62 -42
- 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 +2 -2
- data/include/prism.h +13 -15
- data/lib/prism/compiler.rb +12 -0
- data/lib/prism/debug.rb +9 -4
- data/lib/prism/desugar_compiler.rb +3 -3
- data/lib/prism/dispatcher.rb +56 -0
- data/lib/prism/dot_visitor.rb +476 -198
- data/lib/prism/dsl.rb +66 -46
- data/lib/prism/ffi.rb +16 -3
- data/lib/prism/lex_compat.rb +19 -9
- data/lib/prism/mutation_compiler.rb +20 -0
- data/lib/prism/node.rb +1173 -450
- data/lib/prism/node_ext.rb +41 -16
- data/lib/prism/parse_result.rb +12 -15
- data/lib/prism/ripper_compat.rb +49 -34
- data/lib/prism/serialize.rb +242 -212
- data/lib/prism/visitor.rb +12 -0
- data/lib/prism.rb +20 -4
- data/prism.gemspec +4 -10
- data/rbi/prism.rbi +605 -230
- data/rbi/prism_static.rbi +3 -0
- data/sig/prism.rbs +379 -124
- data/sig/prism_static.rbs +1 -0
- data/src/diagnostic.c +228 -222
- data/src/encoding.c +5137 -0
- data/src/node.c +66 -0
- data/src/options.c +21 -2
- data/src/prettyprint.c +806 -406
- data/src/prism.c +1092 -700
- data/src/regexp.c +3 -3
- data/src/serialize.c +227 -157
- 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 +5 -11
- data/include/prism/enc/pm_encoding.h +0 -227
- data/src/enc/pm_big5.c +0 -116
- data/src/enc/pm_cp51932.c +0 -57
- data/src/enc/pm_euc_jp.c +0 -69
- data/src/enc/pm_gbk.c +0 -65
- data/src/enc/pm_shift_jis.c +0 -57
- data/src/enc/pm_tables.c +0 -2073
- data/src/enc/pm_unicode.c +0 -2369
- data/src/enc/pm_windows_31j.c +0 -57
data/lib/prism/visitor.rb
CHANGED
@@ -111,6 +111,9 @@ 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
|
|
@@ -252,6 +255,9 @@ module Prism
|
|
252
255
|
# Visit a ImplicitNode node
|
253
256
|
alias visit_implicit_node visit_child_nodes
|
254
257
|
|
258
|
+
# Visit a ImplicitRestNode node
|
259
|
+
alias visit_implicit_rest_node visit_child_nodes
|
260
|
+
|
255
261
|
# Visit a InNode node
|
256
262
|
alias visit_in_node visit_child_nodes
|
257
263
|
|
@@ -264,6 +270,9 @@ module Prism
|
|
264
270
|
# Visit a IndexOrWriteNode node
|
265
271
|
alias visit_index_or_write_node visit_child_nodes
|
266
272
|
|
273
|
+
# Visit a IndexTargetNode node
|
274
|
+
alias visit_index_target_node visit_child_nodes
|
275
|
+
|
267
276
|
# Visit a InstanceVariableAndWriteNode node
|
268
277
|
alias visit_instance_variable_and_write_node visit_child_nodes
|
269
278
|
|
@@ -360,6 +369,9 @@ module Prism
|
|
360
369
|
# Visit a NoKeywordsParameterNode node
|
361
370
|
alias visit_no_keywords_parameter_node visit_child_nodes
|
362
371
|
|
372
|
+
# Visit a NumberedParametersNode node
|
373
|
+
alias visit_numbered_parameters_node visit_child_nodes
|
374
|
+
|
363
375
|
# Visit a NumberedReferenceReadNode node
|
364
376
|
alias visit_numbered_reference_read_node visit_child_nodes
|
365
377
|
|
data/lib/prism.rb
CHANGED
@@ -36,11 +36,11 @@ module Prism
|
|
36
36
|
private_constant :LexRipper
|
37
37
|
|
38
38
|
# :call-seq:
|
39
|
-
# Prism::lex_compat(source, **options) ->
|
39
|
+
# Prism::lex_compat(source, **options) -> ParseResult
|
40
40
|
#
|
41
|
-
# Returns
|
42
|
-
#
|
43
|
-
#
|
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.
|
44
44
|
#
|
45
45
|
# For supported options, see Prism::parse.
|
46
46
|
def self.lex_compat(source, **options)
|
@@ -64,6 +64,22 @@ module Prism
|
|
64
64
|
def self.load(source, serialized)
|
65
65
|
Serialize.load(source, serialized)
|
66
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
|
67
83
|
end
|
68
84
|
|
69
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",
|
@@ -84,14 +85,7 @@ Gem::Specification.new do |spec|
|
|
84
85
|
"lib/prism/parse_result/newlines.rb",
|
85
86
|
"lib/prism/visitor.rb",
|
86
87
|
"src/diagnostic.c",
|
87
|
-
"src/
|
88
|
-
"src/enc/pm_cp51932.c",
|
89
|
-
"src/enc/pm_euc_jp.c",
|
90
|
-
"src/enc/pm_gbk.c",
|
91
|
-
"src/enc/pm_shift_jis.c",
|
92
|
-
"src/enc/pm_tables.c",
|
93
|
-
"src/enc/pm_unicode.c",
|
94
|
-
"src/enc/pm_windows_31j.c",
|
88
|
+
"src/encoding.c",
|
95
89
|
"src/node.c",
|
96
90
|
"src/pack.c",
|
97
91
|
"src/prettyprint.c",
|