Spec-Zone.ru › Homebrew

Модуль: Utils::AST Приватный

Подключает:
Kernel
Подключён в:
CaskAST, FormulaAST
Определён в:
utils/ast.rb,
utils/ast.rbi

Обзор

Этот модуль является частью приватного 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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • body_node (Node, nil)

Возвращает:

  • (Array<Node>)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • node (Node)
  • name (Symbol)
  • type (Symbol, nil) (по умолчанию: nil)

Возвращает:

  • (Boolean)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • component_name (Symbol)
  • component_type (Symbol)
  • target_name (Symbol)
  • target_type (Symbol, nil) (по умолчанию: nil)

Возвращает:

  • (Boolean)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • node (Node)

Возвращает:

  • (T.untyped)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • source (String)

Возвращает:

  • (Array<(ProcessedSource, Node)>)


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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • value (Numeric, String, Symbol)

Возвращает:

  • (String)


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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • name (Symbol)
  • value (Numeric, String, Symbol)
  • indent (Integer, nil) (по умолчанию: nil)

Возвращает:

  • (String)


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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API