[前][次][番号順一覧][スレッド一覧]

ruby-changes:66434

From: Nobuyoshi <ko1@a...>
Date: Sun, 6 Jun 2021 23:02:46 +0900 (JST)
Subject: [ruby-changes:66434] cf92b3cc97 (master): ast.rb: reduce nesting

https://git.ruby-lang.org/ruby.git/commit/?id=cf92b3cc97

From cf92b3cc97679303cee285190171c7135c81fa27 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Sun, 6 Jun 2021 23:02:06 +0900
Subject: ast.rb: reduce nesting

---
 ast.rb | 231 ++++++++++++++++++++++++++++++++---------------------------------
 1 file changed, 114 insertions(+), 117 deletions(-)

diff --git a/ast.rb b/ast.rb
index 34fa645..9d4b05b 100644
--- a/ast.rb
+++ b/ast.rb
@@ -1,146 +1,143 @@ https://github.com/ruby/ruby/blob/trunk/ast.rb#L1
 # for ast.c
 
-class RubyVM
+# AbstractSyntaxTree provides methods to parse Ruby code into
+# abstract syntax trees. The nodes in the tree
+# are instances of RubyVM::AbstractSyntaxTree::Node.
+#
+# This module is MRI specific as it exposes implementation details
+# of the MRI abstract syntax tree.
+#
+# This module is experimental and its API is not stable, therefore it might
+# change without notice. As examples, the order of children nodes is not
+# guaranteed, the number of children nodes might change, there is no way to
+# access children nodes by name, etc.
+#
+# If you are looking for a stable API or an API working under multiple Ruby
+# implementations, consider using the _parser_ gem or Ripper. If you would
+# like to make RubyVM::AbstractSyntaxTree stable, please join the discussion
+# at https://bugs.ruby-lang.org/issues/14844.
+#
+module RubyVM::AbstractSyntaxTree
 
-  # AbstractSyntaxTree provides methods to parse Ruby code into
-  # abstract syntax trees. The nodes in the tree
-  # are instances of RubyVM::AbstractSyntaxTree::Node.
+  #  call-seq:
+  #     RubyVM::AbstractSyntaxTree.parse(string) -> RubyVM::AbstractSyntaxTree::Node
   #
-  # This module is MRI specific as it exposes implementation details
-  # of the MRI abstract syntax tree.
+  #  Parses the given _string_ into an abstract syntax tree,
+  #  returning the root node of that tree.
   #
-  # This module is experimental and its API is not stable, therefore it might
-  # change without notice. As examples, the order of children nodes is not
-  # guaranteed, the number of children nodes might change, there is no way to
-  # access children nodes by name, etc.
+  #  SyntaxError is raised if the given _string_ is invalid syntax.
   #
-  # If you are looking for a stable API or an API working under multiple Ruby
-  # implementations, consider using the _parser_ gem or Ripper. If you would
-  # like to make RubyVM::AbstractSyntaxTree stable, please join the discussion
-  # at https://bugs.ruby-lang.org/issues/14844.
+  #    RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
+  #    # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-1:9>
+  def self.parse string
+    Primitive.ast_s_parse string
+  end
+
+  #  call-seq:
+  #     RubyVM::AbstractSyntaxTree.parse_file(pathname) -> RubyVM::AbstractSyntaxTree::Node
+  #
+  #   Reads the file from _pathname_, then parses it like ::parse,
+  #   returning the root node of the abstract syntax tree.
   #
-  module AbstractSyntaxTree
+  #   SyntaxError is raised if _pathname_'s contents are not
+  #   valid Ruby syntax.
+  #
+  #     RubyVM::AbstractSyntaxTree.parse_file("my-app/app.rb")
+  #     # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-31:3>
+  def self.parse_file pathname
+    Primitive.ast_s_parse_file pathname
+  end
+
+  #  call-seq:
+  #     RubyVM::AbstractSyntaxTree.of(proc)   -> RubyVM::AbstractSyntaxTree::Node
+  #     RubyVM::AbstractSyntaxTree.of(method) -> RubyVM::AbstractSyntaxTree::Node
+  #
+  #   Returns AST nodes of the given _proc_ or _method_.
+  #
+  #     RubyVM::AbstractSyntaxTree.of(proc {1 + 2})
+  #     # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:35-1:42>
+  #
+  #     def hello
+  #       puts "hello, world"
+  #     end
+  #
+  #     RubyVM::AbstractSyntaxTree.of(method(:hello))
+  #     # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-3:3>
+  def self.of body
+    Primitive.ast_s_of body
+  end
+
+  # RubyVM::AbstractSyntaxTree::Node instances are created by parse methods in
+  # RubyVM::AbstractSyntaxTree.
+  #
+  # This class is MRI specific.
+  #
+  class Node
 
     #  call-seq:
-    #     RubyVM::AbstractSyntaxTree.parse(string) -> RubyVM::AbstractSyntaxTree::Node
-    #
-    #  Parses the given _string_ into an abstract syntax tree,
-    #  returning the root node of that tree.
+    #     node.type -> symbol
     #
