rtiss_soap4r 2.1.0 → 3.0.0.beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (712) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +20 -0
  3. data/.envrc +4 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +39 -0
  6. data/COPYING +7 -0
  7. data/GPL +340 -0
  8. data/Gemfile +53 -0
  9. data/Gemfile.lock +221 -0
  10. data/README.md +57 -0
  11. data/RELEASE_en.html +1900 -0
  12. data/RUBYS +56 -0
  13. data/Rakefile +88 -0
  14. data/bin/wsdl2ruby.rb +1 -4
  15. data/bin/xsd2ruby.rb +2 -4
  16. data/gemfiles/httpclient.gemfile +26 -0
  17. data/install.rb +91 -0
  18. data/lib/soap/attachment.rb +27 -11
  19. data/lib/soap/attrproxy.rb +0 -1
  20. data/lib/soap/baseData.rb +15 -3
  21. data/lib/soap/element.rb +1 -2
  22. data/lib/soap/encodingstyle/aspDotNetHandler.rb +0 -1
  23. data/lib/soap/encodingstyle/handler.rb +0 -1
  24. data/lib/soap/encodingstyle/literalHandler.rb +0 -1
  25. data/lib/soap/encodingstyle/soapHandler.rb +0 -1
  26. data/lib/soap/filter/filterchain.rb +1 -2
  27. data/lib/soap/filter/handler.rb +0 -1
  28. data/lib/soap/filter/streamhandler.rb +0 -1
  29. data/lib/soap/filter.rb +0 -1
  30. data/lib/soap/generator.rb +3 -3
  31. data/lib/soap/header/handler.rb +0 -1
  32. data/lib/soap/header/handlerset.rb +0 -1
  33. data/lib/soap/header/mappinghandler.rb +0 -1
  34. data/lib/soap/header/simplehandler.rb +0 -1
  35. data/lib/soap/http_logger.rb +16 -2
  36. data/lib/soap/httpconfigloader.rb +1 -2
  37. data/lib/soap/mapping/encodedregistry.rb +22 -20
  38. data/lib/soap/mapping/factory.rb +42 -13
  39. data/lib/soap/mapping/literalregistry.rb +3 -6
  40. data/lib/soap/mapping/mapping.rb +11 -12
  41. data/lib/soap/mapping/registry.rb +2 -5
  42. data/lib/soap/mapping/rubytypeFactory.rb +2 -2
  43. data/lib/soap/mapping/schemadefinition.rb +0 -1
  44. data/lib/soap/mapping/typeMap.rb +0 -2
  45. data/lib/soap/mapping/wsdlencodedregistry.rb +1 -2
  46. data/lib/soap/mapping/wsdlliteralregistry.rb +0 -1
  47. data/lib/soap/mapping.rb +0 -1
  48. data/lib/soap/marshal.rb +0 -1
  49. data/lib/soap/mimemessage.rb +52 -27
  50. data/lib/soap/nestedexception.rb +1 -2
  51. data/lib/soap/netHttpClient.rb +4 -5
  52. data/lib/soap/ns.rb +0 -5
  53. data/lib/soap/parser.rb +1 -1
  54. data/lib/soap/processor.rb +0 -1
  55. data/lib/soap/property.rb +21 -18
  56. data/lib/soap/proxy.rb +0 -1
  57. data/lib/soap/rpc/cgistub.rb +3 -4
  58. data/lib/soap/rpc/driver.rb +175 -176
  59. data/lib/soap/rpc/element.rb +2 -3
  60. data/lib/soap/rpc/element.rb.orig +374 -0
  61. data/lib/soap/rpc/httpserver.rb +1 -3
  62. data/lib/soap/rpc/methodDef.rb +0 -1
  63. data/lib/soap/rpc/proxy.rb +2 -3
  64. data/lib/soap/rpc/router.rb +36 -7
  65. data/lib/soap/rpc/rpc.rb +0 -1
  66. data/lib/soap/rpc/soaplet.rb +2 -3
  67. data/lib/soap/rpc/standaloneServer.rb +1 -2
  68. data/lib/soap/soap.rb +4 -30
  69. data/lib/soap/streamHandler.rb +8 -10
  70. data/lib/soap/version.rb +3 -3
  71. data/lib/soap/wsdlDriver.rb +0 -2
  72. data/lib/wsdl/binding.rb +0 -1
  73. data/lib/wsdl/data.rb +0 -1
  74. data/lib/wsdl/definitions.rb +0 -1
  75. data/lib/wsdl/documentation.rb +0 -1
  76. data/lib/wsdl/import.rb +0 -1
  77. data/lib/wsdl/importer.rb +0 -1
  78. data/lib/wsdl/info.rb +0 -1
  79. data/lib/wsdl/message.rb +0 -1
  80. data/lib/wsdl/operation.rb +0 -1
  81. data/lib/wsdl/operationBinding.rb +3 -4
  82. data/lib/wsdl/param.rb +0 -1
  83. data/lib/wsdl/parser.rb +5 -21
  84. data/lib/wsdl/part.rb +0 -1
  85. data/lib/wsdl/port.rb +0 -1
  86. data/lib/wsdl/portType.rb +0 -1
  87. data/lib/wsdl/service.rb +0 -1
  88. data/lib/wsdl/soap/address.rb +0 -1
  89. data/lib/wsdl/soap/binding.rb +0 -1
  90. data/lib/wsdl/soap/body.rb +0 -1
  91. data/lib/wsdl/soap/cgiStubCreator.rb +0 -1
  92. data/lib/wsdl/soap/classDefCreator.rb +20 -1
  93. data/lib/wsdl/soap/classDefCreatorSupport.rb +1 -2
  94. data/lib/wsdl/soap/classNameCreator.rb +0 -1
  95. data/lib/wsdl/soap/clientSkeltonCreator.rb +2 -5
  96. data/lib/wsdl/soap/complexType.rb +0 -1
  97. data/lib/wsdl/soap/data.rb +0 -1
  98. data/lib/wsdl/soap/definitions.rb +1 -2
  99. data/lib/wsdl/soap/driverCreator.rb +75 -74
  100. data/lib/wsdl/soap/element.rb +0 -1
  101. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +0 -1
  102. data/lib/wsdl/soap/fault.rb +0 -1
  103. data/lib/wsdl/soap/header.rb +0 -1
  104. data/lib/wsdl/soap/headerfault.rb +0 -1
  105. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +0 -1
  106. data/lib/wsdl/soap/mappingRegistryCreator.rb +0 -1
  107. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +0 -1
  108. data/lib/wsdl/soap/methodDefCreator.rb +9 -1
  109. data/lib/wsdl/soap/operation.rb +1 -2
  110. data/lib/wsdl/soap/servantSkeltonCreator.rb +2 -5
  111. data/lib/wsdl/soap/servletStubCreator.rb +0 -1
  112. data/lib/wsdl/soap/standaloneServerStubCreator.rb +0 -1
  113. data/lib/wsdl/soap/wsdl2ruby.rb +9 -5
  114. data/lib/wsdl/types.rb +0 -1
  115. data/lib/wsdl/wsdl.rb +0 -1
  116. data/lib/wsdl/xmlSchema/all.rb +0 -1
  117. data/lib/wsdl/xmlSchema/annotation.rb +0 -1
  118. data/lib/wsdl/xmlSchema/any.rb +0 -1
  119. data/lib/wsdl/xmlSchema/anyAttribute.rb +0 -1
  120. data/lib/wsdl/xmlSchema/attribute.rb +0 -1
  121. data/lib/wsdl/xmlSchema/attributeGroup.rb +0 -1
  122. data/lib/wsdl/xmlSchema/choice.rb +0 -1
  123. data/lib/wsdl/xmlSchema/complexContent.rb +0 -1
  124. data/lib/wsdl/xmlSchema/complexExtension.rb +0 -1
  125. data/lib/wsdl/xmlSchema/complexRestriction.rb +0 -1
  126. data/lib/wsdl/xmlSchema/complexType.rb +0 -1
  127. data/lib/wsdl/xmlSchema/content.rb +0 -1
  128. data/lib/wsdl/xmlSchema/data.rb +0 -1
  129. data/lib/wsdl/xmlSchema/element.rb +1 -2
  130. data/lib/wsdl/xmlSchema/enumeration.rb +0 -1
  131. data/lib/wsdl/xmlSchema/fractiondigits.rb +0 -1
  132. data/lib/wsdl/xmlSchema/group.rb +0 -1
  133. data/lib/wsdl/xmlSchema/import.rb +1 -1
  134. data/lib/wsdl/xmlSchema/importHandler.rb +1 -1
  135. data/lib/wsdl/xmlSchema/importer.rb +0 -1
  136. data/lib/wsdl/xmlSchema/include.rb +1 -1
  137. data/lib/wsdl/xmlSchema/length.rb +0 -1
  138. data/lib/wsdl/xmlSchema/list.rb +0 -1
  139. data/lib/wsdl/xmlSchema/maxexclusive.rb +0 -1
  140. data/lib/wsdl/xmlSchema/maxinclusive.rb +0 -1
  141. data/lib/wsdl/xmlSchema/maxlength.rb +0 -1
  142. data/lib/wsdl/xmlSchema/minexclusive.rb +0 -1
  143. data/lib/wsdl/xmlSchema/mininclusive.rb +0 -1
  144. data/lib/wsdl/xmlSchema/minlength.rb +0 -1
  145. data/lib/wsdl/xmlSchema/parser.rb +4 -5
  146. data/lib/wsdl/xmlSchema/pattern.rb +0 -1
  147. data/lib/wsdl/xmlSchema/ref.rb +0 -1
  148. data/lib/wsdl/xmlSchema/schema.rb +0 -1
  149. data/lib/wsdl/xmlSchema/sequence.rb +0 -1
  150. data/lib/wsdl/xmlSchema/simpleContent.rb +0 -1
  151. data/lib/wsdl/xmlSchema/simpleExtension.rb +0 -1
  152. data/lib/wsdl/xmlSchema/simpleRestriction.rb +0 -1
  153. data/lib/wsdl/xmlSchema/simpleType.rb +0 -1
  154. data/lib/wsdl/xmlSchema/totaldigits.rb +0 -1
  155. data/lib/wsdl/xmlSchema/union.rb +0 -1
  156. data/lib/wsdl/xmlSchema/unique.rb +0 -1
  157. data/lib/wsdl/xmlSchema/whitespace.rb +0 -1
  158. data/lib/wsdl/xmlSchema/xsd2ruby.rb +0 -3
  159. data/lib/xsd/charset.rb +162 -152
  160. data/lib/xsd/codegen/classdef.rb +0 -1
  161. data/lib/xsd/codegen/commentdef.rb +0 -1
  162. data/lib/xsd/codegen/gensupport.rb +5 -9
  163. data/lib/xsd/codegen/methoddef.rb +0 -1
  164. data/lib/xsd/codegen/moduledef.rb +0 -1
  165. data/lib/xsd/codegen.rb +0 -1
  166. data/lib/xsd/datatypes.rb +1122 -1098
  167. data/lib/xsd/datatypes1999.rb +0 -1
  168. data/lib/xsd/iconvcharset.rb +2 -19
  169. data/lib/xsd/mapping.rb +0 -1
  170. data/lib/xsd/namedelements.rb +0 -1
  171. data/lib/xsd/ns.rb +1 -2
  172. data/lib/xsd/qname.rb +2 -3
  173. data/lib/xsd/xmlparser/libxmlparser.rb +22 -39
  174. data/lib/xsd/xmlparser/parser.rb +1 -2
  175. data/lib/xsd/xmlparser/rexmlparser.rb +8 -4
  176. data/lib/xsd/xmlparser/xmlparser.rb +50 -0
  177. data/lib/xsd/xmlparser/xmlscanner.rb +149 -0
  178. data/lib/xsd/xmlparser.rb +18 -23
  179. data/lib/xsd/xmlparser.rb.orig +76 -0
  180. data/rtiss_soap4r.gemspec +751 -0
  181. data/rubyStyle.css +104 -0
  182. data/sample/attachment/complexmime/EdmService.rb +124 -0
  183. data/sample/attachment/complexmime/README.txt +3 -0
  184. data/sample/attachment/complexmime/client.rb +57 -0
  185. data/sample/attachment/complexmime/drift.cdf +1 -0
  186. data/sample/attachment/complexmime/plaatje.png +1 -0
  187. data/sample/attachment/complexmime/server.rb +68 -0
  188. data/sample/attachment/swa/client.rb +13 -0
  189. data/sample/attachment/swa/server.rb +23 -0
  190. data/sample/basic/apacheClient.rb +92 -0
  191. data/sample/basic/babelfish.rb +16 -0
  192. data/sample/basic/calc/calc.rb +17 -0
  193. data/sample/basic/calc/calc2.rb +29 -0
  194. data/sample/basic/calc/client.rb +26 -0
  195. data/sample/basic/calc/client2.rb +29 -0
  196. data/sample/basic/calc/httpd.rb +20 -0
  197. data/sample/basic/calc/samplehttpd.conf +2 -0
  198. data/sample/basic/calc/server.cgi +15 -0
  199. data/sample/basic/calc/server.fcgi +22 -0
  200. data/sample/basic/calc/server.rb +21 -0
  201. data/sample/basic/calc/server2.rb +24 -0
  202. data/sample/basic/exchange/client.rb +19 -0
  203. data/sample/basic/exchange/exchange.rb +17 -0
  204. data/sample/basic/exchange/httpd.rb +20 -0
  205. data/sample/basic/exchange/samplehttpd.conf +2 -0
  206. data/sample/basic/exchange/server.cgi +14 -0
  207. data/sample/basic/exchange/server.rb +20 -0
  208. data/sample/basic/flickr.rb +26 -0
  209. data/sample/basic/helloworld/client.rb +6 -0
  210. data/sample/basic/helloworld/server.rb +20 -0
  211. data/sample/basic/sampleStruct/client.rb +16 -0
  212. data/sample/basic/sampleStruct/httpd.rb +20 -0
  213. data/sample/basic/sampleStruct/iSampleStruct.rb +22 -0
  214. data/sample/basic/sampleStruct/sampleStruct.rb +13 -0
  215. data/sample/basic/sampleStruct/samplehttpd.conf +2 -0
  216. data/sample/basic/sampleStruct/server.cgi +14 -0
  217. data/sample/basic/sampleStruct/server.rb +20 -0
  218. data/sample/basic/whois.rb +14 -0
  219. data/sample/basic/wsdl_helloworld/README +15 -0
  220. data/sample/basic/wsdl_helloworld/client/default.rb +1 -0
  221. data/sample/basic/wsdl_helloworld/client/defaultDriver.rb +47 -0
  222. data/sample/basic/wsdl_helloworld/client/hws.wsdl +46 -0
  223. data/sample/basic/wsdl_helloworld/client/hwsClient.rb +22 -0
  224. data/sample/basic/wsdl_helloworld/server/hw_s.rb +25 -0
  225. data/sample/basic/wsdl_helloworld/server/hws.wsdl +46 -0
  226. data/sample/basic/yahooNewsSearch.rb +36 -0
  227. data/sample/howto/as_xml/client.rb +22 -0
  228. data/sample/howto/as_xml/server.rb +22 -0
  229. data/sample/howto/base64/client.rb +17 -0
  230. data/sample/howto/base64/server.rb +30 -0
  231. data/sample/howto/custom_ns/client.rb +37 -0
  232. data/sample/howto/custom_ns/server.rb +42 -0
  233. data/sample/howto/documentliteral/README.txt +19 -0
  234. data/sample/howto/documentliteral/client.rb +11 -0
  235. data/sample/howto/documentliteral/echo.wsdl +66 -0
  236. data/sample/howto/documentliteral/servant.rb +11 -0
  237. data/sample/howto/filter/client.rb +42 -0
  238. data/sample/howto/filter/server.rb +67 -0
  239. data/sample/howto/scopesample/client.rb +34 -0
  240. data/sample/howto/scopesample/httpd.rb +22 -0
  241. data/sample/howto/scopesample/samplehttpd.conf +2 -0
  242. data/sample/howto/scopesample/servant.rb +18 -0
  243. data/sample/howto/scopesample/server.cgi +29 -0
  244. data/sample/howto/scopesample/server.rb +20 -0
  245. data/sample/howto/styleuse/client.rb +21 -0
  246. data/sample/howto/styleuse/server.rb +86 -0
  247. data/sample/howto/wsdl_fault/README.txt +11 -0
  248. data/sample/howto/wsdl_fault/fault/AddClient.rb +24 -0
  249. data/sample/howto/wsdl_fault/fault/AddServer.rb +15 -0
  250. data/sample/howto/wsdl_fault/fault/AddServiceImpl.rb +18 -0
  251. data/sample/howto/wsdl_fault/fault/fault.wsdl +79 -0
  252. data/sample/howto/wsdl_fault/multifault/AddClient.rb +28 -0
  253. data/sample/howto/wsdl_fault/multifault/AddServer.rb +15 -0
  254. data/sample/howto/wsdl_fault/multifault/AddServiceImpl.rb +24 -0
  255. data/sample/howto/wsdl_fault/multifault/fault.wsdl +96 -0
  256. data/sample/howto/wsdl_hash/client.rb +11 -0
  257. data/sample/howto/wsdl_hash/hash.wsdl +69 -0
  258. data/sample/howto/wsdl_hash/server.rb +17 -0
  259. data/sample/marshal/customfactory.rb +97 -0
  260. data/sample/marshal/customregistry.rb +17 -0
  261. data/sample/marshal/digraph.rb +43 -0
  262. data/sample/marshal/enum/README.txt +6 -0
  263. data/sample/marshal/enum/enum.xsd +23 -0
  264. data/sample/marshal/enum/enumsample.rb +20 -0
  265. data/sample/marshal/enum/enumsample_mapper.rb +7 -0
  266. data/sample/marshal/enum/enumsample_mapping_registry.rb +23 -0
  267. data/sample/marshal/enum/marshal.rb +9 -0
  268. data/sample/payload/basicauth/client.rb +10 -0
  269. data/sample/payload/basicauth/htpasswd +2 -0
  270. data/sample/payload/basicauth/server.rb +43 -0
  271. data/sample/payload/cookies/calc.rb +52 -0
  272. data/sample/payload/cookies/client.rb +30 -0
  273. data/sample/payload/cookies/filterclient.rb +52 -0
  274. data/sample/payload/cookies/server.rb +24 -0
  275. data/sample/payload/gzipped/client.rb +8 -0
  276. data/sample/payload/gzipped/server.rb +21 -0
  277. data/sample/payload/ssl/files/README +1 -0
  278. data/sample/payload/ssl/files/ca.cert +23 -0
  279. data/sample/payload/ssl/files/client.cert +19 -0
  280. data/sample/payload/ssl/files/client.key +15 -0
  281. data/sample/payload/ssl/files/server.cert +19 -0
  282. data/sample/payload/ssl/files/server.key +15 -0
  283. data/sample/payload/ssl/files/sslclient.properties +5 -0
  284. data/sample/payload/ssl/files/sslclient_require_noserverauth.properties +2 -0
  285. data/sample/payload/ssl/files/sslclient_with_clientauth.properties +9 -0
  286. data/sample/payload/ssl/files/subca.cert +21 -0
  287. data/sample/payload/ssl/sslclient.rb +12 -0
  288. data/sample/payload/ssl/sslclient_require_noserverauth.rb +12 -0
  289. data/sample/payload/ssl/sslclient_with_clientauth.rb +12 -0
  290. data/sample/payload/ssl/sslserver.rb +49 -0
  291. data/sample/payload/ssl/sslserver_noauth.rb +45 -0
  292. data/sample/payload/ssl/sslserver_require_clientauth.rb +50 -0
  293. data/sample/showcase/soap/hippo5tq/hippo5tq.rb +41 -0
  294. data/sample/showcase/soap/hippo5tq/hippo5tq2.rb +99 -0
  295. data/sample/showcase/soap/hippo5tq/hippoClient.rb +106 -0
  296. data/sample/showcase/soap/icd/IICD.rb +17 -0
  297. data/sample/showcase/soap/icd/icd.rb +46 -0
  298. data/sample/showcase/soap/mssoap/README.txt +62 -0
  299. data/sample/showcase/soap/mssoap/client.vba +19 -0
  300. data/sample/showcase/soap/mssoap/stockQuoteService.cgi +44 -0
  301. data/sample/showcase/soap/mssoap/stockQuoteService.rb +9 -0
  302. data/sample/showcase/soap/mssoap/stockQuoteService.wsdl +47 -0
  303. data/sample/showcase/soap/mssoap/stockQuoteServiceClient.rb +26 -0
  304. data/sample/showcase/soap/mssoap/stockQuoteServiceClient.xls +0 -0
  305. data/sample/showcase/soap/mssoap/stockQuoteServicePortTypeDriver.rb +46 -0
  306. data/sample/showcase/soap/netDicV06/INetDicV06.rb +36 -0
  307. data/sample/showcase/soap/netDicV06/netDicV06.rb +16 -0
  308. data/sample/showcase/soap/raa/SOAP__Lite.pl +15 -0
  309. data/sample/showcase/soap/raa/pocketSOAP.js +33 -0
  310. data/sample/showcase/soap/raa2.4/raa.rb +332 -0
  311. data/sample/showcase/soap/raa2.4/raa.wsdl +644 -0
  312. data/sample/showcase/soap/raa2.4/raaDriver.rb +255 -0
  313. data/sample/showcase/soap/raa2.4/raaServiceClient.rb +354 -0
  314. data/sample/showcase/soap/raa2.4/sample.rb +115 -0
  315. data/sample/showcase/soap/rwiki/rwikiClient.rb +29 -0
  316. data/sample/showcase/soap/rwiki/rwikiServer.cgi +44 -0
  317. data/sample/showcase/soap/soapbox/ContactsDataSet.xml +37 -0
  318. data/sample/showcase/soap/soapbox/ExceptionDataSet.xml +23 -0
  319. data/sample/showcase/soap/soapbox/MessageDataSet.xml +8 -0
  320. data/sample/showcase/soap/soapbox/SoapBoxWebService.wsdl +1233 -0
  321. data/sample/showcase/soap/soapbox/SoapBoxWebServiceWithRawXML.wsdl +1226 -0
  322. data/sample/showcase/soap/soapbox/wsdlDriver.rb +23 -0
  323. data/sample/showcase/wsdl/PayPalSvc/client.rb +36 -0
  324. data/sample/showcase/wsdl/amazon/AmazonSearch.rb +3160 -0
  325. data/sample/showcase/wsdl/amazon/AmazonSearchDriver.rb +546 -0
  326. data/sample/showcase/wsdl/amazon/sampleClient.rb +37 -0
  327. data/sample/showcase/wsdl/amazon/wsdlDriver.rb +52 -0
  328. data/sample/showcase/wsdl/amazonEC/client.rb +13 -0
  329. data/sample/showcase/wsdl/eBaySvc/sampleclient.rb +60 -0
  330. data/sample/showcase/wsdl/googleAdwords/CampaignService.wsdl +785 -0
  331. data/sample/showcase/wsdl/googleAdwords/ca.pem +19 -0
  332. data/sample/showcase/wsdl/googleAdwords/client.rb +40 -0
  333. data/sample/showcase/wsdl/googleAdwords/soap/property +1 -0
  334. data/sample/showcase/wsdl/googleSearch/GoogleSearch.rb +97 -0
  335. data/sample/showcase/wsdl/googleSearch/GoogleSearchDriver.rb +102 -0
  336. data/sample/showcase/wsdl/googleSearch/README +6 -0
  337. data/sample/showcase/wsdl/googleSearch/httpd.rb +20 -0
  338. data/sample/showcase/wsdl/googleSearch/sampleClient.rb +56 -0
  339. data/sample/showcase/wsdl/googleSearch/samplehttpd.conf +2 -0
  340. data/sample/showcase/wsdl/googleSearch/sjissearch.sh +3 -0
  341. data/sample/showcase/wsdl/googleSearch/wsdlDriver.rb +29 -0
  342. data/sample/showcase/wsdl/noaa/README.txt +5 -0
  343. data/sample/showcase/wsdl/noaa/client.rb +44 -0
  344. data/sample/showcase/wsdl/noaa/default.rb +46 -0
  345. data/sample/showcase/wsdl/noaa/defaultDriver.rb +66 -0
  346. data/sample/showcase/wsdl/noaa/defaultMappingRegistry.rb +74 -0
  347. data/sample/showcase/wsdl/noaa/ndfdXMLClient.rb +43 -0
  348. data/sample/showcase/wsdl/raa2.4/raa.rb +134 -0
  349. data/sample/showcase/wsdl/raa2.4/raa.wsdl +644 -0
  350. data/sample/showcase/wsdl/raa2.4/wsdlDriver.rb +117 -0
  351. data/sample/showcase/wsdl/rnn/client.rb +59 -0
  352. data/sample/showcase/wsdl/rnn/post.rb +27 -0
  353. data/sample/showcase/wsdl/rnn/rnn-hash.wsdl +282 -0
  354. data/sample/showcase/wsdl/rnn/rnn.wsdl +310 -0
  355. data/sample/showcase/wsdl/rnn/submit.rb +63 -0
  356. data/sample/showcase/wsdl/salesforce/SforceServiceClient.rb +280 -0
  357. data/sample/showcase/wsdl/salesforce/ca.pem +35 -0
  358. data/sample/showcase/wsdl/salesforce/client.rb +156 -0
  359. data/sample/showcase/wsdl/salesforce/default.rb +1740 -0
  360. data/sample/showcase/wsdl/salesforce/defaultDriver.rb +165 -0
  361. data/sample/showcase/wsdl/salesforce/soap/property +1 -0
  362. data/sample/soapheader/authheader/authmgr.rb +41 -0
  363. data/sample/soapheader/authheader/client.rb +40 -0
  364. data/sample/soapheader/authheader/client2.rb +42 -0
  365. data/sample/soapheader/authheader/server.rb +73 -0
  366. data/sample/soapheader/authheader/server2.rb +83 -0
  367. data/sample/soapheader/soapext_basicauth/client.rb +25 -0
  368. data/sample/soapheader/soapext_basicauth/mms_MizGIS.rb +701 -0
  369. data/sample/soapheader/soapext_basicauth/mms_MizGIS.wsdl +1007 -0
  370. data/sample/soapheader/soapext_basicauth/mms_MizGISClient.rb +231 -0
  371. data/sample/soapheader/soapext_basicauth/mms_MizGISDriver.rb +210 -0
  372. data/sample/soapheader/soapext_basicauth/mms_MizGISMappingRegistry.rb +1232 -0
  373. data/test/16runner.rb +68 -0
  374. data/test/interopR2/README.txt +2 -0
  375. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  376. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  377. data/test/interopR2/base.rb +288 -0
  378. data/test/interopR2/client.NetRemoting.rb +17 -0
  379. data/test/interopR2/client.rb +1234 -0
  380. data/test/interopR2/client4S4C.rb +15 -0
  381. data/test/interopR2/client4S4C2.rb +14 -0
  382. data/test/interopR2/clientASP.NET.rb +17 -0
  383. data/test/interopR2/clientApacheAxis.rb +16 -0
  384. data/test/interopR2/clientApacheSOAP.rb +17 -0
  385. data/test/interopR2/clientBEAWebLogic.rb +17 -0
  386. data/test/interopR2/clientBase.rb +1967 -0
  387. data/test/interopR2/clientCapeConnect.rb +18 -0
  388. data/test/interopR2/clientDelphi.rb +19 -0
  389. data/test/interopR2/clientEasySoap.rb +14 -0
  390. data/test/interopR2/clientFrontier.rb +25 -0
  391. data/test/interopR2/clientGLUE.rb +32 -0
  392. data/test/interopR2/clientHP.rb +13 -0
  393. data/test/interopR2/clientJAX-RPC.rb +19 -0
  394. data/test/interopR2/clientJSOAP.rb +14 -0
  395. data/test/interopR2/clientKafkaXSLT.rb +15 -0
  396. data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
  397. data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
  398. data/test/interopR2/clientNuSOAP.rb +19 -0
  399. data/test/interopR2/clientNuWave.rb +15 -0
  400. data/test/interopR2/clientOpenLink.rb +15 -0
  401. data/test/interopR2/clientOracle.rb +15 -0
  402. data/test/interopR2/clientPEAR.rb +18 -0
  403. data/test/interopR2/clientPhalanx.rb +18 -0
  404. data/test/interopR2/clientSIMACE.rb +18 -0
  405. data/test/interopR2/clientSOAP4R.rb +18 -0
  406. data/test/interopR2/clientSOAP__Lite.rb +14 -0
  407. data/test/interopR2/clientSQLData.rb +18 -0
  408. data/test/interopR2/clientSilverStream.rb +17 -0
  409. data/test/interopR2/clientSpray2001.rb +17 -0
  410. data/test/interopR2/clientSun.rb +19 -0
  411. data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
  412. data/test/interopR2/clientWASP.rb +19 -0
  413. data/test/interopR2/clientWASPC.rb +18 -0
  414. data/test/interopR2/clientWebMethods.rb +15 -0
  415. data/test/interopR2/clientWhiteMesa.rb +28 -0
  416. data/test/interopR2/clientWingfoot.rb +15 -0
  417. data/test/interopR2/clientXMLBus.rb +19 -0
  418. data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
  419. data/test/interopR2/clientXSOAP.rb +14 -0
  420. data/test/interopR2/clientZSI.rb +19 -0
  421. data/test/interopR2/clienteSOAP.rb +18 -0
  422. data/test/interopR2/clientgSOAP.rb +18 -0
  423. data/test/interopR2/clientkSOAP.rb +17 -0
  424. data/test/interopR2/iSimonReg.rb +112 -0
  425. data/test/interopR2/interopResultBase.rb +114 -0
  426. data/test/interopR2/interopService.rb +247 -0
  427. data/test/interopR2/rwikiInteropService.rb +105 -0
  428. data/test/interopR2/server.cgi +270 -0
  429. data/test/interopR2/server.rb +275 -0
  430. data/test/interopR2/simonReg.rb +123 -0
  431. data/test/interopR2/test.sh +49 -0
  432. data/test/interopR4/client.rb +112 -0
  433. data/test/results +4810 -0
  434. data/test/runner.rb +7 -0
  435. data/test/sm11/classDef.rb +156 -0
  436. data/test/sm11/client.rb +542 -0
  437. data/test/sm11/driver.rb +183 -0
  438. data/test/sm11/servant.rb +1067 -0
  439. data/test/sm11/server.rb +25 -0
  440. data/test/soap/asp.net/hello.wsdl +96 -0
  441. data/test/soap/asp.net/test_aspdotnet.rb +123 -0
  442. data/test/soap/auth/htdigest +2 -0
  443. data/test/soap/auth/htpasswd +2 -0
  444. data/test/soap/auth/test_basic.rb +116 -0
  445. data/test/soap/auth/test_digest.rb +118 -0
  446. data/test/soap/calc/calc.rb +17 -0
  447. data/test/soap/calc/calc2.rb +29 -0
  448. data/test/soap/calc/server.cgi +13 -0
  449. data/test/soap/calc/server.rb +17 -0
  450. data/test/soap/calc/server2.rb +20 -0
  451. data/test/soap/calc/test_calc2.rb +55 -0
  452. data/test/soap/case/test_mapping.rb +33 -0
  453. data/test/soap/fault/test_customfault.rb +60 -0
  454. data/test/soap/fault/test_fault.rb +46 -0
  455. data/test/soap/fault/test_soaparray.rb +35 -0
  456. data/test/soap/filter/test_filter.rb +147 -0
  457. data/test/soap/header/server.cgi +122 -0
  458. data/test/soap/header/session.pstoredb +0 -0
  459. data/test/soap/header/test_authheader.rb +234 -0
  460. data/test/soap/header/test_authheader_cgi.rb +120 -0
  461. data/test/soap/header/test_simplehandler.rb +120 -0
  462. data/test/soap/helloworld/hw_s.rb +16 -0
  463. data/test/soap/helloworld/test_helloworld.rb +42 -0
  464. data/test/soap/htpasswd +2 -0
  465. data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
  466. data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
  467. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  468. data/test/soap/literalArrayMapping/test_definedarray.rb +33 -0
  469. data/test/soap/marshal/marshaltestlib.rb +456 -0
  470. data/test/soap/marshal/test_digraph.rb +56 -0
  471. data/test/soap/marshal/test_marshal.rb +26 -0
  472. data/test/soap/marshal/test_struct.rb +47 -0
  473. data/test/soap/ssl/README +1 -0
  474. data/test/soap/ssl/ca.cert +23 -0
  475. data/test/soap/ssl/client.cert +19 -0
  476. data/test/soap/ssl/client.key +15 -0
  477. data/test/soap/ssl/server.cert +19 -0
  478. data/test/soap/ssl/server.key +15 -0
  479. data/test/soap/ssl/sslsvr.rb +57 -0
  480. data/test/soap/ssl/subca.cert +21 -0
  481. data/test/soap/ssl/test_ssl.rb +238 -0
  482. data/test/soap/struct/test_struct.rb +69 -0
  483. data/test/soap/styleuse/client.rb +20 -0
  484. data/test/soap/styleuse/server.rb +86 -0
  485. data/test/soap/swa/test_file.rb +76 -0
  486. data/test/soap/test_basetype.rb +1090 -0
  487. data/test/soap/test_cookie.rb +111 -0
  488. data/test/soap/test_custom_ns.rb +105 -0
  489. data/test/soap/test_custommap.rb +110 -0
  490. data/test/soap/test_empty.rb +105 -0
  491. data/test/soap/test_envelopenamespace.rb +84 -0
  492. data/test/soap/test_extraattr.rb +54 -0
  493. data/test/soap/test_generator.rb +27 -0
  494. data/test/soap/test_httpconfigloader.rb +71 -0
  495. data/test/soap/test_mapping.rb +122 -0
  496. data/test/soap/test_nestedexception.rb +61 -0
  497. data/test/soap/test_nil.rb +61 -0
  498. data/test/soap/test_no_indent.rb +88 -0
  499. data/test/soap/test_property.rb +427 -0
  500. data/test/soap/test_response_as_xml.rb +116 -0
  501. data/test/soap/test_soapelement.rb +138 -0
  502. data/test/soap/test_streamhandler.rb +269 -0
  503. data/test/soap/test_styleuse.rb +327 -0
  504. data/test/soap/wsdlDriver/README.txt +2 -0
  505. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  506. data/test/soap/wsdlDriver/document.wsdl +54 -0
  507. data/test/soap/wsdlDriver/echo_version.rb +29 -0
  508. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  509. data/test/soap/wsdlDriver/test_calc.rb +72 -0
  510. data/test/soap/wsdlDriver/test_document.rb +72 -0
  511. data/test/soap/wsdlDriver/test_simpletype.rb +81 -0
  512. data/test/test_helper.rb +82 -0
  513. data/test/wsdl/abstract/abstract.rb +102 -0
  514. data/test/wsdl/abstract/abstract.wsdl +176 -0
  515. data/test/wsdl/abstract/abstractDriver.rb +73 -0
  516. data/test/wsdl/abstract/abstractMappingRegistry.rb +139 -0
  517. data/test/wsdl/abstract/test_abstract.rb +158 -0
  518. data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
  519. data/test/wsdl/anonymous/expectedDriver.rb +61 -0
  520. data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
  521. data/test/wsdl/anonymous/lp.rb +128 -0
  522. data/test/wsdl/anonymous/lp.wsdl +147 -0
  523. data/test/wsdl/anonymous/lpDriver.rb +61 -0
  524. data/test/wsdl/anonymous/lpMappingRegistry.rb +176 -0
  525. data/test/wsdl/anonymous/test_anonymous.rb +130 -0
  526. data/test/wsdl/any/any.wsdl +114 -0
  527. data/test/wsdl/any/echo.rb +57 -0
  528. data/test/wsdl/any/echoDriver.rb +70 -0
  529. data/test/wsdl/any/echoMappingRegistry.rb +63 -0
  530. data/test/wsdl/any/echoServant.rb +52 -0
  531. data/test/wsdl/any/echo_service.rb +69 -0
  532. data/test/wsdl/any/echo_serviceClient.rb +52 -0
  533. data/test/wsdl/any/expectedDriver.rb +70 -0
  534. data/test/wsdl/any/expectedEcho.rb +57 -0
  535. data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
  536. data/test/wsdl/any/expectedService.rb +69 -0
  537. data/test/wsdl/any/test_any.rb +193 -0
  538. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  539. data/test/wsdl/axisArray/itemList.rb +31 -0
  540. data/test/wsdl/axisArray/itemListDriver.rb +62 -0
  541. data/test/wsdl/axisArray/itemListMappingRegistry.rb +60 -0
  542. data/test/wsdl/axisArray/test_axisarray.rb +124 -0
  543. data/test/wsdl/choice/choice.rb +117 -0
  544. data/test/wsdl/choice/choice.wsdl +167 -0
  545. data/test/wsdl/choice/choiceDriver.rb +69 -0
  546. data/test/wsdl/choice/choiceMappingRegistry.rb +131 -0
  547. data/test/wsdl/choice/test_choice.rb +310 -0
  548. data/test/wsdl/complexcontent/complexContent.rb +40 -0
  549. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  550. data/test/wsdl/complexcontent/complexContentMappingRegistry.rb +67 -0
  551. data/test/wsdl/complexcontent/test_echo.rb +89 -0
  552. data/test/wsdl/datetime/DatetimeService.rb +44 -0
  553. data/test/wsdl/datetime/datetime.rb +0 -0
  554. data/test/wsdl/datetime/datetime.wsdl +45 -0
  555. data/test/wsdl/datetime/datetimeServant.rb +22 -0
  556. data/test/wsdl/datetime/test_datetime.rb +88 -0
  557. data/test/wsdl/document/array/double.rb +114 -0
  558. data/test/wsdl/document/array/double.wsdl +161 -0
  559. data/test/wsdl/document/array/doubleDriver.rb +69 -0
  560. data/test/wsdl/document/array/doubleMappingRegistry.rb +115 -0
  561. data/test/wsdl/document/array/test_array.rb +202 -0
  562. data/test/wsdl/document/document.wsdl +76 -0
  563. data/test/wsdl/document/echo.rb +120 -0
  564. data/test/wsdl/document/echoDriver.rb +53 -0
  565. data/test/wsdl/document/echoMappingRegistry.rb +64 -0
  566. data/test/wsdl/document/number.wsdl +54 -0
  567. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  568. data/test/wsdl/document/test_nosoapaction.rb +102 -0
  569. data/test/wsdl/document/test_number.rb +92 -0
  570. data/test/wsdl/document/test_rpc.rb +351 -0
  571. data/test/wsdl/emptycomplextype.wsdl +31 -0
  572. data/test/wsdl/fault/Add.rb +53 -0
  573. data/test/wsdl/fault/AddMappingRegistry.rb +46 -0
  574. data/test/wsdl/fault/AddServant.rb +28 -0
  575. data/test/wsdl/fault/AddService.rb +51 -0
  576. data/test/wsdl/fault/fault.wsdl +79 -0
  577. data/test/wsdl/fault/multifault.wsdl +96 -0
  578. data/test/wsdl/fault/test_fault.rb +119 -0
  579. data/test/wsdl/fault/test_multifault.rb +133 -0
  580. data/test/wsdl/group/echo.rb +58 -0
  581. data/test/wsdl/group/echoDriver.rb +53 -0
  582. data/test/wsdl/group/echoMappingRegistry.rb +67 -0
  583. data/test/wsdl/group/expectedClassdef.rb +58 -0
  584. data/test/wsdl/group/expectedDriver.rb +53 -0
  585. data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
  586. data/test/wsdl/group/group.wsdl +88 -0
  587. data/test/wsdl/group/test_rpc.rb +145 -0
  588. data/test/wsdl/list/list.rb +55 -0
  589. data/test/wsdl/list/list.wsdl +93 -0
  590. data/test/wsdl/list/listDriver.rb +53 -0
  591. data/test/wsdl/list/listMappingRegistry.rb +40 -0
  592. data/test/wsdl/list/test_list.rb +123 -0
  593. data/test/wsdl/map/map.wsdl +92 -0
  594. data/test/wsdl/map/map.xml +43 -0
  595. data/test/wsdl/map/test_map.rb +100 -0
  596. data/test/wsdl/marshal/Person.rb +23 -0
  597. data/test/wsdl/marshal/person.wsdl +21 -0
  598. data/test/wsdl/marshal/person_org.rb +23 -0
  599. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  600. data/test/wsdl/multiplefault.wsdl +75 -0
  601. data/test/wsdl/oneway/oneway.rb +17 -0
  602. data/test/wsdl/oneway/oneway.wsdl +36 -0
  603. data/test/wsdl/oneway/onewayDriver.rb +52 -0
  604. data/test/wsdl/oneway/onewayMappingRegistry.rb +20 -0
  605. data/test/wsdl/oneway/test_oneway.rb +107 -0
  606. data/test/wsdl/overload/OverloadServiceClient.rb +37 -0
  607. data/test/wsdl/overload/default.rb +1 -0
  608. data/test/wsdl/overload/defaultDriver.rb +61 -0
  609. data/test/wsdl/overload/defaultMappingRegistry.rb +8 -0
  610. data/test/wsdl/overload/defaultServant.rb +35 -0
  611. data/test/wsdl/overload/expectedClient.rb +37 -0
  612. data/test/wsdl/overload/expectedDriver.rb +61 -0
  613. data/test/wsdl/overload/expectedServant.rb +35 -0
  614. data/test/wsdl/overload/overload.wsdl +70 -0
  615. data/test/wsdl/overload/test_overload.rb +131 -0
  616. data/test/wsdl/qualified/default.rb +30 -0
  617. data/test/wsdl/qualified/defaultDriver.rb +51 -0
  618. data/test/wsdl/qualified/defaultMappingRegistry.rb +29 -0
  619. data/test/wsdl/qualified/lp.rb +45 -0
  620. data/test/wsdl/qualified/lp.wsdl +47 -0
  621. data/test/wsdl/qualified/lp.xsd +26 -0
  622. data/test/wsdl/qualified/lpDriver.rb +51 -0
  623. data/test/wsdl/qualified/lpMappingRegistry.rb +96 -0
  624. data/test/wsdl/qualified/np.wsdl +51 -0
  625. data/test/wsdl/qualified/test_qualified.rb +136 -0
  626. data/test/wsdl/qualified/test_unqualified.rb +138 -0
  627. data/test/wsdl/raa/RAAService.rb +125 -0
  628. data/test/wsdl/raa/README.txt +8 -0
  629. data/test/wsdl/raa/expectedClassDef.rb +100 -0
  630. data/test/wsdl/raa/expectedDriver.rb +96 -0
  631. data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
  632. data/test/wsdl/raa/raa.wsdl +264 -0
  633. data/test/wsdl/raa/test_raa.rb +128 -0
  634. data/test/wsdl/ref/expectedDriver.rb +53 -0
  635. data/test/wsdl/ref/expectedProduct.rb +243 -0
  636. data/test/wsdl/ref/product.rb +243 -0
  637. data/test/wsdl/ref/product.wsdl +147 -0
  638. data/test/wsdl/ref/productDriver.rb +53 -0
  639. data/test/wsdl/ref/productMappingRegistry.rb +150 -0
  640. data/test/wsdl/ref/test_ref.rb +267 -0
  641. data/test/wsdl/rpc/RPC-Literal-TestDefinitions.rb +90 -0
  642. data/test/wsdl/rpc/RPC-Literal-TestDefinitionsDriver.rb +149 -0
  643. data/test/wsdl/rpc/RPC-Literal-TestDefinitionsMappingRegistry.rb +168 -0
  644. data/test/wsdl/rpc/echo.rb +35 -0
  645. data/test/wsdl/rpc/echoDriver.rb +74 -0
  646. data/test/wsdl/rpc/echoMappingRegistry.rb +46 -0
  647. data/test/wsdl/rpc/rpc.wsdl +109 -0
  648. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  649. data/test/wsdl/rpc/test_rpc.rb +177 -0
  650. data/test/wsdl/rpc/test_rpc_lit.rb +471 -0
  651. data/test/wsdl/simplecontent/simpleContent.rb +78 -0
  652. data/test/wsdl/simplecontent/simpleContentDriver.rb +53 -0
  653. data/test/wsdl/simplecontent/simpleContentMappingRegistry.rb +77 -0
  654. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  655. data/test/wsdl/simplecontent/test_simplecontent.rb +101 -0
  656. data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
  657. data/test/wsdl/simpletype/rpc/expectedDriver.rb +58 -0
  658. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +36 -0
  659. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +57 -0
  660. data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
  661. data/test/wsdl/simpletype/rpc/expectedService.rb +55 -0
  662. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  663. data/test/wsdl/simpletype/rpc/test_rpc.rb +52 -0
  664. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  665. data/test/wsdl/simpletype/test_simpletype.rb +93 -0
  666. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  667. data/test/wsdl/soap/test_soapbodyparts.rb +80 -0
  668. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +21 -0
  669. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
  670. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +58 -0
  671. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +36 -0
  672. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
  673. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +48 -0
  674. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +55 -0
  675. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  676. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +37 -0
  677. data/test/wsdl/soap/wsdl2ruby/section/mysample.rb +37 -0
  678. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  679. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +53 -0
  680. data/test/wsdl/soap/wsdl2ruby/soapenc/echo.rb +21 -0
  681. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  682. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +83 -0
  683. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +102 -0
  684. data/test/wsdl/soaptype/echo.rb +23 -0
  685. data/test/wsdl/soaptype/echoDriver.rb +55 -0
  686. data/test/wsdl/soaptype/echoMappingRegistry.rb +32 -0
  687. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  688. data/test/wsdl/soaptype/test_soaptype.rb +176 -0
  689. data/test/wsdl/test_emptycomplextype.rb +21 -0
  690. data/test/wsdl/test_fault.rb +50 -0
  691. data/test/wsdl/test_multiplefault.rb +41 -0
  692. data/test/xsd/codegen/test_classdef.rb +244 -0
  693. data/test/xsd/noencoding.xml +4 -0
  694. data/test/xsd/test_iconvcharset.rb +20 -0
  695. data/test/xsd/test_noencoding.rb +33 -0
  696. data/test/xsd/test_ns.rb +41 -0
  697. data/test/xsd/test_xmlschemaparser.rb +22 -0
  698. data/test/xsd/test_xsd.rb +1640 -0
  699. data/test/xsd/xmllang.xml +43 -0
  700. data/test/xsd/xmlschema.xml +12 -0
  701. data/test/xsd/xsd2ruby/expected_mysample.rb +65 -0
  702. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +11 -0
  703. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +51 -0
  704. data/test/xsd/xsd2ruby/mysample.rb +65 -0
  705. data/test/xsd/xsd2ruby/mysample_mapper.rb +11 -0
  706. data/test/xsd/xsd2ruby/mysample_mapping_registry.rb +51 -0
  707. data/test/xsd/xsd2ruby/section.xsd +49 -0
  708. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +89 -0
  709. metadata +762 -24
  710. data/lib/xsd/xmlparser/nokogiriparser.rb +0 -63
  711. data/lib/xsd/xmlparser/ogaparser.rb +0 -53
  712. data/lib/xsd/xmlparser/oxparser.rb +0 -97
