@@ -53,60 +53,50 @@ public bool Range(JDateTime target, JString start, JString end)
5353 var _end = GetDateTime ( target . GetDateTimeParser ( ) , end ) ;
5454 if ( ReferenceEquals ( _end , null ) ) return false ;
5555 if ( target . DateTime . Compare ( _start . DateTime ) < 0 )
56- {
57- var type = target . DateTime . Type ;
58- var code = type == DATE_TYPE ? DRNG01 : DRNG02 ;
59- return FailWith ( new JsonSchemaException (
60- new ErrorDetail ( code , $ "{ type } is earlier than start { type } ") ,
61- new ExpectedDetail ( _start , $ "a { type } from or after { _start } ") ,
62- new ActualDetail ( target , $ "found { target } which is before start { type } ")
63- ) ) ;
64- }
56+ return FailOnStartDate ( target , _start , GetErrorCode ( target , DRNG01 , DRNG02 ) ) ;
6557 if ( target . DateTime . Compare ( _end . DateTime ) > 0 )
66- {
67- var type = target . DateTime . Type ;
68- var code = type == DATE_TYPE ? DRNG03 : DRNG04 ;
69- return FailWith ( new JsonSchemaException (
70- new ErrorDetail ( code , $ "{ type } is later than end { type } ") ,
71- new ExpectedDetail ( _end , $ "a { type } until or before { _end } ") ,
72- new ActualDetail ( target , $ "found { target } which is after end { type } ")
73- ) ) ;
74- }
58+ return FailOnEndDate ( target , _end , GetErrorCode ( target , DRNG03 , DRNG04 ) ) ;
7559 return true ;
7660 }
7761
62+ private static string GetErrorCode ( JDateTime target , string date , string time ) {
63+ return target . DateTime . Type == DATE_TYPE ? date : time ;
64+ }
65+
66+ private bool FailOnStartDate ( JDateTime target , JDateTime start , string code )
67+ {
68+ var type = target . DateTime . Type ;
69+ return FailWith ( new JsonSchemaException (
70+ new ErrorDetail ( code , $ "{ type } is earlier than start { type } ") ,
71+ new ExpectedDetail ( start , $ "a { type } from or after { start } ") ,
72+ new ActualDetail ( target , $ "found { target } which is before start { type } ")
73+ ) ) ;
74+ }
75+
76+ private bool FailOnEndDate ( JDateTime target , JDateTime end , string code )
77+ {
78+ var type = target . DateTime . Type ;
79+ return FailWith ( new JsonSchemaException (
80+ new ErrorDetail ( code , $ "{ type } is later than end { type } ") ,
81+ new ExpectedDetail ( end , $ "a { type } until or before { end } ") ,
82+ new ActualDetail ( target , $ "found { target } which is after end { type } ")
83+ ) ) ;
84+ }
85+
7886 public bool Range ( JDateTime target , JUndefined start , JString end )
7987 {
8088 var _end = GetDateTime ( target . GetDateTimeParser ( ) , end ) ;
8189 if ( ReferenceEquals ( _end , null ) ) return false ;
82- if ( target . DateTime . Compare ( _end . DateTime ) > 0 )
83- {
84- var type = target . DateTime . Type ;
85- var code = type == DATE_TYPE ? DRNG05 : DRNG06 ;
86- return FailWith ( new JsonSchemaException (
87- new ErrorDetail ( code , $ "{ type } is later than end { type } ") ,
88- new ExpectedDetail ( _end , $ "a { type } until or before { _end } ") ,
89- new ActualDetail ( target , $ "found { target } which is after end { type } ")
90- ) ) ;
91- }
92- return true ;
90+ if ( target . DateTime . Compare ( _end . DateTime ) <= 0 ) return true ;
91+ return FailOnEndDate ( target , _end , GetErrorCode ( target , DRNG05 , DRNG06 ) ) ;
9392 }
9493
9594 public bool Range ( JDateTime target , JString start , JUndefined end )
9695 {
9796 var _start = GetDateTime ( target . GetDateTimeParser ( ) , start ) ;
9897 if ( ReferenceEquals ( _start , null ) ) return false ;
99- if ( target . DateTime . Compare ( _start . DateTime ) < 0 )
100- {
101- var type = target . DateTime . Type ;
102- var code = type == DATE_TYPE ? DRNG07 : DRNG08 ;
103- return FailWith ( new JsonSchemaException (
104- new ErrorDetail ( code , $ "{ type } is earlier than start { type } ") ,
105- new ExpectedDetail ( _start , $ "a { type } from or after { _start } ") ,
106- new ActualDetail ( target , $ "found { target } which is before start { type } ")
107- ) ) ;
108- }
109- return true ;
98+ if ( target . DateTime . Compare ( _start . DateTime ) >= 0 ) return true ;
99+ return FailOnStartDate ( target , _start , GetErrorCode ( target , DRNG07 , DRNG08 ) ) ;
110100 }
111101
112102 public bool Start ( JDateTime target , JString reference )
@@ -149,7 +139,7 @@ public bool End(JDateTime target, JString reference)
149139 && _result . DateTime . Type == parser . Type ) return _result ;
150140 var _dateTime = new DateTimeAgent ( parser ) . Parse ( Function , dateTime ) ;
151141 if ( ReferenceEquals ( _dateTime , null ) ) return null ;
152- dateTime . Derived = _dateTime . Create ( dateTime ) ;
142+ dateTime . Derived = _dateTime . CreateNode ( dateTime ) ;
153143 return ( JDateTime ) dateTime . Derived ;
154144 }
155145}
0 commit comments