lib/yard/handlers/ruby/legacy/class_condition_handler.rb in yard-0.9.18 vs lib/yard/handlers/ruby/legacy/class_condition_handler.rb in yard-0.9.19
- old
+ new
@@ -1,83 +1,83 @@
-# frozen_string_literal: true
-# (see Ruby::ClassConditionHandler)
-# @since 0.5.4
-class YARD::Handlers::Ruby::Legacy::ClassConditionHandler < YARD::Handlers::Ruby::Legacy::Base
- namespace_only
- handles TkIF, TkELSIF, TkUNLESS
-
- process do
- condition = parse_condition
- if condition.nil?
- # Parse both blocks if we're unsure of the condition
- parse_then_block
- parse_else_block
- elsif condition
- parse_then_block
- else
- parse_else_block
- end
- end
-
- protected
-
- # Parses the condition part of the if/unless statement
- #
- # @return [true, false, nil] true if the condition can be definitely
- # parsed to true, false if not, and nil if the condition cannot be
- # parsed with certainty (it's dynamic)
- # @since 0.5.5
- def parse_condition
- condition = nil
-
- # Right now we can handle very simple unary conditions like:
- # if true
- # if false
- # if 0
- # if 100 (not 0)
- # if defined? SOME_CONSTANT
- #
- # The last case will do a lookup in the registry and then one
- # in the Ruby world (using eval).
- case statement.tokens[1..-1].to_s.strip
- when /^(\d+)$/
- condition = $1 != "0"
- when /^defined\?\s*\(?\s*([A-Za-z0-9:_]+?)\s*\)?$/
- # defined? keyword used, let's see if we can look up the name
- # in the registry, then we'll try using Ruby's powers. eval() is not
- # *too* dangerous here since code is not actually executed.
- name = $1
- obj = YARD::Registry.resolve(namespace, name, true)
- begin
- condition = true if obj || Object.instance_eval("defined? #{name}")
- rescue SyntaxError, NameError
- condition = false
- end
- when "true"
- condition = true
- when "false"
- condition = false
- end
-
- if TkUNLESS === statement.tokens.first
- condition = !condition unless condition.nil?
- end
- condition
- end
-
- # @since 0.5.5
- def parse_then_block
- parse_block(:visibility => visibility)
- end
-
- # @since 0.5.5
- def parse_else_block
- return unless statement.block
- stmtlist = YARD::Parser::Ruby::Legacy::StatementList
- stmtlist.new(statement.block).each do |stmt|
- next unless TkELSE === stmt.tokens.first
- push_state(:visibility => visibility) do
- parser.process(stmtlist.new(stmt.block))
- end
- end
- end
-end
+# frozen_string_literal: true
+# (see Ruby::ClassConditionHandler)
+# @since 0.5.4
+class YARD::Handlers::Ruby::Legacy::ClassConditionHandler < YARD::Handlers::Ruby::Legacy::Base
+ namespace_only
+ handles TkIF, TkELSIF, TkUNLESS
+
+ process do
+ condition = parse_condition
+ if condition.nil?
+ # Parse both blocks if we're unsure of the condition
+ parse_then_block
+ parse_else_block
+ elsif condition
+ parse_then_block
+ else
+ parse_else_block
+ end
+ end
+
+ protected
+
+ # Parses the condition part of the if/unless statement
+ #
+ # @return [true, false, nil] true if the condition can be definitely
+ # parsed to true, false if not, and nil if the condition cannot be
+ # parsed with certainty (it's dynamic)
+ # @since 0.5.5
+ def parse_condition
+ condition = nil
+
+ # Right now we can handle very simple unary conditions like:
+ # if true
+ # if false
+ # if 0
+ # if 100 (not 0)
+ # if defined? SOME_CONSTANT
+ #
+ # The last case will do a lookup in the registry and then one
+ # in the Ruby world (using eval).
+ case statement.tokens[1..-1].to_s.strip
+ when /^(\d+)$/
+ condition = $1 != "0"
+ when /^defined\?\s*\(?\s*([A-Za-z0-9:_]+?)\s*\)?$/
+ # defined? keyword used, let's see if we can look up the name
+ # in the registry, then we'll try using Ruby's powers. eval() is not
+ # *too* dangerous here since code is not actually executed.
+ name = $1
+ obj = YARD::Registry.resolve(namespace, name, true)
+ begin
+ condition = true if obj || Object.instance_eval("defined? #{name}")
+ rescue SyntaxError, NameError
+ condition = false
+ end
+ when "true"
+ condition = true
+ when "false"
+ condition = false
+ end
+
+ if TkUNLESS === statement.tokens.first
+ condition = !condition unless condition.nil?
+ end
+ condition
+ end
+
+ # @since 0.5.5
+ def parse_then_block
+ parse_block(:visibility => visibility)
+ end
+
+ # @since 0.5.5
+ def parse_else_block
+ return unless statement.block
+ stmtlist = YARD::Parser::Ruby::Legacy::StatementList
+ stmtlist.new(statement.block).each do |stmt|
+ next unless TkELSE === stmt.tokens.first
+ push_state(:visibility => visibility) do
+ parser.process(stmtlist.new(stmt.block))
+ end
+ end
+ end
+end