Class: Jazzy::SourceDeclaration::AccessControlLevel
- Inherits:
-
Object
- Object
- Jazzy::SourceDeclaration::AccessControlLevel
- Includes:
- Comparable
- Defined in:
- lib/jazzy/source_declaration/access_control_level.rb
Constant Summary collapse
- ACCESSIBILITY_PRIVATE =
'source.lang.swift.accessibility.private'
- ACCESSIBILITY_FILEPRIVATE =
'source.lang.swift.accessibility.fileprivate'
- ACCESSIBILITY_INTERNAL =
'source.lang.swift.accessibility.internal'
- ACCESSIBILITY_PUBLIC =
'source.lang.swift.accessibility.public'
- ACCESSIBILITY_OPEN =
'source.lang.swift.accessibility.open'
- LEVELS =
{ private: 0, fileprivate: 1, internal: 2, public: 3, open: 4, }.freeze
Instance Attribute Summary collapse
-
#level ⇒ Object
readonly
Returns the value of attribute level.
Class Method Summary collapse
- .fileprivate ⇒ Object
- .from_doc(doc) ⇒ Object
- .from_doc_explicit_declaration(doc) ⇒ Object
- .from_human_string(string) ⇒ Object
- .implicit_deinit?(doc) ⇒ Boolean
- .internal ⇒ Object
- .open ⇒ Object
- .private ⇒ Object
- .public ⇒ Object
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #excluded_levels ⇒ Object
- #included_levels ⇒ Object
-
#initialize(accessibility) ⇒ AccessControlLevel
constructor
A new instance of AccessControlLevel.
Constructor Details
#initialize(accessibility) ⇒ AccessControlLevel
Returns a new instance of AccessControlLevel.
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 17 def initialize(accessibility) @level = case accessibility when ACCESSIBILITY_PRIVATE then :private when ACCESSIBILITY_FILEPRIVATE then :fileprivate when ACCESSIBILITY_INTERNAL then :internal when ACCESSIBILITY_PUBLIC then :public when ACCESSIBILITY_OPEN then :open else raise 'cannot initialize AccessControlLevel with ' \ "'#{accessibility}'" end end |
Instance Attribute Details
#level ⇒ Object (readonly)
Returns the value of attribute level.
8 9 10 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 8 def level @level end |
Class Method Details
.fileprivate ⇒ Object
74 75 76 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 74 def self.fileprivate new(ACCESSIBILITY_FILEPRIVATE) end |
.from_doc(doc) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 30 def self.from_doc(doc) return AccessControlLevel.internal if implicit_deinit?(doc) accessibility = doc['key.accessibility'] if accessibility acl = new(accessibility) if acl return acl end end acl = from_doc_explicit_declaration(doc) acl || AccessControlLevel.internal # fallback on internal ACL end |
.from_doc_explicit_declaration(doc) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 49 def self.from_doc_explicit_declaration(doc) case doc['key.parsed_declaration'] when /private\ / then private when /fileprivate\ / then fileprivate when /public\ / then public when /open\ / then open when /internal\ / then internal end end |
.from_human_string(string) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 59 def self.from_human_string(string) case string.to_s.downcase when 'private' then private when 'fileprivate' then fileprivate when 'internal' then internal when 'public' then public when 'open' then open else raise "cannot initialize AccessControlLevel with '#{string}'" end end |
.implicit_deinit?(doc) ⇒ Boolean
44 45 46 47 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 44 def self.implicit_deinit?(doc) doc['key.name'] == 'deinit' && from_doc_explicit_declaration(doc).nil? end |
.internal ⇒ Object
78 79 80 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 78 def self.internal new(ACCESSIBILITY_INTERNAL) end |
.open ⇒ Object
86 87 88 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 86 def self.open new(ACCESSIBILITY_OPEN) end |
.private ⇒ Object
70 71 72 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 70 def self.private new(ACCESSIBILITY_PRIVATE) end |
.public ⇒ Object
82 83 84 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 82 def self.public new(ACCESSIBILITY_PUBLIC) end |
Instance Method Details
#<=>(other) ⇒ Object
98 99 100 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 98 def <=>(other) LEVELS[level] <=> LEVELS[other.level] end |
#excluded_levels ⇒ Object
106 107 108 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 106 def excluded_levels LEVELS.select { |_, v| v < LEVELS[level] }.keys end |
#included_levels ⇒ Object
102 103 104 |
# File 'lib/jazzy/source_declaration/access_control_level.rb', line 102 def included_levels LEVELS.select { |_, v| v >= LEVELS[level] }.keys end |