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'.freeze
ACCESSIBILITY_INTERNAL =
'source.lang.swift.accessibility.internal'.freeze
ACCESSIBILITY_PUBLIC =
'source.lang.swift.accessibility.public'.freeze
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
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 12

def initialize(accessibility)
  @level = case accessibility
           when ACCESSIBILITY_PRIVATE then :private
           when ACCESSIBILITY_INTERNAL then :internal
           when ACCESSIBILITY_PUBLIC then :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



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

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



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

def self.from_explicit_declaration(declaration_string)
  case declaration_string
  when /private\ / then private
  when /public\ / then public
  when /internal\ / then internal
  end
end

.from_human_string(string) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 43

def self.from_human_string(string)
  case string.to_s.downcase
  when 'private' then private
  when 'internal' then internal
  when 'public' then public
  else raise "cannot initialize AccessControlLevel with '#{string}'"
  end
end

.internalObject



56
57
58
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 56

def self.internal
  new(ACCESSIBILITY_INTERNAL)
end

.privateObject



52
53
54
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 52

def self.private
  new(ACCESSIBILITY_PRIVATE)
end

.publicObject



60
61
62
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 60

def self.public
  new(ACCESSIBILITY_PUBLIC)
end

Instance Method Details

#<=>(other) ⇒ Object



70
71
72
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 70

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