data/lib/xsd/datatypes.rb CHANGED
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # XSD4R - XML Schema Datatype implementation.
3
2
  # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
3
 
@@ -11,6 +10,7 @@ require 'xsd/qname'
11
10
  require 'xsd/charset'
12
11
  require 'soap/nestedexception'
13
12
  require 'uri'
13
+ require 'date'
14
14
 
15
15
  ###
16
16
  ## XMLSchamaDatatypes general definitions.
@@ -18,1448 +18,1472 @@ require 'uri'
18
18
  module XSD
19
19
 
20
20
 
21
- Namespace = 'http://www.w3.org/2001/XMLSchema'
22
- InstanceNamespace = 'http://www.w3.org/2001/XMLSchema-instance'
23
-
24
- AttrType = 'type'
25
- NilValue = 'true'
26
-
27
- AnyTypeLiteral = 'anyType'
28
- AnySimpleTypeLiteral = 'anySimpleType'
29
- NilLiteral = 'nil'
30
- StringLiteral = 'string'
31
- BooleanLiteral = 'boolean'
32
- DecimalLiteral = 'decimal'
33
- FloatLiteral = 'float'
34
- DoubleLiteral = 'double'
35
- DurationLiteral = 'duration'
36
- DateTimeLiteral = 'dateTime'
37
- TimeLiteral = 'time'
38
- DateLiteral = 'date'
39
- GYearMonthLiteral = 'gYearMonth'
40
- GYearLiteral = 'gYear'
41
- GMonthDayLiteral = 'gMonthDay'
42
- GDayLiteral = 'gDay'
43
- GMonthLiteral = 'gMonth'
44
- HexBinaryLiteral = 'hexBinary'
45
- Base64BinaryLiteral = 'base64Binary'
46
- AnyURILiteral = 'anyURI'
47
- QNameLiteral = 'QName'
48
-
49
- NormalizedStringLiteral = 'normalizedString'
50
- TokenLiteral = 'token'
51
- LanguageLiteral = 'language'
52
- NMTOKENLiteral = 'NMTOKEN'
53
- NMTOKENSLiteral = 'NMTOKENS'
54
- NameLiteral = 'Name'
55
- NCNameLiteral = 'NCName'
56
- IDLiteral = 'ID'
57
- IDREFLiteral = 'IDREF'
58
- IDREFSLiteral = 'IDREFS'
59
- ENTITYLiteral = 'ENTITY'
60
- ENTITIESLiteral = 'ENTITIES'
61
- IntegerLiteral = 'integer'
62
- NonPositiveIntegerLiteral = 'nonPositiveInteger'
63
- NegativeIntegerLiteral = 'negativeInteger'
64
- LongLiteral = 'long'
65
- IntLiteral = 'int'
66
- ShortLiteral = 'short'
67
- ByteLiteral = 'byte'
68
- NonNegativeIntegerLiteral = 'nonNegativeInteger'
69
- UnsignedLongLiteral = 'unsignedLong'
70
- UnsignedIntLiteral = 'unsignedInt'
71
- UnsignedShortLiteral = 'unsignedShort'
72
- UnsignedByteLiteral = 'unsignedByte'
73
- PositiveIntegerLiteral = 'positiveInteger'
74
-
75
- AttrTypeName = QName.new(InstanceNamespace, AttrType)
76
- AttrNilName = QName.new(InstanceNamespace, NilLiteral)
77
-
78
- AnyTypeName = QName.new(Namespace, AnyTypeLiteral)
79
- AnySimpleTypeName = QName.new(Namespace, AnySimpleTypeLiteral)
80
-
81
- class Error < StandardError; include ::SOAP::NestedException; end
82
- class ValueSpaceError < Error; end
83
-
21
+ Namespace = 'http://www.w3.org/2001/XMLSchema'
22
+ InstanceNamespace = 'http://www.w3.org/2001/XMLSchema-instance'
23
+
24
+ AttrType = 'type'
25
+ NilValue = 'true'
26
+
27
+ AnyTypeLiteral = 'anyType'
28
+ AnySimpleTypeLiteral = 'anySimpleType'
29
+ NilLiteral = 'nil'
30
+ StringLiteral = 'string'
31
+ BooleanLiteral = 'boolean'
32
+ DecimalLiteral = 'decimal'
33
+ FloatLiteral = 'float'
34
+ DoubleLiteral = 'double'
35
+ DurationLiteral = 'duration'
36
+ DateTimeLiteral = 'dateTime'
37
+ TimeLiteral = 'time'
38
+ DateLiteral = 'date'
39
+ GYearMonthLiteral = 'gYearMonth'
40
+ GYearLiteral = 'gYear'
41
+ GMonthDayLiteral = 'gMonthDay'
42
+ GDayLiteral = 'gDay'
43
+ GMonthLiteral = 'gMonth'
44
+ HexBinaryLiteral = 'hexBinary'
45
+ Base64BinaryLiteral = 'base64Binary'
46
+ AnyURILiteral = 'anyURI'
47
+ QNameLiteral = 'QName'
48
+
49
+ NormalizedStringLiteral = 'normalizedString'
50
+ TokenLiteral = 'token'
51
+ LanguageLiteral = 'language'
52
+ NMTOKENLiteral = 'NMTOKEN'
53
+ NMTOKENSLiteral = 'NMTOKENS'
54
+ NameLiteral = 'Name'
55
+ NCNameLiteral = 'NCName'
56
+ IDLiteral = 'ID'
57
+ IDREFLiteral = 'IDREF'
58
+ IDREFSLiteral = 'IDREFS'
59
+ ENTITYLiteral = 'ENTITY'
60
+ ENTITIESLiteral = 'ENTITIES'
61
+ IntegerLiteral = 'integer'
62
+ NonPositiveIntegerLiteral = 'nonPositiveInteger'
63
+ NegativeIntegerLiteral = 'negativeInteger'
64
+ LongLiteral = 'long'
65
+ IntLiteral = 'int'
66
+ ShortLiteral = 'short'
67
+ ByteLiteral = 'byte'
68
+ NonNegativeIntegerLiteral = 'nonNegativeInteger'
69
+ UnsignedLongLiteral = 'unsignedLong'
70
+ UnsignedIntLiteral = 'unsignedInt'
71
+ UnsignedShortLiteral = 'unsignedShort'
72
+ UnsignedByteLiteral = 'unsignedByte'
73
+ PositiveIntegerLiteral = 'positiveInteger'
74
+
75
+ AttrTypeName = QName.new(InstanceNamespace, AttrType)
76
+ AttrNilName = QName.new(InstanceNamespace, NilLiteral)
77
+
78
+ AnyTypeName = QName.new(Namespace, AnyTypeLiteral)
79
+ AnySimpleTypeName = QName.new(Namespace, AnySimpleTypeLiteral)
80
+
81
+ class Error < StandardError; include ::SOAP::NestedException; end
82
+ class ValueSpaceError < Error; end
83
+
84
+
85
+ ###
86
+ ## The base class of all datatypes with Namespace.
87
+ #
88
+ class NSDBase
89
+ @@types = []
90
+
91
+ attr_accessor :type
92
+
93
+ def self.inherited(klass)
94
+ @@types << klass
95
+ end
84
96
 
