aboutsummaryrefslogtreecommitdiff
path: root/dokka-runners/dokkatoo/modules/dokkatoo-plugin/src/main/kotlin/dokka/parameters/VisibilityModifier.kt
blob: de61f97b8b7ce56af25f56a49979d43d22e70c4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package org.jetbrains.dokka.dokkatoo.dokka.parameters

import org.jetbrains.dokka.DokkaConfiguration

/**
 * Denotes the
 * [visibility modifier](https://kotlinlang.org/docs/visibility-modifiers.html)
 * of a source code elements.
 *
 * @see org.jetbrains.dokka.DokkaConfiguration.Visibility
 */
enum class VisibilityModifier {
  /** `public` modifier for Java, default visibility for Kotlin */
  PUBLIC,

  /** `private` modifier for both Kotlin and Java */
  PRIVATE,

  /** `protected` modifier for both Kotlin and Java */
  PROTECTED,

  /** Kotlin-specific `internal` modifier */
  INTERNAL,

  /** Java-specific package-private visibility (no modifier) */
  PACKAGE,
  ;

  companion object {
    internal val entries: Set<VisibilityModifier> = values().toSet()

    // Not defined as a property to try and minimize the dependency on Dokka Core types
    internal val VisibilityModifier.dokkaType: DokkaConfiguration.Visibility
      get() = when (this) {
        PUBLIC    -> DokkaConfiguration.Visibility.PUBLIC
        PRIVATE   -> DokkaConfiguration.Visibility.PRIVATE
        PROTECTED -> DokkaConfiguration.Visibility.PROTECTED
        INTERNAL  -> DokkaConfiguration.Visibility.INTERNAL
        PACKAGE   -> DokkaConfiguration.Visibility.PACKAGE
      }
  }
}