-    #  SyntaxError is raised if the given _string_ is invalid syntax.
+    #  Returns the type of this node as a symbol.
     #
-    #    RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
-    #    # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-1:9>
-    def self.parse string
-      Primitive.ast_s_parse string
+    #    root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
+    #    root.type # => :SCOPE
+    #    lasgn = root.children[2]
+    #    lasgn.type # => :LASGN
+    #    call = lasgn.children[1]
+    #    call.type # => :OPCALL
+    def type
+      Primitive.ast_node_type
     end
 
     #  call-seq:
-    #     RubyVM::AbstractSyntaxTree.parse_file(pathname) -> RubyVM::AbstractSyntaxTree::Node
-    #
-    #   Reads the file from _pathname_, then parses it like ::parse,
-    #   returning the root node of the abstract syntax tree.
-    #
-    #   SyntaxError is raised if _pathname_'s contents are not
-    #   valid Ruby syntax.
+    #     node.first_lineno -> integer
     #
-    #     RubyVM::AbstractSyntaxTree.parse_file("my-app/app.rb")
-    #     # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-31:3>
-    def self.parse_file pathname
-      Primitive.ast_s_parse_file pathname
+    #  The line number in the source code where this AST's text began.
+    def first_lineno
+      Primitive.ast_node_first_lineno
     end
 
     #  call-seq:
-    #     RubyVM::AbstractSyntaxTree.of(proc)   -> RubyVM::AbstractSyntaxTree::Node
-    #     RubyVM::AbstractSyntaxTree.of(method) -> RubyVM::AbstractSyntaxTree::Node
+    #     node.first_column -> integer
     #
-    #   Returns AST nodes of the given _proc_ or _method_.
-    #
-    #     RubyVM::AbstractSyntaxTree.of(proc {1 + 2})
-    #     # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:35-1:42>
+    #  The column number in the source code where this AST's text began.
+    def first_column
+      Primitive.ast_node_first_column
+    end
+
+    #  call-seq:
+    #     node.last_lineno -> integer
     #
-    #     def hello
-    #       puts "hello, world"
-    #     end
+    #  The line number in the source code where this AST's text ended.
+    def last_lineno
+      Primitive.ast_node_last_lineno
+    end
+
+    #  call-seq:
+    #     node.last_column -> integer
     #
-    #     RubyVM::AbstractSyntaxTree.of(method(:hello))
-    #     # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-3:3>
-    def self.of body
-      Primitive.ast_s_of body
+    #  The column number in the source code where this AST's text ended.
+    def last_column
+      Primitive.ast_node_last_column
     end
 
-    # RubyVM::AbstractSyntaxTree::Node instances are created by parse methods in
-    # RubyVM::AbstractSyntaxTree.
+    #  call-seq:
+    #     node.children -> array
     #
-    # This class is MRI specific.
+    #  Returns AST nodes under this one.  Each kind of node
+    #  has different children, depending on what kind of node it is.
     #
-    class Node
-
-      #  call-seq:
-      #     node.type -> symbol
-      #
-      #  Returns the type of this node as a symbol.
-      #
-      #    root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
-      #    root.type # => :SCOPE
-      #    lasgn = root.children[2]
-      #    lasgn.type # => :LASGN
-      #    call = lasgn.children[1]
-      #    call.type # => :OPCALL
-      def type
-        Primitive.ast_node_type
-      end
-
-      #  call-seq:
-      #     node.first_lineno -> integer
-      #
-      #  The line number in the source code where this AST's text began.
-      def first_lineno
-        Primitive.ast_node_first_lineno
-      end
-
-      #  call-seq:
-      #     node.first_column -> integer
-      #
-      #  The column number in the source code where this AST's text began.
-      def first_column
-        Primitive.ast_node_first_column
-      end
-
-      #  call-seq:
-      #     node.last_lineno -> integer
-      #
-      #  The line number in the source code where this AST's text ended.
-      def last_lineno
-        Primitive.ast_node_last_lineno
-      end
-
-      #  call-seq:
-      #     node.last_column -> integer
-      #
-      #  The column number in the source code where this AST's text ended.
-      def last_column
-        Primitive.ast_node_last_column
-      end
-
-      #  call-seq:
-      #     node.children -> array
-      #
-      #  Returns AST nodes under this one.  Each kind of node
-      #  has different children, depending on what kind of node it is.
-      #
-      #  The returned array may contain other nodes or <code>nil</code>.
-      def children
-        Primitive.ast_node_children
-      end
+    #  The returned array may contain other nodes or <code>nil</code>.
+    def children
+      Primitive.ast_node_children
+    end
 
-      #  call-seq:
-      #     node.inspect -> string
-      #
-      #  Returns debugging information about this node as a string.
-      def inspect
-        Primitive.ast_node_inspect
-      end
+    #  call-seq:
+    #     node.inspect -> string
+    #
+    #  Returns debugging information about this node as a string.
+    def inspect
+      Primitive.ast_node_inspect
     end
   end
 end
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]