85
- ###
86
- ## The base class of all datatypes with Namespace.
87
- #
88
- class NSDBase
89
- @@types = []
97
+ def self.types
98
+ @@types
99
+ end
90
100
 
91
- attr_accessor :type
101
+ def initialize
102
+ end
92
103
 
93
- def self.inherited(klass)
94
- @@types << klass
104
+ def init(type)
105
+ @type = type
106
+ end
95
107
  end
96
108
 
97
- def self.types
98
- @@types
99
- end
100
109
 
101
- def initialize
102
- end
110
+ ###
111
+ ## The base class of XSD datatypes.
112
+ #
113
+ class XSDAnySimpleType < NSDBase
114
+ include XSD
115
+ Type = QName.new(Namespace, AnySimpleTypeLiteral)
103
116
 
104
- def init(type)
105
- @type = type
106
- end
107
- end
117
+ # @data represents canonical space (ex. Integer: 123).
118
+ attr_reader :data
119
+ # @is_nil represents this data is nil or not.
120
+ attr_accessor :is_nil
108
121
 
122
+ def initialize(value = nil)
123
+ init(Type, value)
124
+ end
109
125
 
110
- ###
111
- ## The base class of XSD datatypes.
112
- #
113
- class XSDAnySimpleType < NSDBase
114
- include XSD
115
- Type = QName.new(Namespace, AnySimpleTypeLiteral)
126
+ # true or raise
127
+ def check_lexical_format(value)
128
+ screen_data(value)
129
+ true
130
+ end
116
131
 
