All Downloads are FREE. Search and download functionalities are using the official Maven repository.

za.co.absa.db.mag.naming.implementations.AsIsNaming.scala Maven / Gradle / Ivy

/*
 * Copyright 2022 ABSA Group Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package za.co.absa.db.mag.naming.implementations

import za.co.absa.db.mag.naming.LettersCase.AsIs
import za.co.absa.db.mag.naming.{LettersCase, NamingConvention}

/**
 *  `AsIsNaming` provides a naming convention that leaves strings as they are.
 *  It implements the [[NamingConvention]] trait.
 *  @param lettersCase - The case of the letters in the string.
 */
class AsIsNaming(lettersCase: LettersCase) extends NamingConvention {

  /**
   *  Returns the original string converted to the specified letter case.
   *  @param original - The original string.
   *  @return The original string converted to the specified letter case.
   */
  override def stringPerConvention(original: String): String = {
    lettersCase.convert(original)
  }
}

/**
 *  `AsIsNaming.Implicits` provides an implicit [[NamingConvention]] instance that leaves strings as they are.
 */
object AsIsNaming {
  object Implicits {

    /**
     *  An implicit [[NamingConvention]] instance that leaves strings as they are.
     */
    implicit val namingConvention: NamingConvention = new AsIsNaming(AsIs)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy