def validatePattern()

in util-core/src/main/scala/com/twitter/util/TwitterDateFormat.scala [25:60]


  def validatePattern(
    pattern: String,
    newFormat: Boolean = false
  ): (Boolean, Boolean, Boolean, Boolean) = {
    var quoteOff = true
    var optionalLevel = 0
    var has_Y = false
    var has_w = false
    var has_y = false
    var has_M = false
    var has_d = false
    var has_H = false
    val chars = pattern.toCharArray
    var i = 0
    while (i < chars.length) {
      chars(i) match {
        case '\'' => quoteOff = !quoteOff
        case '[' if newFormat && quoteOff => optionalLevel += 1
        case ']' if newFormat && quoteOff => optionalLevel -= 1
        case 'y' if !has_y && quoteOff && optionalLevel == 0 => has_y = true
        case 'M' if !has_M && quoteOff && optionalLevel == 0 => has_M = true
        case 'd' if !has_d && quoteOff && optionalLevel == 0 => has_d = true
        case 'H' if !has_H && quoteOff && optionalLevel == 0 => has_H = true
        case 'Y' if !has_Y && quoteOff && optionalLevel == 0 => has_Y = true
        case 'w' if !has_w && quoteOff && optionalLevel == 0 => has_w = true
        case _ => ()
      }
      i += 1
    }
    if (has_Y && !has_w) {
      throw new IllegalArgumentException(
        "Invalid date format uses 'Y' for week-of-year without 'w': %s".format(pattern)
      )
    }
    (has_y, has_M, has_d, has_H)
  }