117
- # @data represents canonical space (ex. Integer: 123).
118
- attr_reader :data
119
- # @is_nil represents this data is nil or not.
120
- attr_accessor :is_nil
132
+ # set accepts a string which follows lexical space (ex. String: "+123"), or
133
+ # an object which follows canonical space (ex. Integer: 123).
134
+ def set(value)
135
+ if value.nil?
136
+ @is_nil = true
137
+ @data = nil
138
+ _set(nil)
139
+ else
140
+ @is_nil = false
141
+ _set(screen_data(value))
142
+ end
143
+ end
121
144
 
122
- def initialize(value = nil)
123
- init(Type, value)
124
- end
145
+ # to_s creates a string which follows lexical space (ex. String: "123").
146
+ def to_s
147
+ if @is_nil
148
+ ""
149
+ else
150
+ _to_s
151
+ end
152
+ end
125
153
 
126
- # true or raise
127
- def check_lexical_format(value)
128
- screen_data(value)
129
- true
130
- end
154
+ private
131
155
 
132
- # set accepts a string which follows lexical space (ex. String: "+123"), or
133
- # an object which follows canonical space (ex. Integer: 123).
134
- def set(value)
135
- if value.nil?
136
- @is_nil = true
137
- @data = nil
138
- _set(nil)
139
- else
140
- @is_nil = false
141
- _set(screen_data(value))
156
+ def init(type, value)
157
+ super(type)
158
+ set(value)
142
159
  end
143
- end
144
160
 
145
- # to_s creates a string which follows lexical space (ex. String: "123").
146
- def to_s()
147
- if @is_nil
148
- ""
149
- else
150
- _to_s
161
+ # raises ValueSpaceError if check failed
162
+ def screen_data(value)
163
+ # Remove null bytes before processing
164
+ if value.is_a?(String)
165
+ value = value.gsub("\u0000", '')
166
+ end
167
+ value.unpack("C*").pack("C*")
151
168
  end
152
- end
153
169
 
154
- private
170
+ def string
171
+ # For binary data types
172
+ @data.unpack("H*")[0].tr('A-F', 'a-f').force_encoding("UTF-8")
173
+ end
155
174
 
156
- def init(type, value)
157
- super(type)
158
- set(value)
159
- end
175
+ def _set(value)
176
+ @data = value
177
+ end
160
178
 
161
- # raises ValueSpaceError if check failed
162
- def screen_data(value)
163
- value
179
+ def _to_s
180
+ @data.to_s
181
+ end
164
182
  end
165
183
 
166
- def _set(value)
167
- @data = value
168
- end
184
+ class XSDNil < XSDAnySimpleType
185
+ Type = QName.new(Namespace, NilLiteral)
186
+ Value = 'true'
169
187
 
170
- def _to_s
171
- @data.to_s
188
+ def initialize(value = nil)
189
+ init(Type, value)
190
+ end
172
191
  end
173
- end
174
-
175
- class XSDNil < XSDAnySimpleType
176
- Type = QName.new(Namespace, NilLiteral)
177
- Value = 'true'
178
192
 
179
- def initialize(value = nil)
180
- init(Type, value)
181
- end
182
- end
183
193
 
194
+ ###
195
+ ## Primitive datatypes.
196
+ #
197
+ class XSDString < XSDAnySimpleType
198
+ Type = QName.new(Namespace, StringLiteral)
184
199
 
185
- ###
186
- ## Primitive datatypes.
187
- #
188
- class XSDString < XSDAnySimpleType
189
- Type = QName.new(Namespace, StringLiteral)
200
+ def initialize(value = nil)
201
+ init(Type, value)
202
+ end
190
203
 
191
- def initialize(value = nil)
192
- init(Type, value)
193
- end
204
+ @@strict_ces_validation = false
194
205
 
195
- @@strict_ces_validation = false
206
+ def self.strict_ces_validation=(strict_ces_validation)
207
+ @@strict_ces_validation = strict_ces_validation
208
+ end
196
209
 
197
- def self.strict_ces_validation=(strict_ces_validation)
198
- @@strict_ces_validation = strict_ces_validation
199
- end
210
+ def self.strict_ces_validation
211
+ @@strict_ces_validation
212
+ end
200
213
 
201
- def self.strict_ces_validation
202
- @@strict_ces_validation
203
- end
214
+ private
204
215
 
205
- private
216
+ def screen_data(value)
217
+ if ::XSD::XSDString.strict_ces_validation
218
+ externalces = XSD::Charset.encoding
219
+ unless XSD::Charset.is_ces(value, externalces)
220
+ if value.is_a?(String) && value.include?("\0")
221
+ message = "#{ type }: cannot accept string with null byte."
222
+ else
223
+ message = "#{ type }: cannot accept '#{ value }'."
224
+ end
206
225
 
207
- def screen_data(value)
208
- if ::XSD::XSDString.strict_ces_validation
209
- externalces = XSD::Charset.encoding
210
- unless XSD::Charset.is_ces(value, externalces)
211
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
226
+ raise ValueSpaceError.new(message)
227
+ end
212
228
  end
229
+ value
213
230
  end
214
- value
215
231
  end
216
- end
217
232
 
218
- class XSDBoolean < XSDAnySimpleType
219
- Type = QName.new(Namespace, BooleanLiteral)
233
+ class XSDBoolean < XSDAnySimpleType
234
+ Type = QName.new(Namespace, BooleanLiteral)
220
235
 
221
- def initialize(value = nil)
222
- init(Type, value)
223
- end
224
-
225
- private
236
+ def initialize(value = nil)
237
+ init(Type, value)
238
+ end
226
239
 
227
- def screen_data(value)
228
- if value.is_a?(String)
229
- str = value.strip
230
- if str == 'true' || str == '1'
231
- true
232
- elsif str == 'false' || str == '0'
233
- false
240
+ private
241
+
242
+ def screen_data(value)
243
+ if value.is_a?(String)
244
+ str = value.strip
245
+ if str == 'true' || str == '1'
246
+ true
247
+ elsif str == 'false' || str == '0'
248
+ false
249
+ else
250
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
251
+ end
234
252
  else
235
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
253
+ value ? true : false
236
254
  end
237
- else
238
- value ? true : false
239
255
  end
240
256
  end
241
- end
242
257
 
243
- class XSDDecimal < XSDAnySimpleType
244
- Type = QName.new(Namespace, DecimalLiteral)
258
+ class XSDDecimal < XSDAnySimpleType
259
+ Type = QName.new(Namespace, DecimalLiteral)
245
260
 
246
- def initialize(value = nil)
247
- init(Type, value)
248
- end
261
+ def initialize(value = nil)
262
+ init(Type, value)
263
+ end
249
264
 
250
- def nonzero?
251
- (@number != '0')
252
- end
265
+ def nonzero?
266
+ (@number != '0')
267
+ end
253
268
 
254
- private
269
+ private
255
270
 
256
- def screen_data(d)
257
- if d.is_a?(String)
258
- # Integer("00012") => 10 in Ruby.
259
- d.sub!(/^([+\-]?)0*(?=\d)/, "\\1")
271
+ def screen_data(d)
272
+ if d.is_a?(String)
273
+ # Integer("00012") => 10 in Ruby.
274
+ d.sub!(/^([+\-]?)0*(?=\d)/, "\\1")
275
+ end
276
+ screen_data_str(d)
260
277
  end
261
- screen_data_str(d)
262
- end
263
278
 
264
- def screen_data_str(str)
265
- /^([+\-]?)(\d*)(?:\.(\d*)?)?$/ =~ str.to_s.strip
266
- unless Regexp.last_match
267
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
268
- end
269
- sign = $1 || '+'
270
- int_part = $2
271
- frac_part = $3
272
- int_part = '0' if int_part.empty?
273
- frac_part = frac_part ? frac_part.sub(/0+$/, '') : ''
274
- point = - frac_part.size
275
- number = int_part + frac_part
276
- # normalize
277
- if sign == '+'
278
- sign = ''
279
- elsif sign == '-'
280
- if number == '0'
281
- sign = ''
279
+ def screen_data_str(str)
280
+ /^([+\-]?)(\d*)(?:\.(\d*)?)?$/ =~ str.to_s.strip
281
+ unless Regexp.last_match
282
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
282
283
  end
284
+ sign = $1 || '+'
285
+ int_part = $2
286
+ frac_part = $3
287
+ int_part = '0' if int_part.empty?
288
+ frac_part = frac_part ? frac_part.sub(/0+$/, '') : ''
289
+ point = - frac_part.size
290
+ number = int_part + frac_part
291
+ # normalize
292
+ if sign == '+'
293
+ sign = ''
294
+ elsif sign == '-'
295
+ if number == '0'
296
+ sign = ''
297
+ end
298
+ end
299
+ [sign, point, number]
300
+ end
301
+
302
+ def _set(data)
303
+ if data.nil?
304
+ @sign = @point = @number = @data = nil
305
+ return
306
+ end
307
+ @sign, @point, @number = data
308
+ @data = _to_s
309
+ @data.freeze
283
310
  end
