HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/tana/frontend/node_modules/kss/lib/kss_parameter.js
'use strict';

/**
 * The `kss/lib/kss_parameter` module is normally accessed via the
 * [`KssParameter()`]{@link module:kss.KssParameter} class of the `kss` module:
 * ```
 * const KssParameter = require('kss').KssParameter;
 * ```
 * @private
 * @module kss/lib/kss_parameter
 */

/**
 * A KssParameter object represents a single parameter of a `KssSection`.
 *
 * This class is normally accessed via the [`kss`]{@link module:kss} module:
 * ```
 * const KssParameter = require('kss').KssParameter;
 * ```
 *
 * @alias module:kss.KssParameter
 */
class KssParameter {

  /**
   * Creates a KssParameter object and stores the given data.
   *
   * If passed an object, it will add `section`, `name`, and `description`
   * properties.
   *
   * @param {Object} [data] An object of data.
   */
  constructor(data) {
    data = data || {};

    this.meta = {
      section: null
    };

    this.data = {
      name: '',
      defaultValue: '',
      description: ''
    };

    // Loop through the given properties.
    for (let name in data) {
      // If the property is defined in this.data or this.meta, add it via our API.
      if (data.hasOwnProperty(name) && (this.data.hasOwnProperty(name) || this.meta.hasOwnProperty(name))) {
        this[name](data[name]);
      }
    }
  }

  /**
   * Gets or sets the `KssSection` object this `KssParameter` is associated with.
   *
   * If the `section` value is provided, the `KssSection` for this parameter is
   * set. Otherwise, the `KssSection` of the parameter is returned.
   *
   * @param {KssSection} [section] Optional. The `KssSection` that owns the
   *   `KssParameter`.
   * @returns {KssSection|KssParameter} If section is given, the current
   *   `KssParameter` object is returned to allow chaining of methods. Otherwise,
   *   the `KssSection` object the parameter belongs to is returned.
   */
  section(section) {
    if (typeof section === 'undefined') {
      return this.meta.section;
    }

    this.meta.section = section;
    // Allow chaining.
    return this;
  }

  /**
   * Gets or sets the name of the `KssParameter`.
   *
   * If the `name` value is provided, the name of this `KssParameter` is set.
   * Otherwise, the name of the `KssParameter` is returned.
   *
   * @param {string} [name] Optional. The name of the `KssParameter`.
   * @returns {string|KssParameter} If name is given, the current `KssParameter`
   *   object is returned to allow chaining of methods. Otherwise, the name of the
   *   `KssParameter` is returned.
   */
  name(name) {
    if (typeof name === 'undefined') {
      return this.data.name;
    }

    this.data.name = name;
    // Allow chaining.
    return this;
  }

  /**
   * Gets or sets the default value of the `KssParameter`.
   *
   * If the `defaultValue` value is provided, the default value of this
   * `KssParameter` is set. Otherwise, the default value of the `KssParameter` is
   * returned.
   *
   * @param {string} defaultValue Optional. The default value of the
   *   `KssParameter`.
   * @returns {string|KssParameter} If `defaultValue` is given, the current
   *   `KssParameter` object is returned to allow chaining of methods. Otherwise,
   *   the default value of the `KssParameter` is returned.
   */
  defaultValue(defaultValue) {
    if (typeof defaultValue !== 'undefined') {
      this.data.defaultValue = defaultValue;
      // Allow chaining.
      return this;
    } else {
      return this.data.defaultValue;
    }
  }

  /**
   * Gets or sets the description of the `KssParameter`.
   *
   * If the `description` is provided, the description of this `KssParameter` is set.
   * Otherwise, the description of the `KssParameter` is returned.
   *
   * @param {string} [description] Optional. The description of the `KssParameter`.
   * @returns {string|KssParameter} If description is given, the current
   *   `KssParameter` object is returned to allow chaining of methods. Otherwise,
   *   the description of the `KssParameter` is returned.
   */
  description(description) {
    if (typeof description === 'undefined') {
      return this.data.description;
    }

    this.data.description = description;
    // Allow chaining.
    return this;
  }

  /**
   * Return the `KssParameter` as a JSON object.
   *
   * @returns {Object} A JSON object representation of the `KssParameter`.
   */
  toJSON() {
    return {
      name: this.name(),
      defaultValue: this.defaultValue(),
      description: this.description()
    };
  }
}

module.exports = KssParameter;