import de.heikoseeberger.sbtheader.HeaderPattern
import de.heikoseeberger.sbtheader.license.License

import scala.util.matching.Regex

object MIT extends License {
  import HeaderPattern._
  override def apply(yyyy: String, copyrightOwner: String, commentStyle: String = "*"): (Regex, String) = {
    commentStyle match {
      case "*" =>
        (
          cStyleBlockComment,
          s"""|/*
              | * Copyright (c) $yyyy $copyrightOwner
              | *
              | * Permission is hereby granted, free of charge, to any person obtaining a copy of
              | * this software and associated documentation files (the "Software"), to deal in
              | * the Software without restriction, including without limitation the rights to
              | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
              | * the Software, and to permit persons to whom the Software is furnished to do so,
              | * subject to the following conditions:
              | *
              | * The above copyright notice and this permission notice shall be included in all
              | * copies or substantial portions of the Software.
              | *
              | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
              | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
              | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
              | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
              | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
              | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
              | */
              |
              |""".stripMargin
          )
      case "#" =>
        (
          hashLineComment,
          s"""|#
              |# Copyright (c) $yyyy $copyrightOwner
              |#
              |# Permission is hereby granted, free of charge, to any person obtaining a copy of
              |# this software and associated documentation files (the "Software"), to deal in
              |# the Software without restriction, including without limitation the rights to
              |# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
              |# the Software, and to permit persons to whom the Software is furnished to do so,
              |# subject to the following conditions:
              |#
              |# The above copyright notice and this permission notice shall be included in all
              |# copies or substantial portions of the Software.
              |#
              |# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
              |# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
              |# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
              |# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
              |# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
              |# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
              |
              |""".stripMargin
          )
      case _ =>
        throw new IllegalArgumentException(s"Comment style '$commentStyle' not supported")
    }
  }
}