284
- [sign, point, number]
285
- end
286
311
 
287
- def _set(data)
288
- if data.nil?
289
- @sign = @point = @number = @data = nil
290
- return
312
+ # 0.0 -> 0; right?
313
+ def _to_s
314
+ str = @number.dup
315
+ if @point.nonzero?
316
+ str[@number.size + @point, 0] = '.'
317
+ end
318
+ @sign + str
291
319
  end
292
- @sign, @point, @number = data
293
- @data = _to_s
294
- @data.freeze
295
320
  end
296
321
 
297
- # 0.0 -> 0; right?
298
- def _to_s
299
- str = @number.dup
300
- if @point.nonzero?
301
- str[@number.size + @point, 0] = '.'
302
- end
303
- @sign + str
322
+ module FloatConstants
323
+ NaN = 0.0/0.0
324
+ POSITIVE_INF = +1.0/0.0
325
+ NEGATIVE_INF = -1.0/0.0
326
+ POSITIVE_ZERO = +1.0/POSITIVE_INF
327
+ NEGATIVE_ZERO = -1.0/POSITIVE_INF
328
+ MIN_POSITIVE_SINGLE = 2.0 ** -149
304
329
  end
305
- end
306
330
 
307
- module FloatConstants
308
- NaN = 0.0/0.0
309
- POSITIVE_INF = +1.0/0.0
310
- NEGATIVE_INF = -1.0/0.0
311
- POSITIVE_ZERO = +1.0/POSITIVE_INF
312
- NEGATIVE_ZERO = -1.0/POSITIVE_INF
313
- MIN_POSITIVE_SINGLE = 2.0 ** -149
314
- end
331
+ class XSDFloat < XSDAnySimpleType
332
+ include FloatConstants
333
+ Type = QName.new(Namespace, FloatLiteral)
315
334
 
316
- class XSDFloat < XSDAnySimpleType
317
- include FloatConstants
318
- Type = QName.new(Namespace, FloatLiteral)
335
+ def initialize(value = nil)
336
+ init(Type, value)
337
+ end
319
338
 
320
- def initialize(value = nil)
321
- init(Type, value)
322
- end
339
+ private
323
340
 
324
- private
325
-
326
- def screen_data(value)
327
- # "NaN".to_f => 0 in some environment. libc?
328
- if value.is_a?(Float)
329
- return narrow32bit(value)
330
- end
331
- str = value.to_s.strip
332
- if str == 'NaN'
333
- NaN
334
- elsif str == 'INF'
335
- POSITIVE_INF
336
- elsif str == '-INF'
337
- NEGATIVE_INF
338
- else
339
- if /^[+\-\.\deE]+$/ !~ str
340
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
341
+ def screen_data(value)
342
+ # "NaN".to_f => 0 in some environment. libc?
343
+ if value.is_a?(Float)
344
+ return narrow32bit(value)
341
345
  end
342
- # Float("-1.4E") might fail on some system.
343
- str << '0' if /e$/i =~ str
344
- begin
345
- return narrow32bit(Float(str))
346
- rescue ArgumentError
347
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
346
+ str = value.to_s.strip
347
+ if str == 'NaN'
348
+ NaN
349
+ elsif str == 'INF'
350
+ POSITIVE_INF
351
+ elsif str == '-INF'
352
+ NEGATIVE_INF
353
+ else
354
+ if /^[+\-\.\deE]+$/ !~ str
355
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
356
+ end
357
+ # Float("-1.4E") might fail on some system.
358
+ str << '0' if /e$/i =~ str
359
+ begin
360
+ return narrow32bit(Float(str))
361
+ rescue ArgumentError
362
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
363
+ end
348
364
  end
349
365
  end
350
- end
351
366
 
352
- def _to_s
353
- if @data.nan?
354
- 'NaN'
355
- elsif @data.infinite? == 1
356
- 'INF'
357
- elsif @data.infinite? == -1
358
- '-INF'
359
- else
360
- sign = XSDFloat.positive?(@data) ? '+' : '-'
361
- sign + sprintf("%.10g", @data.abs).sub(/[eE]([+-])?0+/) { 'e' + $1 }
367
+ def _to_s
368
+ if @data.nan?
369
+ 'NaN'
370
+ elsif @data.infinite? == 1
371
+ 'INF'
372
+ elsif @data.infinite? == -1
373
+ '-INF'
374
+ else
375
+ sign = XSDFloat.positive?(@data) ? '+' : '-'
376
+ sign + sprintf("%.10g", @data.abs).sub(/[eE]([+-])?0+/) { 'e' + $1 }
377
+ end
362
378
  end
363
- end
364
379
 
365
- # Convert to single-precision 32-bit floating point value.
366
- def narrow32bit(f)
367
- if f.nan? || f.infinite?
368
- f
369
- elsif f.abs < MIN_POSITIVE_SINGLE
370
- XSDFloat.positive?(f) ? POSITIVE_ZERO : NEGATIVE_ZERO
371
- else
372
- f
380
+ # Convert to single-precision 32-bit floating point value.
381
+ def narrow32bit(f)
382
+ if f.nan? || f.infinite?
383
+ f
384
+ elsif f.abs < MIN_POSITIVE_SINGLE
385
+ XSDFloat.positive?(f) ? POSITIVE_ZERO : NEGATIVE_ZERO
386
+ else
387
+ f
388
+ end
373
389
  end
374
- end
375
390
 
376
- def self.positive?(value)
377
- (1 / value) > 0.0
391
+ def self.positive?(value)
392
+ (1 / value) > 0.0
393
+ end
378
394
  end
379
- end
380
395
 
381
- # Ruby's Float is double-precision 64-bit floating point value.
382
- class XSDDouble < XSDAnySimpleType
383
- include FloatConstants
384
- Type = QName.new(Namespace, DoubleLiteral)
396
+ # Ruby's Float is double-precision 64-bit floating point value.
397
+ class XSDDouble < XSDAnySimpleType
398
+ include FloatConstants
399
+ Type = QName.new(Namespace, DoubleLiteral)
385
400
 
386
- def initialize(value = nil)
387
- init(Type, value)
388
- end
401
+ def initialize(value = nil)
402
+ init(Type, value)
403
+ end
389
404
 
390
- private
391
-
392
- def screen_data(value)
393
- # "NaN".to_f => 0 in some environment. libc?
394
- if value.is_a?(Float)
395
- return value
396
- end
397
- str = value.to_s.strip
398
- if str == 'NaN'
399
- NaN
400
- elsif str == 'INF'
401
- POSITIVE_INF
402
- elsif str == '-INF'
403
- NEGATIVE_INF
404
- else
405
- begin
406
- return Float(str)
407
- rescue ArgumentError
408
- # '1.4e' cannot be parsed on some architecture.
409
- if /e\z/i =~ str
410
- begin
411
- return Float(str + '0')
412
- rescue ArgumentError
413
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
414
- end
415
- else
416
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
417
- end
405
+ private
406
+
407
+ def screen_data(value)
408
+ # "NaN".to_f => 0 in some environment. libc?
409
+ if value.is_a?(Float)
410
+ return value
411
+ end
412
+ str = value.to_s.strip
413
+ if str == 'NaN'
414
+ NaN
415
+ elsif str == 'INF'
416
+ POSITIVE_INF
417
+ elsif str == '-INF'
418
+ NEGATIVE_INF
419
+ else
420
+ begin
421
+ return Float(str)
422
+ rescue ArgumentError
423
+ # '1.4e' cannot be parsed on some architecture.
424
+ if /e\z/i =~ str
425
+ begin
426
+ return Float(str + '0')
427
+ rescue ArgumentError
428
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
429
+ end
430
+ else
431
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
432
+ end
433
+ end
418
434
  end
419
435
  end
420
- end
421
436
 
422
- def _to_s
423
- if @data.nan?
424
- 'NaN'
425
- elsif @data.infinite? == 1
426
- 'INF'
427
- elsif @data.infinite? == -1
428
- '-INF'
429
- else
430
- sign = (1 / @data > 0.0) ? '+' : '-'
431
- sign + sprintf("%.16g", @data.abs).sub(/[eE]([+-])?0+/) { 'e' + $1 }
437
+ def _to_s
438
+ if @data.nan?
439
+ 'NaN'
440
+ elsif @data.infinite? == 1
441
+ 'INF'
442
+ elsif @data.infinite? == -1
443
+ '-INF'
444
+ else
445
+ sign = (1 / @data > 0.0) ? '+' : '-'
446
+ sign + sprintf("%.16g", @data.abs).sub(/[eE]([+-])?0+/) { 'e' + $1 }
447
+ end
432
448
  end
433
449
  end
434
- end
435
450
 
436
- class XSDDuration < XSDAnySimpleType
437
- Type = QName.new(Namespace, DurationLiteral)
451
+ class XSDDuration < XSDAnySimpleType
452
+ Type = QName.new(Namespace, DurationLiteral)
438
453
 
439
- attr_accessor :sign
440
- attr_accessor :year
441
- attr_accessor :month
442
- attr_accessor :day
443
- attr_accessor :hour
444
- attr_accessor :min
445
- attr_accessor :sec
454
+ attr_accessor :sign
455
+ attr_accessor :year
456
+ attr_accessor :month
457
+ attr_accessor :day
458
+ attr_accessor :hour
459
+ attr_accessor :min
460
+ attr_accessor :sec
446
461
 
447
- def initialize(value = nil)
448
- init(Type, value)
449
- end
462
+ def initialize(value = nil)
463
+ init(Type, value)
464
+ end
450
465
 
451
- private
452
-
453
- def screen_data(value)
454
- /^([+\-]?)P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/ =~ value.to_s.strip
455
- unless Regexp.last_match
456
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
457
- end
458
- if $5 and !$6 and !$7 and !$8
459
- # allows durations lower than a day such as 'PT5S'.
460
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
461
- end
462
- sign = $1
463
- year = $2.to_i
464
- month = $3.to_i
465
- day = $4.to_i
466
- hour = $6.to_i
467
- min = $7.to_i
468
- sec = $8 ? XSDDecimal.new($8) : 0
469
- [sign, year, month, day, hour, min, sec]
470
- end
466
+ private
471
467
 
472
- def _set(data)
473
- if data.nil?
474
- @sign = @year = @month = @day = @hour = @min = @sec = @data = nil
475
- return
468
+ def screen_data(value)
469
+ /^([+\-]?)P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/ =~ value.to_s.strip
470
+ unless Regexp.last_match
471
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
472
+ end
473
+ if $5 and !$6 and !$7 and !$8
474
+ # allows durations lower than a day such as 'PT5S'.
475
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
476
+ end
477
+ sign = $1
478
+ year = $2.to_i
479
+ month = $3.to_i
480
+ day = $4.to_i
481
+ hour = $6.to_i
482
+ min = $7.to_i
483
+ sec = $8 ? XSDDecimal.new($8) : 0
484
+ [sign, year, month, day, hour, min, sec]
485
+ end
486
+
487
+ def _set(data)
488
+ if data.nil?
489
+ @sign = @year = @month = @day = @hour = @min = @sec = @data = nil
490
+ return
491
+ end
492
+ @sign, @year, @month, @day, @hour, @min, @sec = data
493
+ @data = _to_s
494
+ @data.freeze
476
495
  end
477
- @sign, @year, @month, @day, @hour, @min, @sec = data
478
- @data = _to_s
479
- @data.freeze
480
- end
481
496
 
482
- def _to_s
483
- str = ''
484
- str << @sign if @sign
485
- str << 'P'
486
- l = ''
487
- l << "#{ @year }Y" if @year.nonzero?
488
- l << "#{ @month }M" if @month.nonzero?
489
- l << "#{ @day }D" if @day.nonzero?
490
- r = ''
491
- r << "#{ @hour }H" if @hour.nonzero?
492
- r << "#{ @min }M" if @min.nonzero?
493
- r << "#{ @sec }S" if @sec.nonzero?
494
- str << l
495
- unless r.empty?
496
- str << "T" << r
497
- end
498
- if l.empty? and r.empty?
499
- str << "0D"
500
- end
501
- str
497
+ def _to_s
498
+ str = ''
499
+ str << @sign if @sign
500
+ str << 'P'
501
+ l = ''
502
+ l << "#{ @year }Y" if @year.nonzero?
503
+ l << "#{ @month }M" if @month.nonzero?
504
+ l << "#{ @day }D" if @day.nonzero?
505
+ r = ''
506
+ r << "#{ @hour }H" if @hour.nonzero?
507
+ r << "#{ @min }M" if @min.nonzero?
508
+ r << "#{ @sec }S" if @sec.nonzero?
509
+ str << l
510
+ unless r.empty?
511
+ str << "T" << r
512
+ end
513
+ if l.empty? and r.empty?
514
+ str << "0D"
515
+ end
516
+ str
517
+ end
502
518
  end
503
- end
504
519
 
505
520
 
506
- require 'date'
521
+ require 'rational'
522
+ require 'date'
507
523
 
508
- module XSDDateTimeImpl
509
- SecInMicro = 1000000 # 1 second = 1 million microseconds
510
- DayInSec = 86400 # 24 Hours/Day * 60 Minutes/Hour * 60 Seconds/Minute
511
- DayInMicro = (DayInSec * SecInMicro)
512
-
513
- def to_obj(klass)
514
- if klass == Time
515
- to_time
516
- elsif klass == Date
517
- to_date
518
- elsif klass == DateTime
519
- to_datetime
520
- else
521
- nil
522
- end
523
- end
524
+ module XSDDateTimeImpl
525
+ DayInSec = 86400 # 24 * 60 * 60
526
+ DayInMicro = 86400_000_000
524
527
 
525
- def to_time
526
- begin
527
- if @data.offset * DayInSec == Time.now.utc_offset
528
- d = @data
529
- usec = (RUBY_VERSION.to_f >= 1.9) ? (d.sec_fraction * SecInMicro).to_i : (d.sec_fraction * DayInMicro).round
530
- Time.local(d.year, d.month, d.mday, d.hour, d.min, d.sec, usec)
528
+ def to_obj(klass)
529
+ if klass == Time
530
+ to_time
531
+ elsif klass == Date
532
+ to_date
533
+ elsif klass == DateTime
534
+ to_datetime
531
535
  else
532
- d = @data.newof
533
- usec = (RUBY_VERSION.to_f >= 1.9) ? (d.sec_fraction * SecInMicro).to_i : (d.sec_fraction * DayInMicro).round
534
- Time.gm(d.year, d.month, d.mday, d.hour, d.min, d.sec, usec)
536
+ nil
535
537
  end
536
- rescue ArgumentError
537
- nil
538
538
  end
539
- end
540
539
 
541
- def to_date
542
- @data.respond_to?(:to_date) ? @data.to_date : Date.new!(@data.class.send(:jd_to_ajd, @data.jd, 0, 0), 0, @data.start)
543
- end
540
+ def to_time
541
+ begin
542
+ if @data.offset * DayInSec == Time.now.utc_offset
543
+ d = @data
544
+ usec = (d.sec_fraction * DayInMicro).round
545
+ Time.local(d.year, d.month, d.mday, d.hour, d.min, d.sec, usec)
546
+ else
547
+ d = @data.newof
548
+ usec = (d.sec_fraction * DayInMicro).round
549
+ Time.gm(d.year, d.month, d.mday, d.hour, d.min, d.sec, usec)
550
+ end
551
+ rescue ArgumentError
552
+ nil
553
+ end
554
+ end
544
555
 
545
- def to_datetime
546
- data
547
- end
556
+ def to_date
557
+ Date.jd(@data.jd, @data.start)
558
+ end
559
+
560
+ def to_datetime
561
+ data
562
+ end
563
+
564
+ def tz2of(str)
565
+ /^(?:Z|(?:([+\-])(\d\d):(\d\d))?)$/ =~ str
566
+ sign = $1
567
+ hour = $2.to_i
568
+ min = $3.to_i
569
+
570
+ of = case sign
571
+ when '+'
572
+ of = +(hour.to_r * 60 + min) / 1440 # 24 * 60
573
+ when '-'
574
+ of = -(hour.to_r * 60 + min) / 1440 # 24 * 60
575
+ else
576
+ 0
577
+ end
578
+ of
579
+ end
548
580
 
