Spec-Zone.ru › Homebrew

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

Включен в:
Cask::Cask, Formula
Определен в:
api_hashable.rb

Обзор

Этот модуль является частью приватного API. Этот модуль можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого модуля, поскольку он может быть удален или изменен без предупреждения.

Используется для замены распространенных путей универсальными заполнителями при генерации JSON для API.

Краткое описание методов экземпляра свернуть

  • #deep_remove_placeholders(value) ⇒ T.type_parameter(:U) приватный
  • #generated_hash! ⇒ void приватный
  • #generating_hash! ⇒ void приватный
  • #generating_hash? ⇒ Boolean приватный

Подробное описание методов экземпляра

#deep_remove_placeholders(value) ⇒ T.type_parameter(:U)

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удален или изменен без предупреждения.

Параметры:

  • value (T.type_parameter(:U))

Возвращает:

  • (T.type_parameter(:U))


43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'api_hashable.rb', line 43

def deep_remove_placeholders(value)
  return value if generating_hash?

  value = case value
  when Hash
    value.transform_values { |v| deep_remove_placeholders(v) }
  when Array
    value.map { |v| deep_remove_placeholders(v) }
  when String
    value.gsub(HOMEBREW_PREFIX_PLACEHOLDER, HOMEBREW_PREFIX)
         .gsub(HOMEBREW_CELLAR_PLACEHOLDER, HOMEBREW_CELLAR)
         .gsub(HOMEBREW_HOME_PLACEHOLDER, Dir.home)
  else
    value
  end

  T.cast(value, T.type_parameter(:U))
end

#generated_hash! ⇒ void

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удален или изменен без предупреждения.

Этот метод возвращает неопределенное значение.



24
25
26
27
28
29
30
31
32
33
34
# File 'api_hashable.rb', line 24

def generated_hash!
  return unless generating_hash?

  # Revert monkeypatches for API generation
  Object.send(:remove_const, :HOMEBREW_PREFIX)
  Object.const_set(:HOMEBREW_PREFIX, @old_homebrew_prefix)
  ENV["HOME"] = @old_home
  ENV["GIT_CONFIG_GLOBAL"] = @old_git_config_global

  @generating_hash = false
end

#generating_hash! ⇒ void

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удален или изменен без предупреждения.

Этот метод возвращает неопределенное значение.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'api_hashable.rb', line 7

def generating_hash!
  return if generating_hash?

  # Apply monkeypatches for API generation
  @old_homebrew_prefix = T.let(HOMEBREW_PREFIX, T.nilable(Pathname))
  @old_homebrew_cellar = T.let(HOMEBREW_CELLAR, T.nilable(Pathname))
  @old_home = T.let(Dir.home, T.nilable(String))
  @old_git_config_global = T.let(ENV.fetch("GIT_CONFIG_GLOBAL", nil), T.nilable(String))
  Object.send(:remove_const, :HOMEBREW_PREFIX)
  Object.const_set(:HOMEBREW_PREFIX, Pathname.new(HOMEBREW_PREFIX_PLACEHOLDER))
  ENV["HOME"] = HOMEBREW_HOME_PLACEHOLDER
  ENV["GIT_CONFIG_GLOBAL"] = File.join(@old_home, ".gitconfig")

  @generating_hash = T.let(true, T.nilable(T::Boolean))
end

#generating_hash? ⇒ Boolean

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удален или изменен без предупреждения.

Возвращает:

  • (Boolean)


37
38
39
40
# File 'api_hashable.rb', line 37

def generating_hash?
  @generating_hash ||= false
  @generating_hash == true
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/APIHashable.html

Spec-Zone.ru

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