Class: Jazzy::SourceDeclaration::AccessControlLevel

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/jazzy/source_declaration/access_control_level.rb

Constant Summary collapse

ACCESSIBILITY_PRIVATE =
'source.lang.swift.accessibility.private'
ACCESSIBILITY_INTERNAL =
'source.lang.swift.accessibility.internal'
ACCESSIBILITY_PUBLIC =
'source.lang.swift.accessibility.public'
LEVELS =
{
  private: 0,
  internal: 1,
  public: 2,
}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(accessibility) ⇒ AccessControlLevel

Returns a new instance of AccessControlLevel.



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 12

def initialize(accessibility)
  if accessibility == ACCESSIBILITY_PRIVATE
    @level = :private
  elsif accessibility == ACCESSIBILITY_INTERNAL
    @level = :internal
  elsif accessibility == ACCESSIBILITY_PUBLIC
    @level = :public
  else
    raise "cannot initialize AccessControlLevel with '#{accessibility}'"
  end
end

Instance Attribute Details

#levelObject (readonly)

Returns the value of attribute level.



6
7
8
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 6

def level
  @level
end

Class Method Details

.from_doc(doc) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 24

def self.from_doc(doc)
  accessibility = doc['key.accessibility']
  if accessibility
    acl = new(accessibility)
    if acl
      return acl
    end
  end
  acl = from_explicit_declaration(doc['key.parsed_declaration'])
  acl || AccessControlLevel.public # fallback on public ACL
end

.from_explicit_declaration(declaration_string) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 36

def self.from_explicit_declaration(declaration_string)
  if declaration_string =~ /private\ /
    return AccessControlLevel.private
  elsif declaration_string =~ /public\ /
    return AccessControlLevel.public
  elsif declaration_string =~ /internal\ /
    return AccessControlLevel.internal
  end
end

.internalObject



50
51
52
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 50

def self.internal
  new(ACCESSIBILITY_INTERNAL)
end

.privateObject



46
47
48
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 46

def self.private
  new(ACCESSIBILITY_PRIVATE)
end

.publicObject



54
55
56
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 54

def self.public
  new(ACCESSIBILITY_PUBLIC)
end

Instance Method Details

#<=>(other) ⇒ Object



64
65
66
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 64

def <=>(other)
  LEVELS[level] <=> LEVELS[other.level]
end