Module: Meta::Scope::Utils

Defined in:
lib/meta/scope/utils.rb

Class Method Summary collapse

Class Method Details

.and(*scopes) ⇒ Object



25
26
27
28
# File 'lib/meta/scope/utils.rb', line 25

def and(*scopes)
  scopes = scopes.map { |s| parse(s) }
  And.new(*scopes)
end

.parse(scope) ⇒ Object

根据选项构建 Scope 实例,这是兼容之前的字符串写法。



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/meta/scope/utils.rb', line 11

def parse(scope)
  scope = [scope] if scope.is_a?(String) || scope.is_a?(Symbol)

  # 只会有两种类型:Array[String] 和 Scope 子类
  if scope.is_a?(Meta::Scope::Base)
    scope
  elsif scope.is_a?(Array)
    scopes = scope.map { |s| parse_string(s) }
    Or.new(*scopes)
  else
    raise ArgumentError, 'scope 参数必须是一个数组或者 Scope 子类'
  end
end