549
- def tz2of(str)
550
- /^(?:Z|(?:([+\-])(\d\d):(\d\d))?)$/ =~ str
551
- sign = $1
552
- hour = $2.to_i
553
- min = $3.to_i
554
-
555
- of = case sign
556
- when '+'
557
- of = +(hour.to_r * 60 + min) / 1440 # 24 * 60
558
- when '-'
559
- of = -(hour.to_r * 60 + min) / 1440 # 24 * 60
581
+ def of2tz(offset)
582
+ diffmin = offset * 24 * 60
583
+ if diffmin.zero?
584
+ 'Z'
560
585
  else
561
- 0
586
+ ((diffmin < 0) ? '-' : '+') << format('%02d:%02d',
587
+ (diffmin.abs / 60.0).to_i, (diffmin.abs % 60.0).to_i)
562
588
  end
563
- of
564
- end
589
+ end
565
590
 
566
- def of2tz(offset)
567
- diffmin = offset * 24 * 60
568
- if diffmin.zero?
569
- 'Z'
570
- else
571
- ((diffmin < 0) ? '-' : '+') << format('%02d:%02d',
572
- (diffmin.abs / 60.0).to_i, (diffmin.abs % 60.0).to_i)
591
+ def screen_data(t)
592
+ # convert t to a DateTime as an internal representation.
593
+ if t.respond_to?(:to_datetime) # 1.9 or later
594
+ t.to_datetime
595
+ elsif t.is_a?(DateTime)
596
+ t
597
+ elsif t.is_a?(Date)
598
+ t = screen_data_str(t)
599
+ t <<= 12 if t.year < 0
600
+ t
601
+ elsif t.is_a?(Time)
602
+ jd = DateTime.civil_to_jd(t.year, t.mon, t.mday, DateTime::ITALY)
603
+ fr = DateTime.time_to_day_fraction(t.hour, t.min, [t.sec, 59].min) +
604
+ t.usec.to_r / DayInMicro
605
+ of = t.utc_offset.to_r / DayInSec
606
+ DateTime.new!((jd + fr - of - 0.5), of, DateTime::ITALY)
607
+ else
608
+ screen_data_str(t)
609
+ end
573
610
  end
574
- end
575
611
 
576
- def screen_data(t)
577
- # convert t to a DateTime as an internal representation.
578
- if t.respond_to?(:to_datetime) # 1.9 or later
579
- t.to_datetime
580
- elsif t.is_a?(DateTime)
581
- t
582
- elsif t.is_a?(Date)
583
- t = screen_data_str(t)
584
- t <<= 12 if t.year < 0
585
- t
586
- elsif t.is_a?(Time)
587
- jd = DateTime.send(:civil_to_jd, t.year, t.mon, t.mday, DateTime::ITALY)
588
- fr = DateTime.send(:time_to_day_fraction, t.hour, t.min, [t.sec, 59].min) + t.usec.to_r / DayInMicro
589
- of = t.utc_offset.to_r / DayInSec
590
- DateTime.new!(DateTime.send(:jd_to_ajd, jd, fr, of), of, DateTime::ITALY)
591
- else
592
- screen_data_str(t)
612
+ def add_tz(s)
613
+ s + of2tz(@data.offset)
593
614
  end
594
615
  end
595
616
 
596
- def add_tz(s)
597
- s + of2tz(@data.offset)
598
- end
599
- end
617
+ class XSDDateTime < XSDAnySimpleType
618
+ include XSDDateTimeImpl
619
+ Type = QName.new(Namespace, DateTimeLiteral)
600
620
 
601
- class XSDDateTime < XSDAnySimpleType
602
- include XSDDateTimeImpl
603
- Type = QName.new(Namespace, DateTimeLiteral)
621
+ def initialize(value = nil)
622
+ init(Type, value)
623
+ end
604
624
 
605
- def initialize(value = nil)
606
- init(Type, value)
607
- end
625
+ private
608
626
 
