Skip to content

Commit da95754

Browse files
committed
Add a SyntaxTree.parse convenience method
1 parent a1e4ff8 commit da95754

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

lib/syntax_tree.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ def initialize(error, lineno, column)
101101
# array and attach them to themselves.
102102
attr_accessor :comments
103103

104-
def initialize(source)
105-
super(source)
104+
def initialize(source, *)
105+
super
106106

107107
# We keep the source around so that we can refer back to it when we're
108108
# generating the AST. Sometimes it's easier to just reference the source
@@ -169,6 +169,12 @@ def initialize(source)
169169
end
170170
end
171171

172+
def self.parse(source)
173+
parser = new(source)
174+
response = parser.parse
175+
response unless parser.error?
176+
end
177+
172178
private
173179

174180
# ----------------------------------------------------------------------------

test/syntax_tree_test.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ class SyntaxTreeTest < Minitest::Test
1717
# --------------------------------------------------------------------------
1818

1919
def test_multibyte
20-
assign = SyntaxTree.new('🎉 + 🎉').parse.statements.body.first
20+
assign = SyntaxTree.parse('🎉 + 🎉').statements.body.first
2121
assert_equal(5, assign.location.end_char)
2222
end
2323

2424
def test_parse_error
25-
assert_raises(ParseError) { SyntaxTree.new('<>').parse }
25+
assert_raises(ParseError) { SyntaxTree.parse('<>') }
2626
end
2727

2828
def test_next_statement_start
@@ -32,7 +32,7 @@ def method # comment
3232
end
3333
SOURCE
3434

35-
bodystmt = SyntaxTree.new(source).parse.statements.body.first.bodystmt
35+
bodystmt = SyntaxTree.parse(source).statements.body.first.bodystmt
3636
assert_equal(20, bodystmt.location.start_char)
3737
end
3838

0 commit comments

Comments
 (0)