Changeset 239
- Timestamp:
- 07/12/01 12:04:58 (7 years ago)
- Files:
-
- trunk/lib/soap/XMLSchemaDatatypes.rb (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/XMLSchemaDatatypes.rb
r230 r239 93 93 end 94 94 end 95 96 protected 97 def trim( data ) 98 data.sub( /\A\s*(\S*)\s*\z/, '\1' ) 99 end 95 100 end 96 101 … … 120 125 def set( newBoolean ) 121 126 if newBoolean.is_a?( String ) 122 if newBoolean == 'true' || newBoolean == '1' 127 str = trim( newBoolean ) 128 if str == 'true' || str == '1' 123 129 @data = true 124 elsif newBoolean == 'false' || newBoolean== '0'130 elsif str == 'false' || str == '0' 125 131 @data = false 126 132 else 127 raise ValueSpaceError.new( "Boolean: #{ newBoolean} is not acceptable." )133 raise ValueSpaceError.new( "Boolean: #{ str } is not acceptable." ) 128 134 end 129 135 else … … 134 140 135 141 class XSDString < XSDBase 142 CharsRegexp = Regexp.new( '\A[\x9\xa\xd\x20-\xd7ff\xe000-\xfffd\x10000\x10ffff]*\z' ) 143 136 144 public 137 145 … … 142 150 143 151 def set( newString ) 152 unless CharsRegexp =~ newString 153 raise ValueSpaceError.new( "String: #{ newString } is not acceptable." ) 154 end 144 155 @data = newString 145 156 end … … 158 169 159 170 def set( newDecimal ) 160 /^([+-]?)(\d*)(?:\.(\d*)?)?$/ =~ newDecimal.to_s171 /^([+-]?)(\d*)(?:\.(\d*)?)?$/ =~ trim( newDecimal.to_s ) 161 172 unless Regexp.last_match 162 173 raise ValueSpaceError.new( "Decimal: #{ newDecimal } is not acceptable." ) … … 202 213 @data = if newFloat.is_a?( Float ) 203 214 narrowTo32bit( newFloat ) 204 elsif newFloat == 'NaN'205 0.0/0.0206 elsif newFloat == 'INF'207 1.0/0.0208 elsif newFloat == '-INF'209 -1.0/0.0210 215 else 211 narrowTo32bit( newFloat.to_f ) 216 str = trim( newFloat.to_s ) 217 if str == 'NaN' 218 0.0/0.0 219 elsif str == 'INF' 220 1.0/0.0 221 elsif str == '-INF' 222 -1.0/0.0 223 else 224 narrowTo32bit( str.to_f ) 225 end 212 226 end 213 227 end … … 250 264 @data = if newDouble.is_a?( Float ) 251 265 newDouble 252 elsif newDouble == 'NaN'253 0.0/0.0254 elsif newDouble == 'INF'255 1.0/0.0256 elsif newDouble == '-INF'257 -1.0/0.0258 266 else 259 newDouble.to_f 267 str = trim( newDouble.to_s ) 268 if str == 'NaN' 269 0.0/0.0 270 elsif str == 'INF' 271 1.0/0.0 272 elsif str == '-INF' 273 -1.0/0.0 274 else 275 str.to_f 276 end 260 277 end 261 278 end … … 293 310 @data = Date.new3( gt.year, gt.mon, gt.mday, gt.hour, gt.min, gt.sec ) 294 311 else 295 /^([+-]?\d+)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:[+-]\d\d:\d\d)?)?$/ =~ t .to_s312 /^([+-]?\d+)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:[+-]\d\d:\d\d)?)?$/ =~ trim( t.to_s ) 296 313 unless Regexp.last_match 297 314 raise ValueSpaceError.new( "DateTime: #{ t } is not acceptable." ) … … 375 392 @data = t 376 393 else 377 /^(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(?:Z|(?:([+-])(\d\d):(\d\d))?)?$/ =~ t .to_s394 /^(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(?:Z|(?:([+-])(\d\d):(\d\d))?)?$/ =~ trim( t.to_s ) 378 395 unless Regexp.last_match 379 396 raise ValueSpaceError.new( "Time: #{ t } is not acceptable." ) … … 433 450 @data = Date.new3( gt.year, gt.mon, gt.mday, gt.hour, gt.min, gt.sec ) 434 451 else 435 /^([+-]?\d+)-(\d\d)-(\d\d)(Z|(?:[+-]\d\d:\d\d)?)?$/ =~ t .to_s452 /^([+-]?\d+)-(\d\d)-(\d\d)(Z|(?:[+-]\d\d:\d\d)?)?$/ =~ trim( t.to_s ) 436 453 unless Regexp.last_match 437 454 raise ValueSpaceError.new( "Time: #{ t } is not acceptable." ) … … 463 480 464 481 def set( newString ) 465 @data = [ newString ].pack( "m")482 @data = setEncoded( [ newString ].pack( "m" )) 466 483 end 467 484 468 485 def setEncoded( newBase64String ) 469 486 @data = String.new( newBase64String ) 470 @data.sub!( /^\s*/, '' ) 471 @data.sub!( /\s*$/, '' ) 487 @data = trim( @data ) 472 488 end 473 489