Модуль: Utils::AST Приватный
Обзор
Этот модуль является частью приватного API. Этот модуль можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого модуля, поскольку он может быть удалён или изменён без предупреждения.
Вспомогательные функции для редактирования файлов Ruby.
Определён в пространстве имён
Классы: CaskAST, FormulaAST
Краткое описание констант свернуть
- Node =
Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
RuboCop::AST::Node
- SendNode =
Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
RuboCop::AST::SendNode
- BlockNode =
Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
RuboCop::AST::BlockNode
- DefNode =
Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
RuboCop::AST::DefNode
- ProcessedSource =
Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
RuboCop::AST::ProcessedSource
- TreeRewriter =
Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
Parser::Source::TreeRewriter
Константы, подключённые из Kernel
Kernel::IGNORE_INTERRUPTS_MUTEX
Краткое описание методов класса свернуть
- .body_children(body_node) ⇒ Array<Node> приватный
- .call_node_match?(node, name:, type: nil) ⇒ Boolean приватный
- .component_match?(component_name:, component_type:, target_name:, target_type: nil) ⇒ Boolean приватный
- .literal_value(node) ⇒ T.untyped приватный
- .process_source(source) ⇒ Array<(ProcessedSource, Node)> приватный
- .ruby_literal(value) ⇒ String приватный
- .stanza_text(name, value, indent: nil) ⇒ String приватный
Методы, подключённые из Kernel
#ensure_executable!, #exec_browser, #exec_editor, #ignore_interrupts, #interactive_shell, #quiet_system, #redirect_stdout, #safe_system, #which, #which_editor, #with_env, #with_homebrew_path
Подробное описание методов класса
.body_children(body_node) ⇒ Array<Node>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
20 21 22 23 24 25 26 27 28 | # File 'utils/ast.rb', line 20 def body_children(body_node) if body_node.blank? [] elsif body_node.begin_type? body_node.children.compact else [body_node] end end |
.call_node_match?(node, name:, type: nil) ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
75 76 77 78 79 80 81 82 83 84 85 86 | # File 'utils/ast.rb', line 75 def call_node_match?(node, name:, type: nil) node_type = case node when SendNode then :method_call when BlockNode then :block_call else return false end component_match?(component_name: node.method_name, component_type: node_type, target_name: name, target_type: type) end |
.component_match?(component_name:, component_type:, target_name:, target_type: nil) ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
70 71 72 | # File 'utils/ast.rb', line 70 def component_match?(component_name:, component_type:, target_name:, target_type: nil) component_name == target_name && (target_type.nil? || component_type == target_type) end |
.literal_value(node) ⇒ T.untyped
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
47 48 49 50 51 52 | # File 'utils/ast.rb', line 47 def literal_value(node) return node.str_content if node.str_type? return T.unsafe(node).value if node.sym_type? || node.numeric_type? nil end |
.process_source(source) ⇒ Array<(ProcessedSource, Node)>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
55 56 57 58 59 60 | # File 'utils/ast.rb', line 55 def process_source(source) ruby_version = Version.new(HOMEBREW_REQUIRED_RUBY_VERSION).major_minor.to_f processed_source = ProcessedSource.new(source, ruby_version) root_node = processed_source.ast [processed_source, root_node] end |
.ruby_literal(value) ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
42 43 44 | # File 'utils/ast.rb', line 42 def ruby_literal(value) value.inspect end |
.stanza_text(name, value, indent: nil) ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
31 32 33 34 35 36 37 38 39 | # File 'utils/ast.rb', line 31 def stanza_text(name, value, indent: nil) text = if value.is_a?(String) _, node = process_source(value) value if (node.is_a?(SendNode) || node.is_a?(BlockNode)) && node.method_name == name end text ||= "#{name}#{value.inspect}" text = text.gsub(/^(?!$)/, "" * indent) if indent && !text.match?(/\A\n* +/) text end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Utils/AST.html