609
- private
610
-
611
- def screen_data_str(t)
612
- /^([+\-]?\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
613
- unless Regexp.last_match
614
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
615
- end
616
- if $1 == '0000'
617
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
618
- end
619
- year = $1.to_i
620
- if year < 0
621
- year += 1
622
- end
623
- mon = $2.to_i
624
- mday = $3.to_i
625
- hour = $4.to_i
626
- min = $5.to_i
627
- sec = $6.to_i
628
- secfrac = $7
629
- zonestr = $8
630
- data = DateTime.civil(year, mon, mday, hour, min, sec, tz2of(zonestr))
631
- if secfrac
632
- diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / DayInSec
633
- data += diffday
634
- # FYI: new! and jd_to_rjd are not necessary to use if you don't have
635
- # exceptional reason.
636
- end
637
- [data, secfrac]
638
- end
627
+ def screen_data_str(t)
628
+ /^([+\-]?\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
629
+ unless Regexp.last_match
630
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
631
+ end
632
+ if $1 == '0000'
633
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
634
+ end
635
+ year = $1.to_i
636
+ if year < 0
637
+ year += 1
638
+ end
639
+ mon = $2.to_i
640
+ mday = $3.to_i
641
+ hour = $4.to_i
642
+ min = $5.to_i
643
+ sec = $6.to_i
644
+ secfrac = $7
645
+ zonestr = $8
646
+ data = DateTime.civil(year, mon, mday, hour, min, sec, tz2of(zonestr))
647
+ if secfrac
648
+ diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / DayInSec
649
+ data += diffday
650
+ # FYI: new0 and jd_to_rjd are not necessary to use if you don't have
651
+ # exceptional reason.
652
+ end
653
+ [data, secfrac]
654
+ end
639
655
 
640
- def _set(data)
641
- if data.nil?
642
- @data = @secfrac = nil
643
- return
656
+ def _set(data)
657
+ if data.nil?
658
+ @data = @secfrac = nil
659
+ return
660
+ end
661
+ @data, @secfrac = data
644
662
  end
645
- @data, @secfrac = data
646
- end
647
663
 
648
- def _to_s
649
- year = (@data.year > 0) ? @data.year : @data.year - 1
650
- s = format('%.4d-%02d-%02dT%02d:%02d:%02d', year, @data.mon, @data.mday, @data.hour, @data.min, @data.sec)
651
- if @data.sec_fraction.nonzero?
652
- if @secfrac
653
- s << ".#{ @secfrac }"
654
- elsif (RUBY_VERSION.to_f >= 1.9)
655
- s << sprintf("%.16f",@data.sec_fraction.to_f).sub(/^0/, '').sub(/0*$/, '')
656
- else
657
- s << sprintf("%.16f",(@data.sec_fraction * DayInSec).to_f).sub(/^0/, '').sub(/0*$/, '')
664
+ def _to_s
665
+ year = (@data.year > 0) ? @data.year : @data.year - 1
666
+ s = format('%.4d-%02d-%02dT%02d:%02d:%02d',
667
+ year, @data.mon, @data.mday, @data.hour, @data.min, @data.sec)
668
+ if @data.sec_fraction.nonzero?
669
+ if @secfrac
670
+ s << ".#{ @secfrac }"
671
+ else
672
+ s << sprintf("%.6f", @data.sec_fraction.to_f).sub(/^0/, '').sub(/0*$/, '')
673
+ end
658
674
  end
675
+ add_tz(s)
659
676
  end
660
- add_tz(s)
661
677
  end
662
- end
663
678
 
664
- class XSDTime < XSDAnySimpleType
665
- include XSDDateTimeImpl
666
- Type = QName.new(Namespace, TimeLiteral)
679
+ class XSDTime < XSDAnySimpleType
680
+ include XSDDateTimeImpl
681
+ Type = QName.new(Namespace, TimeLiteral)
667
682
 
668
- def initialize(value = nil)
669
- init(Type, value)
670
- end
683
+ def initialize(value = nil)
684
+ init(Type, value)
685
+ end
671
686
 
672
- private
687
+ private
673
688
 
674
- def screen_data_str(t)
675
- /^(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
676
- unless Regexp.last_match
677
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
678
- end
679
- hour = $1.to_i
680
- min = $2.to_i
681
- sec = $3.to_i
682
- secfrac = $4
683
- zonestr = $5
684
- data = DateTime.civil(1, 1, 1, hour, min, sec, tz2of(zonestr))
685
- if secfrac
686
- diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / DayInSec
687
- data += diffday
689
+ def screen_data_str(t)
690
+ /^(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
691
+ unless Regexp.last_match
692
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
693
+ end
694
+ hour = $1.to_i
695
+ min = $2.to_i
696
+ sec = $3.to_i
697
+ secfrac = $4
698
+ zonestr = $5
699
+ data = DateTime.civil(1, 1, 1, hour, min, sec, tz2of(zonestr))
700
+ if secfrac
701
+ diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / DayInSec
702
+ data += diffday
703
+ end
704
+ [data, secfrac]
688
705
  end
689
- [data, secfrac]
690
- end
691
706
 
692
- def _set(data)
693
- if data.nil?
694
- @data = @secfrac = nil
695
- return
707
+ def _set(data)
708
+ if data.nil?
709
+ @data = @secfrac = nil
710
+ return
711
+ end
712
+ @data, @secfrac = data
696
713
  end
697
- @data, @secfrac = data
698
- end
699
714
 
700
- def _to_s
701
- s = format('%02d:%02d:%02d', @data.hour, @data.min, @data.sec)
702
- if @data.sec_fraction.nonzero?
703
- if @secfrac
704
- s << ".#{ @secfrac }"
705
- else
706
- s << sprintf("%.16f",
707
- (@data.sec_fraction * DayInSec).to_f).sub(/^0/, '').sub(/0*$/, '')
715
+ def _to_s
716
+ s = format('%02d:%02d:%02d', @data.hour, @data.min, @data.sec)
717
+ if @data.sec_fraction.nonzero?
718
+ if @secfrac
719
+ s << ".#{ @secfrac }"
720
+ else
721
+ s << sprintf("%.16f",
722
+ (@data.sec_fraction * DayInSec).to_f).sub(/^0/, '').sub(/0*$/, '')
723
+ end
708
724
  end
725
+ add_tz(s)
709
726
  end
710
- add_tz(s)
711
727
  end
712
- end
713
728
 
714
- class XSDDate < XSDAnySimpleType
715
- include XSDDateTimeImpl
716
- Type = QName.new(Namespace, DateLiteral)
729
+ class XSDDate < XSDAnySimpleType
730
+ include XSDDateTimeImpl
731
+ Type = QName.new(Namespace, DateLiteral)
717
732
 
718
- def initialize(value = nil)
719
- init(Type, value)
720
- end
733
+ def initialize(value = nil)
734
+ init(Type, value)
735
+ end
721
736
 
722
- private
737
+ private
723
738
 
724
- def screen_data_str(t)
725
- /^([+\-]?\d{4,})-(\d\d)-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
726
- unless Regexp.last_match
727
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
728
- end
729
- year = $1.to_i
730
- if year < 0
731
- year += 1
739
+ def screen_data_str(t)
740
+ /^([+\-]?\d{4,})-(\d\d)-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
741
+ unless Regexp.last_match
742
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
743
+ end
744
+ year = $1.to_i
745
+ if year < 0
746
+ year += 1
747
+ end
748
+ mon = $2.to_i
749
+ mday = $3.to_i
750
+ zonestr = $4
751
+ DateTime.civil(year, mon, mday, 0, 0, 0, tz2of(zonestr))
732
752
  end
733
- mon = $2.to_i
734
- mday = $3.to_i
735
- zonestr = $4
736
- DateTime.civil(year, mon, mday, 0, 0, 0, tz2of(zonestr))
737
- end
738
753
 
739
- def _to_s
740
- year = (@data.year > 0) ? @data.year : @data.year - 1
741
- s = format('%.4d-%02d-%02d', year, @data.mon, @data.mday)
742
- add_tz(s)
754
+ def _to_s
755
+ year = (@data.year > 0) ? @data.year : @data.year - 1
756
+ s = format('%.4d-%02d-%02d', year, @data.mon, @data.mday)
757
+ add_tz(s)
758
+ end
743
759
  end
744
- end
745
760
 
746
- class XSDGYearMonth < XSDAnySimpleType
747
- include XSDDateTimeImpl
748
- Type = QName.new(Namespace, GYearMonthLiteral)
761
+ class XSDGYearMonth < XSDAnySimpleType
762
+ include XSDDateTimeImpl
763
+ Type = QName.new(Namespace, GYearMonthLiteral)
749
764
 
750
- def initialize(value = nil)
751
- init(Type, value)
752
- end
765
+ def initialize(value = nil)
766
+ init(Type, value)
767
+ end
753
768
 
754
- private
769
+ private
755
770
 
756
- def screen_data_str(t)
757
- /^([+\-]?\d{4,})-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
758
- unless Regexp.last_match
759
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
760
- end
761
- year = $1.to_i
762
- if year < 0
763
- year += 1
771
+ def screen_data_str(t)
772
+ /^([+\-]?\d{4,})-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
773
+ unless Regexp.last_match
774
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
775
+ end
776
+ year = $1.to_i
777
+ if year < 0
778
+ year += 1
779
+ end
780
+ mon = $2.to_i
781
+ zonestr = $3
782
+ DateTime.civil(year, mon, 1, 0, 0, 0, tz2of(zonestr))
764
783
  end
765
- mon = $2.to_i
766
- zonestr = $3
767
- DateTime.civil(year, mon, 1, 0, 0, 0, tz2of(zonestr))
768
- end
769
784
 
770
- def _to_s
771
- year = (@data.year > 0) ? @data.year : @data.year - 1
772
- s = format('%.4d-%02d', year, @data.mon)
773
- add_tz(s)
785
+ def _to_s
786
+ year = (@data.year > 0) ? @data.year : @data.year - 1
787
+ s = format('%.4d-%02d', year, @data.mon)
788
+ add_tz(s)
789
+ end
774
790
  end
775
- end
776
791
 
777
- class XSDGYear < XSDAnySimpleType
778
- include XSDDateTimeImpl
779
- Type = QName.new(Namespace, GYearLiteral)
792
+ class XSDGYear < XSDAnySimpleType
793
+ include XSDDateTimeImpl
794
+ Type = QName.new(Namespace, GYearLiteral)
780
795
 
781
- def initialize(value = nil)
782
- init(Type, value)
783
- end
796
+ def initialize(value = nil)
797
+ init(Type, value)
798
+ end
784
799
 
785
- private
800
+ private
786
801
 
787
- def screen_data_str(t)
788
- /^([+\-]?\d{4,})(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
789
- unless Regexp.last_match
790
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
791
- end
792
- year = $1.to_i
793
- if year < 0
794
- year += 1
802
+ def screen_data_str(t)
803
+ /^([+\-]?\d{4,})(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
804
+ unless Regexp.last_match
805
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
806
+ end
807
+ year = $1.to_i
808
+ if year < 0
809
+ year += 1
810
+ end
811
+ zonestr = $2
812
+ DateTime.civil(year, 1, 1, 0, 0, 0, tz2of(zonestr))
795
813
  end
796
- zonestr = $2
797
- DateTime.civil(year, 1, 1, 0, 0, 0, tz2of(zonestr))
798
- end
799
814
 
800
- def _to_s
801
- year = (@data.year > 0) ? @data.year : @data.year - 1
802
- s = format('%.4d', year)
803
- add_tz(s)
815
+ def _to_s
816
+ year = (@data.year > 0) ? @data.year : @data.year - 1
817
+ s = format('%.4d', year)
818
+ add_tz(s)
819
+ end
804
820
  end
805
- end
806
821
 
807
- class XSDGMonthDay < XSDAnySimpleType
808
- include XSDDateTimeImpl
809
- Type = QName.new(Namespace, GMonthDayLiteral)
822
+ class XSDGMonthDay < XSDAnySimpleType
823
+ include XSDDateTimeImpl
824
+ Type = QName.new(Namespace, GMonthDayLiteral)
810
825
 
811
- def initialize(value = nil)
812
- init(Type, value)
813
- end
826
+ def initialize(value = nil)
827
+ init(Type, value)
828
+ end
814
829
 
815
- private
830
+ private
816
831
 
817
- def screen_data_str(t)
818
- /^--(\d\d)-(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
819
- unless Regexp.last_match
820
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
832
+ def screen_data_str(t)
833
+ /^--(\d\d)-(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
834
+ unless Regexp.last_match
835
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
836
+ end
837
+ mon = $1.to_i
838
+ mday = $2.to_i
839
+ zonestr = $3
840
+ DateTime.civil(1, mon, mday, 0, 0, 0, tz2of(zonestr))
821
841
  end
822
- mon = $1.to_i
823
- mday = $2.to_i
824
- zonestr = $3
825
- DateTime.civil(1, mon, mday, 0, 0, 0, tz2of(zonestr))
826
- end
827
842
 
828
- def _to_s
829
- s = format('--%02d-%02d', @data.mon, @data.mday)
830
- add_tz(s)
843
+ def _to_s
844
+ s = format('--%02d-%02d', @data.mon, @data.mday)
845
+ add_tz(s)
846
+ end
831
847
  end
832
- end
833
848
 
834
- class XSDGDay < XSDAnySimpleType
835
- include XSDDateTimeImpl
836
- Type = QName.new(Namespace, GDayLiteral)
849
+ class XSDGDay < XSDAnySimpleType
850
+ include XSDDateTimeImpl
851
+ Type = QName.new(Namespace, GDayLiteral)
837
852
 
838
- def initialize(value = nil)
839
- init(Type, value)
840
- end
853
+ def initialize(value = nil)
854
+ init(Type, value)
855
+ end
841
856
 
842
- private
857
+ private
843
858
 
844
- def screen_data_str(t)
845
- /^---(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
846
- unless Regexp.last_match
847
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
859
+ def screen_data_str(t)
860
+ /^---(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
861
+ unless Regexp.last_match
862
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
863
+ end
864
+ mday = $1.to_i
865
+ zonestr = $2
866
+ DateTime.civil(1, 1, mday, 0, 0, 0, tz2of(zonestr))
848
867
  end
849
- mday = $1.to_i
850
- zonestr = $2
851
- DateTime.civil(1, 1, mday, 0, 0, 0, tz2of(zonestr))
852
- end
853
868
 
854
- def _to_s
855
- s = format('---%02d', @data.mday)
856
- add_tz(s)
869
+ def _to_s
870
+ s = format('---%02d', @data.mday)
871
+ add_tz(s)
872
+ end
857
873
  end
858
- end
859
874
 
860
- class XSDGMonth < XSDAnySimpleType
861
- include XSDDateTimeImpl
862
- Type = QName.new(Namespace, GMonthLiteral)
875
+ class XSDGMonth < XSDAnySimpleType
876
+ include XSDDateTimeImpl
877
+ Type = QName.new(Namespace, GMonthLiteral)
863
878
 
864
- def initialize(value = nil)
865
- init(Type, value)
866
- end
879
+ def initialize(value = nil)
880
+ init(Type, value)
881
+ end
867
882
 
868
- private
883
+ private
869
884
 
870
- def screen_data_str(t)
871
- /^--(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
872
- unless Regexp.last_match
873
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
885
+ def screen_data_str(t)
886
+ /^--(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
887
+ unless Regexp.last_match
888
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.")
889
+ end
890
+ mon = $1.to_i
891
+ zonestr = $2
892
+ DateTime.civil(1, mon, 1, 0, 0, 0, tz2of(zonestr))
874
893
  end
875
- mon = $1.to_i
876
- zonestr = $2
877
- DateTime.civil(1, mon, 1, 0, 0, 0, tz2of(zonestr))
878
- end
879
894
 
880
- def _to_s
881
- s = format('--%02d', @data.mon)
882
- add_tz(s)
895
+ def _to_s
896
+ s = format('--%02d', @data.mon)
897
+ add_tz(s)
898
+ end
883
899
  end
884
- end
885
900
 
886
- class XSDHexBinary < XSDAnySimpleType
887
- Type = QName.new(Namespace, HexBinaryLiteral)
901
+ class XSDHexBinary < XSDAnySimpleType
902
+ Type = QName.new(Namespace, HexBinaryLiteral)
888
903
 
889
- # String in Ruby could be a binary.
890
- def initialize(value = nil)
891
- init(Type, value)
892
- end
904
+ # String in Ruby could be a binary.
905
+ def initialize(value = nil)
906
+ init(Type, value)
907
+ end
893
908
 
894
- def set_encoded(value)
895
- if /^[0-9a-fA-F]*$/ !~ value
896
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
909
+ def set_encoded(value)
910
+ if /^[0-9a-fA-F]*$/ !~ value
911
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
912
+ end
913
+ @data = String.new(value).strip
914
+ @is_nil = false
897
915
  end
898
- @data = String.new(value).strip
899
- @is_nil = false
900
- end
901
916
 
902
- def string
903
- [@data].pack("H*")
904
- end
917
+ def string
918
+ [@data].pack("H*")
919
+ end
905
920
 
906
- private
921
+ private
907
922
 
908
- def screen_data(value)
909
- value.unpack("H*")[0].tr('a-f', 'A-F')
923
+ def screen_data(value)
924
+ value.unpack("H*")[0].tr('a-f', 'A-F')
925
+ end
910
926
  end
911
- end
912
927
 
913
- class XSDBase64Binary < XSDAnySimpleType
914
- Type = QName.new(Namespace, Base64BinaryLiteral)
928
+ class XSDBase64Binary < XSDAnySimpleType
929
+ Type = QName.new(Namespace, Base64BinaryLiteral)
915
930
 
916
- # String in Ruby could be a binary.
917
- def initialize(value = nil)
918
- init(Type, value)
919
- end
931
+ # String in Ruby could be a binary.
932
+ def initialize(value = nil)
933
+ init(Type, value)
934
+ end
920
935
 
921
- def set_encoded(value)
922
- if /^[A-Za-z0-9+\/=]*$/ !~ value
923
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
936
+ def set_encoded(value)
937
+ if /^[A-Za-z0-9+\/=]*$/ !~ value
938
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
939
+ end
940
+ @data = String.new(value).strip
941
+ @is_nil = false
924
942
  end
925
- @data = String.new(value).strip
926
- @is_nil = false
927
- end
928
943
 
929
- def string
930
- @data.unpack("m")[0]
931
- end
944
+ def string
945
+ @data.unpack("m")[0]
946
+ end
932
947
 
933
- private
948
+ private
934
949
 
935
- def screen_data(value)
936
- [value].pack("m").strip
950
+ def screen_data(value)
951
+ [value].pack("m").strip
952
+ end
937
953
  end
938
- end
939
954
 
940
- class XSDAnyURI < XSDAnySimpleType
941
- Type = QName.new(Namespace, AnyURILiteral)
955
+ class XSDAnyURI < XSDAnySimpleType
956
+ Type = QName.new(Namespace, AnyURILiteral)
942
957
 
943
- def initialize(value = nil)
944
- init(Type, value)
945
- end
958
+ def initialize(value = nil)
959
+ init(Type, value)
960
+ end
946
961
 
947
- private
962
+ private
948
963
 
949
- def screen_data(value)
950
- begin
951
- URI.parse(value.to_s.strip)
952
- rescue URI::InvalidURIError
953
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.", $!)
964
+ def screen_data(value)
965
+ begin
966
+ URI.parse(value.to_s.strip)
967
+ rescue URI::InvalidURIError
968
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.", $!)
969
+ end
954
970
  end
955
971
  end
956
- end
957
972
 
958
- class XSDQName < XSDAnySimpleType
959
- Type = QName.new(Namespace, QNameLiteral)
973
+ class XSDQName < XSDAnySimpleType
974
+ Type = QName.new(Namespace, QNameLiteral)
960
975
 
961
- def initialize(value = nil)
962
- init(Type, value)
963
- end
976
+ def initialize(value = nil)
977
+ init(Type, value)
978
+ end
964
979
 
965
- private
980
+ private
966
981
 
967
- def screen_data(value)
968
- /^(?:([^:]+):)?([^:]+)$/ =~ value.to_s.strip
969
- unless Regexp.last_match
970
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
982
+ def screen_data(value)
983
+ /^(?:([^:]+):)?([^:]+)$/ =~ value.to_s.strip
984
+ unless Regexp.last_match
985
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
986
+ end
987
+ prefix = $1
988
+ localpart = $2
989
+ [prefix, localpart]
971
990
  end
972
- prefix = $1
973
- localpart = $2
974
- [prefix, localpart]
975
- end
976
991
 
977
- def _set(data)
978
- if data.nil?
979
- @prefix = @localpart = @data = nil
980
- return
992
+ def _set(data)
993
+ if data.nil?
994
+ @prefix = @localpart = @data = nil
995
+ return
996
+ end
997
+ @prefix, @localpart = data
998
+ @data = _to_s
999
+ @data.freeze
981
1000
  end
982
- @prefix, @localpart = data
983
- @data = _to_s
984
- @data.freeze
985
- end
986
1001
 
987
- def _to_s
988
- if @prefix
989
- "#{ @prefix }:#{ @localpart }"
990
- else
991
- "#{ @localpart }"
1002
+ def _to_s
1003
+ if @prefix
1004
+ "#{ @prefix }:#{ @localpart }"
1005
+ else
1006
+ "#{ @localpart }"
1007
+ end
992
1008
  end
993
1009
  end
994
- end
995
1010
 
996
1011
 
997
- ###
998
- ## Derived types
999
- #
1000
- class XSDNormalizedString < XSDString
1001
- Type = QName.new(Namespace, NormalizedStringLiteral)
1012
+ ###
1013
+ ## Derived types
1014
+ #
1015
+ class XSDNormalizedString < XSDString
1016
+ Type = QName.new(Namespace, NormalizedStringLiteral)
1002
1017
 
1003
- def initialize(value = nil)
1004
- init(Type, value)
1005
- end
1018
+ def initialize(value = nil)
1019
+ init(Type, value)
1020
+ end
1006
1021
 
1007
- private
1022
+ private
1008
1023
 
1009
- def screen_data(value)
1010
- super
1011
- if /[\t\r\n]/ =~ value
1012
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
1024
+ def screen_data(value)
1025
+ super
1026
+ if /[\t\r\n]/ =~ value
1027
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
1028
+ end
1029
+ value
1013
1030
  end
1014
- value
1015
1031
  end
1016
- end
1017
1032
 
1018
- class XSDToken < XSDNormalizedString
1019
- Type = QName.new(Namespace, TokenLiteral)
1033
+ class XSDToken < XSDNormalizedString
1034
+ Type = QName.new(Namespace, TokenLiteral)
1020
1035
 
1021
- def initialize(value = nil)
1022
- init(Type, value)
1023
- end
1036
+ def initialize(value = nil)
1037
+ init(Type, value)
1038
+ end
1024
1039
 
1025
- private
1040
+ private
1026
1041
 
1027
- def screen_data(value)
1028
- super
1029
- if /\A / =~ value or / \Z/ =~ value or value.index(' ')
1030
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
1031
- end
1032
- value
1033
- end
1034
- end
1042
+ def screen_data(value)
1043
+ # Remove null bytes before processing
1044
+ if value.is_a?(String)
1045
+ raise XSD::ValueSpaceError.new("#{ type }: cannot accept string with null byte.") if value.include?("\0")
1046
+ value = value.gsub("\u0000", '')
1047
+ end
1048
+
1049
+ value = value.unpack("C*").pack("C*")
1035
1050
 
1036
- class XSDLanguage < XSDToken
1037
- Type = QName.new(Namespace, LanguageLiteral)
1051
+ super
1038
1052
 
1039
- def initialize(value = nil)
1040
- init(Type, value)
1053
+ if /\A / =~ value or / \Z/ =~ value or value.index(' ')
1054
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
1055
+ end
1056
+ value
1057
+ end
1041
1058
  end
1042
1059
 
1043
- private
1060
+ class XSDLanguage < XSDToken
1061
+ Type = QName.new(Namespace, LanguageLiteral)
1044
1062
 
1045
- def screen_data(value)
1046
- super
1047
- # RFC 3066 syntax check
1048
- if /\A[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})?\z/ !~ value
1049
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
1063
+ def initialize(value = nil)
1064
+ init(Type, value)
1050
1065
  end
1051
- value
1052
- end
1053
- end
1054
1066
 
1055
- class XSDNMTOKEN < XSDToken
1056
- Type = QName.new(Namespace, NMTOKENLiteral)
1067
+ private
1057
1068
 
1058
- def initialize(value = nil)
1059
- init(Type, value)
1069
+ def screen_data(value)
1070
+ super
1071
+ # RFC 3066 syntax check
1072
+ if /\A[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})?\z/ !~ value
1073
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
1074
+ end
1075
+ value
1076
+ end
1060
1077
  end
1061
1078
 
1062
- private
1079
+ class XSDNMTOKEN < XSDToken
1080
+ Type = QName.new(Namespace, NMTOKENLiteral)
1063
1081
 
1064
- def screen_data(value)
1065
- super
1066
- # TODO: check lexical space and convert to a value
1067
- value
1068
- end
1069
- end
1082
+ def initialize(value = nil)
1083
+ init(Type, value)
1084
+ end
1070
1085
 
1071
- class XSDNMTOKENS < XSDNMTOKEN
1072
- Type = QName.new(Namespace, NMTOKENSLiteral)
1086
+ private
1073
1087
 
1074
- def initialize(value = nil)
1075
- init(Type, value)
1088
+ def screen_data(value)
1089
+ super
1090
+ # TODO: check lexical space and convert to a value
1091
+ value
1092
+ end
1076
1093
  end
1077
1094
 
1078
- private
1095
+ class XSDNMTOKENS < XSDNMTOKEN
1096
+ Type = QName.new(Namespace, NMTOKENSLiteral)
1079
1097
 
1080
- def screen_data(value)
1081
- # derived by list
1082
- # TODO: check lexical space and convert to a value
1083
- value
1084
- end
1085
- end
1098
+ def initialize(value = nil)
1099
+ init(Type, value)
1100
+ end
1086
1101
 
1087
- class XSDName < XSDToken
1088
- Type = QName.new(Namespace, NameLiteral)
1102
+ private
1089
1103
 
1090
- def initialize(value = nil)
1091
- init(Type, value)
1104
+ def screen_data(value)
1105
+ # derived by list
1106
+ # TODO: check lexical space and convert to a value
1107
+ value
1108
+ end
1092
1109
  end
1093
1110
 
1094
- private
1111
+ class XSDName < XSDToken
1112
+ Type = QName.new(Namespace, NameLiteral)
1095
1113
 
1096
- def screen_data(value)
1097
- super
1098
- # TODO: check lexical space and convert to a value
1099
- value
1100
- end
1101
- end
1114
+ def initialize(value = nil)
1115
+ init(Type, value)
1116
+ end
1102
1117
 
1103
- class XSDNCName < XSDName
1104
- Type = QName.new(Namespace, NCNameLiteral)
1118
+ private
1105
1119
 
1106
- def initialize(value = nil)
1107
- init(Type, value)
1120
+ def screen_data(value)
1121
+ super
1122
+ # TODO: check lexical space and convert to a value
1123
+ value
1124
+ end
1108
1125
  end
1109
1126
 
1110
- private
1127
+ class XSDNCName < XSDName
1128
+ Type = QName.new(Namespace, NCNameLiteral)
1111
1129
 
1112
- def screen_data(value)
1113
- super
1114
- # TODO: check lexical space and convert to a value
1115
- value
1116
- end
1117
- end
1130
+ def initialize(value = nil)
1131
+ init(Type, value)
1132
+ end
1118
1133
 
1119
- class XSDID < XSDNCName
1120
- Type = QName.new(Namespace, IDLiteral)
1134
+ private
1121
1135
 
1122
- def initialize(value = nil)
1123
- init(Type, value)
1136
+ def screen_data(value)
1137
+ super
1138
+ # TODO: check lexical space and convert to a value
1139
+ value
1140
+ end
1124
1141
  end
1125
1142
 
1126
- private
1143
+ class XSDID < XSDNCName
1144
+ Type = QName.new(Namespace, IDLiteral)
1127
1145
 
1128
- def screen_data(value)
1129
- super
1130
- # TODO: check lexical space and convert to a value
1131
- value
1132
- end
1133
- end
1146
+ def initialize(value = nil)
1147
+ init(Type, value)
1148
+ end
1134
1149
 
1135
- class XSDIDREF < XSDNCName
1136
- Type = QName.new(Namespace, IDREFLiteral)
1150
+ private
1137
1151
 
1138
- def initialize(value = nil)
1139
- init(Type, value)
1152
+ def screen_data(value)
1153
+ super
1154
+ # TODO: check lexical space and convert to a value
1155
+ value
1156
+ end
1140
1157
  end
1141
1158
 
1142
- private
1159
+ class XSDIDREF < XSDNCName
1160
+ Type = QName.new(Namespace, IDREFLiteral)
1143
1161
 
1144
- def screen_data(value)
1145
- super
1146
- # TODO: check lexical space and convert to a value
1147
- value
1148
- end
1149
- end
1162
+ def initialize(value = nil)
1163
+ init(Type, value)
1164
+ end
1150
1165
 
1151
- class XSDIDREFS < XSDIDREF
1152
- Type = QName.new(Namespace, IDREFSLiteral)
1166
+ private
1153
1167
 
1154
- def initialize(value = nil)
1155
- init(Type, value)
1168
+ def screen_data(value)
1169
+ super
1170
+ # TODO: check lexical space and convert to a value
1171
+ value
1172
+ end
1156
1173
  end
1157
1174
 
1158
- private
1175
+ class XSDIDREFS < XSDIDREF
1176
+ Type = QName.new(Namespace, IDREFSLiteral)
1159
1177
 
1160
- def screen_data(value)
1161
- # derived by list
1162
- # TODO: check lexical space and convert to a value
1163
- value
1164
- end
1165
- end
1178
+ def initialize(value = nil)
1179
+ init(Type, value)
1180
+ end
1166
1181
 
1167
- class XSDENTITY < XSDNCName
1168
- Type = QName.new(Namespace, ENTITYLiteral)
1182
+ private
1169
1183
 
1170
- def initialize(value = nil)
1171
- init(Type, value)
1184
+ def screen_data(value)
1185
+ # derived by list
1186
+ # TODO: check lexical space and convert to a value
1187
+ value
1188
+ end
1172
1189
  end
1173
1190
 
1174
- private
1191
+ class XSDENTITY < XSDNCName
1192
+ Type = QName.new(Namespace, ENTITYLiteral)
1175
1193
 
1176
- def screen_data(value)
1177
- super
1178
- # TODO: check lexical space and convert to a value
1179
- value
1180
- end
1181
- end
1194
+ def initialize(value = nil)
1195
+ init(Type, value)
1196
+ end
1182
1197
 
1183
- class XSDENTITIES < XSDENTITY
1184
- Type = QName.new(Namespace, ENTITIESLiteral)
1198
+ private
1185
1199
 
1186
- def initialize(value = nil)
1187
- init(Type, value)
1200
+ def screen_data(value)
1201
+ super
1202
+ # TODO: check lexical space and convert to a value
1203
+ value
1204
+ end
1188
1205
  end
1189
1206
 
1190
- private
1207
+ class XSDENTITIES < XSDENTITY
1208
+ Type = QName.new(Namespace, ENTITIESLiteral)
1191
1209
 
1192
- def screen_data(value)
1193
- # derived by list
1194
- # TODO: check lexical space and convert to a value
1195
- value
1196
- end
1197
- end
1210
+ def initialize(value = nil)
1211
+ init(Type, value)
1212
+ end
1198
1213
 
1199
- class XSDInteger < XSDDecimal
1200
- Type = QName.new(Namespace, IntegerLiteral)
1214
+ private
1201
1215
 
1202
- def initialize(value = nil)
1203
- init(Type, value)
1216
+ def screen_data(value)
1217
+ # derived by list
1218
+ # TODO: check lexical space and convert to a value
1219
+ value
1220
+ end
1204
1221
  end
1205
1222
 
1206
- private
1223
+ class XSDInteger < XSDDecimal
1224
+ Type = QName.new(Namespace, IntegerLiteral)
1207
1225
 
1208
- def screen_data_str(str)
1209
- begin
1210
- data = Integer(str)
1211
- rescue ArgumentError
1212
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
1226
+ def initialize(value = nil)
1227
+ init(Type, value)
1213
1228
  end
1214
- unless validate(data)
1215
- raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
1229
+
1230
+ private
1231
+
1232
+ def screen_data_str(str)
1233
+ begin
1234
+ data = Integer(str)
1235
+ rescue ArgumentError
1236
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
1237
+ end
1238
+ unless validate(data)
1239
+ raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
1240
+ end
1241
+ data
1216
1242
  end
1217
- data
1218
- end
1219
1243
 
1220
- def _set(value)
1221
- @data = value
1222
- end
1244
+ def _set(value)
1245
+ @data = value
1246
+ end
1223
1247
 
1224
- def _to_s()
1225
- @data.to_s
1226
- end
1248
+ def _to_s
1249
+ @data.to_s
1250
+ end
1227
1251
 
1228
- def validate(v)
1229
- max = maxinclusive
1230
- min = mininclusive
1231
- (max.nil? or v <= max) and (min.nil? or v >= min)
1232
- end
1252
+ def validate(v)
1253
+ max = maxinclusive
1254
+ min = mininclusive
1255
+ (max.nil? or v <= max) and (min.nil? or v >= min)
1256
+ end
1233
1257
 
1234
- def maxinclusive
1235
- nil
1236
- end
1258
+ def maxinclusive
1259
+ nil
1260
+ end
1237
1261
 
1238
- def mininclusive
1239
- nil
1240
- end
1262
+ def mininclusive
1263
+ nil
1264
+ end
1241
1265
 
1242
- PositiveMinInclusive = 1
1243
- def positive(v)
1244
- PositiveMinInclusive <= v
1266
+ PositiveMinInclusive = 1
1267
+ def positive(v)
1268
+ PositiveMinInclusive <= v
1269
+ end
1245
1270
  end
1246
- end
1247
1271
 
1248
- class XSDNonPositiveInteger < XSDInteger
1249
- Type = QName.new(Namespace, NonPositiveIntegerLiteral)
1272
+ class XSDNonPositiveInteger < XSDInteger
1273
+ Type = QName.new(Namespace, NonPositiveIntegerLiteral)
1250
1274
 
1251
- def initialize(value = nil)
1252
- init(Type, value)
1253
- end
1275
+ def initialize(value = nil)
1276
+ init(Type, value)
1277
+ end
1254
1278
 
1255
- private
1279
+ private
1256
1280
 
1257
- def maxinclusive
1258
- 0
1259
- end
1281
+ def maxinclusive
1282
+ 0
1283
+ end
1260
1284
 
1261
- def mininclusive
1262
- nil
1285
+ def mininclusive
1286
+ nil
1287
+ end
1263
1288
  end
1264
- end
1265
1289
 
1266
- class XSDNegativeInteger < XSDNonPositiveInteger
1267
- Type = QName.new(Namespace, NegativeIntegerLiteral)
1290
+ class XSDNegativeInteger < XSDNonPositiveInteger
1291
+ Type = QName.new(Namespace, NegativeIntegerLiteral)
1268
1292
 
1269
- def initialize(value = nil)
1270
- init(Type, value)
1271
- end
1293
+ def initialize(value = nil)
1294
+ init(Type, value)
1295
+ end
1272
1296
 
1273
- private
1297
+ private
1274
1298
 
1275
- def maxinclusive
1276
- -1
1277
- end
1299
+ def maxinclusive
1300
+ -1
1301
+ end
1278
1302
 
1279
- def mininclusive
1280
- nil
1303
+ def mininclusive
1304
+ nil
1305
+ end
1281
1306
  end
1282
- end
1283
1307
 
1284
- class XSDLong < XSDInteger
1285
- Type = QName.new(Namespace, LongLiteral)
1308
+ class XSDLong < XSDInteger
1309
+ Type = QName.new(Namespace, LongLiteral)
1286
1310
 
1287
- def initialize(value = nil)
1288
- init(Type, value)
1289
- end
1311
+ def initialize(value = nil)
1312
+ init(Type, value)
1313
+ end
1290
1314
 
1291
- private
1315
+ private
1292
1316
 
1293
- def maxinclusive
1294
- +9223372036854775807
1295
- end
1317
+ def maxinclusive
1318
+ +9223372036854775807
1319
+ end
1296
1320
 
1297
- def mininclusive
1298
- -9223372036854775808
1321
+ def mininclusive
1322
+ -9223372036854775808
1323
+ end
1299
1324
  end
1300
- end
1301
1325
 
1302
- class XSDInt < XSDLong
1303
- Type = QName.new(Namespace, IntLiteral)
1326
+ class XSDInt < XSDLong
1327
+ Type = QName.new(Namespace, IntLiteral)
1304
1328
 
1305
- def initialize(value = nil)
1306
- init(Type, value)
1307
- end
1329
+ def initialize(value = nil)
1330
+ init(Type, value)
1331
+ end
1308
1332
 
1309
- private
1333
+ private
1310
1334
 
1311
- def maxinclusive
1312
- +2147483647
1313
- end
1335
+ def maxinclusive
1336
+ +2147483647
1337
+ end
1314
1338
 
1315
- def mininclusive
1316
- -2147483648
1339
+ def mininclusive
1340
+ -2147483648
1341
+ end
1317
1342
  end
1318
- end
1319
1343
 
1320
- class XSDShort < XSDInt
1321
- Type = QName.new(Namespace, ShortLiteral)
1344
+ class XSDShort < XSDInt
1345
+ Type = QName.new(Namespace, ShortLiteral)
1322
1346
 
1323
- def initialize(value = nil)
1324
- init(Type, value)
1325
- end
1347
+ def initialize(value = nil)
1348
+ init(Type, value)
1349
+ end
1326
1350
 
1327
- private
1351
+ private
1328
1352
 
1329
- def maxinclusive
1330
- +32767
1331
- end
1353
+ def maxinclusive
1354
+ +32767
1355
+ end
1332
1356
 
1333
- def mininclusive
1334
- -32768
1357
+ def mininclusive
1358
+ -32768
1359
+ end
1335
1360
  end
1336
- end
1337
1361
 
1338
- class XSDByte < XSDShort
1339
- Type = QName.new(Namespace, ByteLiteral)
1362
+ class XSDByte < XSDShort
1363
+ Type = QName.new(Namespace, ByteLiteral)
1340
1364
 
1341
- def initialize(value = nil)
1342
- init(Type, value)
1343
- end
1365
+ def initialize(value = nil)
1366
+ init(Type, value)
1367
+ end
1344
1368
 
1345
- private
1369
+ private
1346
1370
 
1347
- def maxinclusive
1348
- +127
1349
- end
1371
+ def maxinclusive
1372
+ +127
1373
+ end
1350
1374
 
1351
- def mininclusive
1352
- -128
1375
+ def mininclusive
1376
+ -128
1377
+ end
1353
1378
  end
1354
- end
1355
1379
 
1356
- class XSDNonNegativeInteger < XSDInteger
1357
- Type = QName.new(Namespace, NonNegativeIntegerLiteral)
1380
+ class XSDNonNegativeInteger < XSDInteger
1381
+ Type = QName.new(Namespace, NonNegativeIntegerLiteral)
1358
1382
 
1359
- def initialize(value = nil)
1360
- init(Type, value)
1361
- end
1383
+ def initialize(value = nil)
1384
+ init(Type, value)
1385
+ end
1362
1386
 
1363
- private
1387
+ private
1364
1388
 
1365
- def maxinclusive
1366
- nil
1367
- end
1389
+ def maxinclusive
1390
+ nil
1391
+ end
1368
1392
 
1369
- def mininclusive
1370
- 0
1393
+ def mininclusive
1394
+ 0
1395
+ end
1371
1396
  end
1372
- end
1373
1397
 
1374
- class XSDUnsignedLong < XSDNonNegativeInteger
1375
- Type = QName.new(Namespace, UnsignedLongLiteral)
1398
+ class XSDUnsignedLong < XSDNonNegativeInteger
1399
+ Type = QName.new(Namespace, UnsignedLongLiteral)
1376
1400
 
1377
- def initialize(value = nil)
1378
- init(Type, value)
1379
- end
1401
+ def initialize(value = nil)
1402
+ init(Type, value)
1403
+ end
1380
1404
 
1381
- private
1405
+ private
1382
1406
 
1383
- def maxinclusive
1384
- +18446744073709551615
1385
- end
1407
+ def maxinclusive
1408
+ +18446744073709551615
1409
+ end
1386
1410
 
1387
- def mininclusive
1388
- 0
1411
+ def mininclusive
1412
+ 0
1413
+ end
1389
1414
  end
1390
- end
1391
1415
 
1392
- class XSDUnsignedInt < XSDUnsignedLong
1393
- Type = QName.new(Namespace, UnsignedIntLiteral)
1416
+ class XSDUnsignedInt < XSDUnsignedLong
1417
+ Type = QName.new(Namespace, UnsignedIntLiteral)
1394
1418
 
1395
- def initialize(value = nil)
1396
- init(Type, value)
1397
- end
1419
+ def initialize(value = nil)
1420
+ init(Type, value)
1421
+ end
1398
1422
 
1399
- private
1423
+ private
1400
1424
 
1401
- def maxinclusive
1402
- +4294967295
1403
- end
1425
+ def maxinclusive
1426
+ +4294967295
1427
+ end
1404
1428
 
1405
- def mininclusive
1406
- 0
1429
+ def mininclusive
1430
+ 0
1431
+ end
1407
1432
  end
1408
- end
1409
1433
 
1410
- class XSDUnsignedShort < XSDUnsignedInt
1411
- Type = QName.new(Namespace, UnsignedShortLiteral)
1434
+ class XSDUnsignedShort < XSDUnsignedInt
1435
+ Type = QName.new(Namespace, UnsignedShortLiteral)
1412
1436
 
1413
- def initialize(value = nil)
1414
- init(Type, value)
1415
- end
1437
+ def initialize(value = nil)
1438
+ init(Type, value)
1439
+ end
1416
1440
 
1417
- private
1441
+ private
1418
1442
 
1419
- def maxinclusive
1420
- +65535
1421
- end
1443
+ def maxinclusive
1444
+ +65535
1445
+ end
1422
1446
 
1423
- def mininclusive
1424
- 0
1447
+ def mininclusive
1448
+ 0
1449
+ end
1425
1450
  end
1426
- end
1427
1451
 
1428
- class XSDUnsignedByte < XSDUnsignedShort
1429
- Type = QName.new(Namespace, UnsignedByteLiteral)
1452
+ class XSDUnsignedByte < XSDUnsignedShort
1453
+ Type = QName.new(Namespace, UnsignedByteLiteral)
1430
1454
 
1431
- def initialize(value = nil)
1432
- init(Type, value)
1433
- end
1455
+ def initialize(value = nil)
1456
+ init(Type, value)
1457
+ end
1434
1458
 
1435
- private
1459
+ private
1436
1460
 
1437
- def maxinclusive
1438
- +255
1439
- end
1461
+ def maxinclusive
1462
+ +255
1463
+ end
1440
1464
 
1441
- def mininclusive
1442
- 0
1465
+ def mininclusive
1466
+ 0
1467
+ end
1443
1468
  end
1444
- end
1445
1469
 
1446
- class XSDPositiveInteger < XSDNonNegativeInteger
1447
- Type = QName.new(Namespace, PositiveIntegerLiteral)
1470
+ class XSDPositiveInteger < XSDNonNegativeInteger
1471
+ Type = QName.new(Namespace, PositiveIntegerLiteral)
1448
1472
 
1449
- def initialize(value = nil)
1450
- init(Type, value)
1451
- end
1473
+ def initialize(value = nil)
1474
+ init(Type, value)
1475
+ end
1452
1476
 
1453
- private
1477
+ private
1454
1478
 
1455
- def maxinclusive
1456
- nil
1457
- end
1479
+ def maxinclusive
1480
+ nil
1481
+ end
1458
1482
 
1459
- def mininclusive
1460
- 1
1483
+ def mininclusive
1484
+ 1
1485
+ end
1461
1486
  end
1462
- end
1463
1487
 
1464
1488
 
1465
1489
  end