@@ -430,23 +430,28 @@ extension OpenAPI.Document {
430430    /// specification releases a new patch version, OpenAPIKit will see a patch version release
431431    /// explicitly supports decoding documents of that new patch version before said version will
432432    /// succesfully decode as the `v3_1_x` case.
433-     public  enum  Version :  RawRepresentable ,  Equatable ,  Codable ,  Sendable  { 
433+     public  enum  Version :  RawRepresentable ,  Equatable ,  Comparable ,   Codable ,  Sendable  { 
434434        case  v3_1_0
435435        case  v3_1_1
436436        case  v3_1_2
437437        case  v3_1_x( x:  Int ) 
438438
439+         case  v3_2_0
440+         case  v3_2_x( x:  Int ) 
441+ 
439442      public  init ? ( rawValue:  String )  { 
440443          switch  rawValue { 
441444          case  " 3.1.0 " :  self  =  . v3_1_0
442445          case  " 3.1.1 " :  self  =  . v3_1_1
443446          case  " 3.1.2 " :  self  =  . v3_1_2
447+           case  " 3.2.0 " :  self  =  . v3_2_0
444448          default : 
445449              let  components  =  rawValue. split ( separator:  " . " ) 
446450              guard  components. count ==  3  else  { 
447451                  return  nil 
448452              } 
449-               guard  components [ 0 ]  ==  " 3 " ,  components [ 1 ]  ==  " 1 "  else  { 
453+               let  minorVersion  =  components [ 1 ] 
454+               guard  components [ 0 ]  ==  " 3 " ,  ( minorVersion ==  " 1 "  || minorVersion ==  " 2 " )  else  { 
450455                  return  nil 
451456              } 
452457              guard  let  patchVersion =  Int ( components [ 2 ] ,  radix:  10 )  else  { 
@@ -455,10 +460,17 @@ extension OpenAPI.Document {
455460              // to support newer versions released in the future without a breaking
456461              // change to the enumeration, bump the upper limit here to e.g. 2 or 3
457462              // or 6:
458-               guard  patchVersion >  1  && patchVersion <=  2  else  { 
459-                   return  nil 
463+               if  minorVersion ==  " 2 "  { 
464+                   guard   patchVersion >  0  && patchVersion <=  0  else  { 
465+                       return  nil 
466+                   } 
467+                   self  =  . v3_2_x( x:  patchVersion) 
468+               }  else  { 
469+                   guard   patchVersion >  2  && patchVersion <=  2  else  { 
470+                       return  nil 
471+                   } 
472+                   self  =  . v3_1_x( x:  patchVersion) 
460473              } 
461-               self  =  . v3_1_x( x:  patchVersion) 
462474          } 
463475      } 
464476
@@ -468,6 +480,73 @@ extension OpenAPI.Document {
468480            case  . v3_1_1:  return  " 3.1.1 " 
469481            case  . v3_1_2:  return  " 3.1.2 " 
470482            case  . v3_1_x( x:  let  x) :  return  " 3.1. \( x) " 
483+ 
484+             case  . v3_2_0:  return  " 3.2.0 " 
485+             case  . v3_2_x( x:  let  x) :  return  " 3.2. \( x) " 
486+             } 
487+         } 
488+ 
489+         public  static  func  <  ( lhs:  Self ,  rhs:  Self )  ->  Bool  { 
490+             switch  lhs { 
491+             case  . v3_1_0: 
492+                 switch  rhs { 
493+                 case  . v3_1_0:  false 
494+                 case  . v3_1_1:  true 
495+                 case  . v3_1_2:  true 
496+                 case  . v3_1_x( x:  let  x) :  0  <  x
497+                 case  . v3_2_0:  true 
498+                 case  . v3_2_x( x:  _) :  true 
499+                 } 
500+ 
501+             case  . v3_1_1: 
502+                 switch  rhs { 
503+                 case  . v3_1_0:  false 
504+                 case  . v3_1_1:  false 
505+                 case  . v3_1_2:  true 
506+                 case  . v3_1_x( x:  let  y) :  1  <  y
507+                 case  . v3_2_0:  true 
508+                 case  . v3_2_x( x:  _) :  true 
509+                 } 
510+ 
511+             case  . v3_1_2: 
512+                 switch  rhs { 
513+                 case  . v3_1_0:  false 
514+                 case  . v3_1_1:  false 
515+                 case  . v3_1_2:  false 
516+                 case  . v3_1_x( x:  let  y) :  2  <  y
517+                 case  . v3_2_0:  true 
518+                 case  . v3_2_x( x:  _) :  true 
519+                 } 
520+ 
521+             case  . v3_1_x( x:  let  x) : 
522+                 switch  rhs { 
523+                 case  . v3_1_0:  x <  0 
524+                 case  . v3_1_1:  x <  1 
525+                 case  . v3_1_2:  x <  2 
526+                 case  . v3_1_x( x:  let  y) :  x <  y
527+                 case  . v3_2_0:  true 
528+                 case  . v3_2_x( x:  _) :  true 
529+                 } 
530+ 
531+             case  . v3_2_0: 
532+                 switch  rhs { 
533+                 case  . v3_1_0:  false 
534+                 case  . v3_1_1:  false 
535+                 case  . v3_1_2:  false 
536+                 case  . v3_1_x( x:  _) :  false 
537+                 case  . v3_2_0:  false 
538+                 case  . v3_2_x( x:  let  y) :  0  <  y
539+                 } 
540+ 
541+             case  . v3_2_x( x:  let  x) : 
542+                 switch  rhs { 
543+                 case  . v3_1_0:  false 
544+                 case  . v3_1_1:  false 
545+                 case  . v3_1_2:  false 
546+                 case  . v3_1_x( x:  _) :  false 
547+                 case  . v3_2_0:  x <  0 
548+                 case  . v3_2_x( x:  let  y) :  x <  y
549+                 } 
471550            } 
472551        } 
473552    } 
0 commit comments