DefV-soap4r 1.5.8.2

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 (443) hide show
  1. data/bin/wsdl2ruby.rb +137 -0
  2. data/bin/xsd2ruby.rb +90 -0
  3. data/lib/soap/attachment.rb +108 -0
  4. data/lib/soap/attrproxy.rb +34 -0
  5. data/lib/soap/baseData.rb +1094 -0
  6. data/lib/soap/element.rb +277 -0
  7. data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
  8. data/lib/soap/encodingstyle/handler.rb +120 -0
  9. data/lib/soap/encodingstyle/literalHandler.rb +195 -0
  10. data/lib/soap/encodingstyle/soapHandler.rb +559 -0
  11. data/lib/soap/filter.rb +13 -0
  12. data/lib/soap/filter/filterchain.rb +51 -0
  13. data/lib/soap/filter/handler.rb +31 -0
  14. data/lib/soap/filter/streamhandler.rb +29 -0
  15. data/lib/soap/generator.rb +299 -0
  16. data/lib/soap/header/handler.rb +61 -0
  17. data/lib/soap/header/handlerset.rb +70 -0
  18. data/lib/soap/header/mappinghandler.rb +47 -0
  19. data/lib/soap/header/simplehandler.rb +44 -0
  20. data/lib/soap/httpconfigloader.rb +139 -0
  21. data/lib/soap/mapping.rb +12 -0
  22. data/lib/soap/mapping/encodedregistry.rb +537 -0
  23. data/lib/soap/mapping/factory.rb +388 -0
  24. data/lib/soap/mapping/literalregistry.rb +391 -0
  25. data/lib/soap/mapping/mapping.rb +577 -0
  26. data/lib/soap/mapping/registry.rb +295 -0
  27. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  28. data/lib/soap/mapping/schemadefinition.rb +170 -0
  29. data/lib/soap/mapping/typeMap.rb +106 -0
  30. data/lib/soap/mapping/wsdlencodedregistry.rb +211 -0
  31. data/lib/soap/mapping/wsdlliteralregistry.rb +248 -0
  32. data/lib/soap/marshal.rb +59 -0
  33. data/lib/soap/mimemessage.rb +241 -0
  34. data/lib/soap/nestedexception.rb +42 -0
  35. data/lib/soap/netHttpClient.rb +241 -0
  36. data/lib/soap/ns.rb +34 -0
  37. data/lib/soap/parser.rb +252 -0
  38. data/lib/soap/processor.rb +66 -0
  39. data/lib/soap/property.rb +333 -0
  40. data/lib/soap/proxy.rb +14 -0
  41. data/lib/soap/rpc/cgistub.rb +247 -0
  42. data/lib/soap/rpc/driver.rb +221 -0
  43. data/lib/soap/rpc/element.rb +374 -0
  44. data/lib/soap/rpc/element.rb.orig +374 -0
  45. data/lib/soap/rpc/httpserver.rb +142 -0
  46. data/lib/soap/rpc/methodDef.rb +68 -0
  47. data/lib/soap/rpc/proxy.rb +572 -0
  48. data/lib/soap/rpc/router.rb +662 -0
  49. data/lib/soap/rpc/rpc.rb +25 -0
  50. data/lib/soap/rpc/soaplet.rb +200 -0
  51. data/lib/soap/rpc/standaloneServer.rb +43 -0
  52. data/lib/soap/soap.rb +151 -0
  53. data/lib/soap/streamHandler.rb +301 -0
  54. data/lib/soap/wsdlDriver.rb +164 -0
  55. data/lib/wsdl/binding.rb +65 -0
  56. data/lib/wsdl/data.rb +64 -0
  57. data/lib/wsdl/definitions.rb +236 -0
  58. data/lib/wsdl/documentation.rb +32 -0
  59. data/lib/wsdl/import.rb +80 -0
  60. data/lib/wsdl/importer.rb +38 -0
  61. data/lib/wsdl/info.rb +50 -0
  62. data/lib/wsdl/message.rb +54 -0
  63. data/lib/wsdl/operation.rb +151 -0
  64. data/lib/wsdl/operationBinding.rb +240 -0
  65. data/lib/wsdl/param.rb +93 -0
  66. data/lib/wsdl/parser.rb +164 -0
  67. data/lib/wsdl/part.rb +52 -0
  68. data/lib/wsdl/port.rb +66 -0
  69. data/lib/wsdl/portType.rb +75 -0
  70. data/lib/wsdl/service.rb +61 -0
  71. data/lib/wsdl/soap/address.rb +40 -0
  72. data/lib/wsdl/soap/binding.rb +49 -0
  73. data/lib/wsdl/soap/body.rb +58 -0
  74. data/lib/wsdl/soap/cgiStubCreator.rb +92 -0
  75. data/lib/wsdl/soap/classDefCreator.rb +433 -0
  76. data/lib/wsdl/soap/classDefCreatorSupport.rb +240 -0
  77. data/lib/wsdl/soap/classNameCreator.rb +54 -0
  78. data/lib/wsdl/soap/clientSkeltonCreator.rb +104 -0
  79. data/lib/wsdl/soap/complexType.rb +173 -0
  80. data/lib/wsdl/soap/data.rb +42 -0
  81. data/lib/wsdl/soap/definitions.rb +200 -0
  82. data/lib/wsdl/soap/driverCreator.rb +118 -0
  83. data/lib/wsdl/soap/element.rb +33 -0
  84. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +73 -0
  85. data/lib/wsdl/soap/fault.rb +56 -0
  86. data/lib/wsdl/soap/header.rb +86 -0
  87. data/lib/wsdl/soap/headerfault.rb +56 -0
  88. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +115 -0
  89. data/lib/wsdl/soap/mappingRegistryCreator.rb +58 -0
  90. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +376 -0
  91. data/lib/wsdl/soap/methodDefCreator.rb +199 -0
  92. data/lib/wsdl/soap/operation.rb +112 -0
  93. data/lib/wsdl/soap/servantSkeltonCreator.rb +89 -0
  94. data/lib/wsdl/soap/servletStubCreator.rb +104 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +100 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +217 -0
  97. data/lib/wsdl/types.rb +44 -0
  98. data/lib/wsdl/wsdl.rb +24 -0
  99. data/lib/wsdl/xmlSchema/all.rb +24 -0
  100. data/lib/wsdl/xmlSchema/annotation.rb +34 -0
  101. data/lib/wsdl/xmlSchema/any.rb +61 -0
  102. data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
  103. data/lib/wsdl/xmlSchema/attribute.rb +104 -0
  104. data/lib/wsdl/xmlSchema/attributeGroup.rb +68 -0
  105. data/lib/wsdl/xmlSchema/choice.rb +58 -0
  106. data/lib/wsdl/xmlSchema/complexContent.rb +97 -0
  107. data/lib/wsdl/xmlSchema/complexExtension.rb +119 -0
  108. data/lib/wsdl/xmlSchema/complexRestriction.rb +104 -0
  109. data/lib/wsdl/xmlSchema/complexType.rb +193 -0
  110. data/lib/wsdl/xmlSchema/content.rb +95 -0
  111. data/lib/wsdl/xmlSchema/data.rb +116 -0
  112. data/lib/wsdl/xmlSchema/element.rb +153 -0
  113. data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  114. data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
  115. data/lib/wsdl/xmlSchema/group.rb +100 -0
  116. data/lib/wsdl/xmlSchema/import.rb +53 -0
  117. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  118. data/lib/wsdl/xmlSchema/importer.rb +102 -0
  119. data/lib/wsdl/xmlSchema/include.rb +48 -0
  120. data/lib/wsdl/xmlSchema/length.rb +37 -0
  121. data/lib/wsdl/xmlSchema/list.rb +48 -0
  122. data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
  123. data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
  124. data/lib/wsdl/xmlSchema/maxlength.rb +37 -0
  125. data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
  126. data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
  127. data/lib/wsdl/xmlSchema/minlength.rb +37 -0
  128. data/lib/wsdl/xmlSchema/parser.rb +167 -0
  129. data/lib/wsdl/xmlSchema/pattern.rb +36 -0
  130. data/lib/wsdl/xmlSchema/ref.rb +33 -0
  131. data/lib/wsdl/xmlSchema/schema.rb +178 -0
  132. data/lib/wsdl/xmlSchema/sequence.rb +54 -0
  133. data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
  134. data/lib/wsdl/xmlSchema/simpleExtension.rb +62 -0
  135. data/lib/wsdl/xmlSchema/simpleRestriction.rb +132 -0
  136. data/lib/wsdl/xmlSchema/simpleType.rb +87 -0
  137. data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
  138. data/lib/wsdl/xmlSchema/union.rb +35 -0
  139. data/lib/wsdl/xmlSchema/unique.rb +34 -0
  140. data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
  141. data/lib/wsdl/xmlSchema/xsd2ruby.rb +174 -0
  142. data/lib/xsd/charset.rb +188 -0
  143. data/lib/xsd/codegen.rb +12 -0
  144. data/lib/xsd/codegen/classdef.rb +208 -0
  145. data/lib/xsd/codegen/commentdef.rb +34 -0
  146. data/lib/xsd/codegen/gensupport.rb +273 -0
  147. data/lib/xsd/codegen/methoddef.rb +70 -0
  148. data/lib/xsd/codegen/moduledef.rb +208 -0
  149. data/lib/xsd/datatypes.rb +1466 -0
  150. data/lib/xsd/datatypes1999.rb +20 -0
  151. data/lib/xsd/iconvcharset.rb +33 -0
  152. data/lib/xsd/mapping.rb +68 -0
  153. data/lib/xsd/namedelements.rb +132 -0
  154. data/lib/xsd/ns.rb +182 -0
  155. data/lib/xsd/qname.rb +79 -0
  156. data/lib/xsd/xmlparser.rb +76 -0
  157. data/lib/xsd/xmlparser.rb.orig +76 -0
  158. data/lib/xsd/xmlparser/libxmlparser.rb +119 -0
  159. data/lib/xsd/xmlparser/parser.rb +100 -0
  160. data/lib/xsd/xmlparser/rexmlparser.rb +58 -0
  161. data/lib/xsd/xmlparser/xmlparser.rb +50 -0
  162. data/lib/xsd/xmlparser/xmlscanner.rb +149 -0
  163. data/test/16runner.rb +68 -0
  164. data/test/interopR2/README.txt +2 -0
  165. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  166. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  167. data/test/interopR2/base.rb +288 -0
  168. data/test/interopR2/client.NetRemoting.rb +17 -0
  169. data/test/interopR2/client.rb +1234 -0
  170. data/test/interopR2/client4S4C.rb +15 -0
  171. data/test/interopR2/client4S4C2.rb +14 -0
  172. data/test/interopR2/clientASP.NET.rb +17 -0
  173. data/test/interopR2/clientApacheAxis.rb +16 -0
  174. data/test/interopR2/clientApacheSOAP.rb +17 -0
  175. data/test/interopR2/clientBEAWebLogic.rb +17 -0
  176. data/test/interopR2/clientBase.rb +1967 -0
  177. data/test/interopR2/clientCapeConnect.rb +18 -0
  178. data/test/interopR2/clientDelphi.rb +19 -0
  179. data/test/interopR2/clientEasySoap.rb +14 -0
  180. data/test/interopR2/clientFrontier.rb +25 -0
  181. data/test/interopR2/clientGLUE.rb +32 -0
  182. data/test/interopR2/clientHP.rb +13 -0
  183. data/test/interopR2/clientJAX-RPC.rb +19 -0
  184. data/test/interopR2/clientJSOAP.rb +14 -0
  185. data/test/interopR2/clientKafkaXSLT.rb +15 -0
  186. data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
  187. data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
  188. data/test/interopR2/clientNuSOAP.rb +19 -0
  189. data/test/interopR2/clientNuWave.rb +15 -0
  190. data/test/interopR2/clientOpenLink.rb +15 -0
  191. data/test/interopR2/clientOracle.rb +15 -0
  192. data/test/interopR2/clientPEAR.rb +18 -0
  193. data/test/interopR2/clientPhalanx.rb +18 -0
  194. data/test/interopR2/clientSIMACE.rb +18 -0
  195. data/test/interopR2/clientSOAP4R.rb +18 -0
  196. data/test/interopR2/clientSOAP__Lite.rb +14 -0
  197. data/test/interopR2/clientSQLData.rb +18 -0
  198. data/test/interopR2/clientSilverStream.rb +17 -0
  199. data/test/interopR2/clientSpray2001.rb +17 -0
  200. data/test/interopR2/clientSun.rb +19 -0
  201. data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
  202. data/test/interopR2/clientWASP.rb +19 -0
  203. data/test/interopR2/clientWASPC.rb +18 -0
  204. data/test/interopR2/clientWebMethods.rb +15 -0
  205. data/test/interopR2/clientWhiteMesa.rb +28 -0
  206. data/test/interopR2/clientWingfoot.rb +15 -0
  207. data/test/interopR2/clientXMLBus.rb +19 -0
  208. data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
  209. data/test/interopR2/clientXSOAP.rb +14 -0
  210. data/test/interopR2/clientZSI.rb +19 -0
  211. data/test/interopR2/clienteSOAP.rb +18 -0
  212. data/test/interopR2/clientgSOAP.rb +18 -0
  213. data/test/interopR2/clientkSOAP.rb +17 -0
  214. data/test/interopR2/iSimonReg.rb +112 -0
  215. data/test/interopR2/interopResultBase.rb +114 -0
  216. data/test/interopR2/interopService.rb +247 -0
  217. data/test/interopR2/rwikiInteropService.rb +105 -0
  218. data/test/interopR2/server.cgi +270 -0
  219. data/test/interopR2/server.rb +275 -0
  220. data/test/interopR2/simonReg.rb +123 -0
  221. data/test/interopR2/test.sh +49 -0
  222. data/test/interopR4/client.rb +112 -0
  223. data/test/results +4810 -0
  224. data/test/runner.rb +7 -0
  225. data/test/sm11/classDef.rb +156 -0
  226. data/test/sm11/client.rb +542 -0
  227. data/test/sm11/driver.rb +183 -0
  228. data/test/sm11/servant.rb +1067 -0
  229. data/test/sm11/server.rb +25 -0
  230. data/test/soap/asp.net/hello.wsdl +96 -0
  231. data/test/soap/asp.net/test_aspdotnet.rb +123 -0
  232. data/test/soap/auth/htdigest +2 -0
  233. data/test/soap/auth/htpasswd +2 -0
  234. data/test/soap/auth/test_basic.rb +117 -0
  235. data/test/soap/auth/test_digest.rb +118 -0
  236. data/test/soap/calc/calc.rb +17 -0
  237. data/test/soap/calc/calc2.rb +29 -0
  238. data/test/soap/calc/server.cgi +13 -0
  239. data/test/soap/calc/server.rb +17 -0
  240. data/test/soap/calc/server2.rb +20 -0
  241. data/test/soap/calc/test_calc.rb +51 -0
  242. data/test/soap/calc/test_calc2.rb +55 -0
  243. data/test/soap/calc/test_calc_cgi.rb +71 -0
  244. data/test/soap/case/test_mapping.rb +57 -0
  245. data/test/soap/fault/test_customfault.rb +60 -0
  246. data/test/soap/fault/test_fault.rb +46 -0
  247. data/test/soap/fault/test_soaparray.rb +35 -0
  248. data/test/soap/filter/test_filter.rb +146 -0
  249. data/test/soap/header/server.cgi +119 -0
  250. data/test/soap/header/session.pstoredb +0 -0
  251. data/test/soap/header/test_authheader.rb +240 -0
  252. data/test/soap/header/test_authheader_cgi.rb +121 -0
  253. data/test/soap/header/test_simplehandler.rb +116 -0
  254. data/test/soap/helloworld/hw_s.rb +16 -0
  255. data/test/soap/helloworld/test_helloworld.rb +43 -0
  256. data/test/soap/htpasswd +2 -0
  257. data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
  258. data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
  259. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  260. data/test/soap/literalArrayMapping/test_definedarray.rb +34 -0
  261. data/test/soap/marshal/marshaltestlib.rb +494 -0
  262. data/test/soap/marshal/test_digraph.rb +56 -0
  263. data/test/soap/marshal/test_marshal.rb +26 -0
  264. data/test/soap/marshal/test_struct.rb +47 -0
  265. data/test/soap/ssl/README +1 -0
  266. data/test/soap/ssl/ca.cert +23 -0
  267. data/test/soap/ssl/client.cert +19 -0
  268. data/test/soap/ssl/client.key +15 -0
  269. data/test/soap/ssl/server.cert +19 -0
  270. data/test/soap/ssl/server.key +15 -0
  271. data/test/soap/ssl/sslsvr.rb +57 -0
  272. data/test/soap/ssl/subca.cert +21 -0
  273. data/test/soap/ssl/test_ssl.rb +235 -0
  274. data/test/soap/struct/test_struct.rb +70 -0
  275. data/test/soap/styleuse/client.rb +20 -0
  276. data/test/soap/styleuse/server.rb +86 -0
  277. data/test/soap/swa/test_file.rb +75 -0
  278. data/test/soap/test_basetype.rb +1090 -0
  279. data/test/soap/test_cookie.rb +112 -0
  280. data/test/soap/test_custom_ns.rb +105 -0
  281. data/test/soap/test_custommap.rb +110 -0
  282. data/test/soap/test_empty.rb +105 -0
  283. data/test/soap/test_envelopenamespace.rb +85 -0
  284. data/test/soap/test_extraattr.rb +54 -0
  285. data/test/soap/test_generator.rb +27 -0
  286. data/test/soap/test_httpconfigloader.rb +71 -0
  287. data/test/soap/test_mapping.rb +131 -0
  288. data/test/soap/test_nestedexception.rb +56 -0
  289. data/test/soap/test_nil.rb +57 -0
  290. data/test/soap/test_no_indent.rb +88 -0
  291. data/test/soap/test_property.rb +428 -0
  292. data/test/soap/test_response_as_xml.rb +117 -0
  293. data/test/soap/test_soapelement.rb +138 -0
  294. data/test/soap/test_streamhandler.rb +270 -0
  295. data/test/soap/test_styleuse.rb +326 -0
  296. data/test/soap/wsdlDriver/README.txt +2 -0
  297. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  298. data/test/soap/wsdlDriver/document.wsdl +54 -0
  299. data/test/soap/wsdlDriver/echo_version.rb +29 -0
  300. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  301. data/test/soap/wsdlDriver/test_calc.rb +71 -0
  302. data/test/soap/wsdlDriver/test_document.rb +71 -0
  303. data/test/soap/wsdlDriver/test_simpletype.rb +80 -0
  304. data/test/testutil.rb +54 -0
  305. data/test/wsdl/abstract/abstract.wsdl +176 -0
  306. data/test/wsdl/abstract/test_abstract.rb +159 -0
  307. data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
  308. data/test/wsdl/anonymous/expectedDriver.rb +59 -0
  309. data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
  310. data/test/wsdl/anonymous/lp.wsdl +147 -0
  311. data/test/wsdl/anonymous/test_anonymous.rb +130 -0
  312. data/test/wsdl/any/any.wsdl +114 -0
  313. data/test/wsdl/any/expectedDriver.rb +68 -0
  314. data/test/wsdl/any/expectedEcho.rb +57 -0
  315. data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
  316. data/test/wsdl/any/expectedService.rb +69 -0
  317. data/test/wsdl/any/test_any.rb +193 -0
  318. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  319. data/test/wsdl/axisArray/test_axisarray.rb +124 -0
  320. data/test/wsdl/choice/choice.wsdl +167 -0
  321. data/test/wsdl/choice/test_choice.rb +310 -0
  322. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  323. data/test/wsdl/complexcontent/test_echo.rb +90 -0
  324. data/test/wsdl/datetime/DatetimeService.rb +44 -0
  325. data/test/wsdl/datetime/datetime.rb +0 -0
  326. data/test/wsdl/datetime/datetime.wsdl +45 -0
  327. data/test/wsdl/datetime/datetimeServant.rb +22 -0
  328. data/test/wsdl/datetime/test_datetime.rb +86 -0
  329. data/test/wsdl/document/array/double.wsdl +161 -0
  330. data/test/wsdl/document/array/test_array.rb +201 -0
  331. data/test/wsdl/document/document.wsdl +76 -0
  332. data/test/wsdl/document/number.wsdl +54 -0
  333. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  334. data/test/wsdl/document/test_nosoapaction.rb +102 -0
  335. data/test/wsdl/document/test_number.rb +92 -0
  336. data/test/wsdl/document/test_rpc.rb +355 -0
  337. data/test/wsdl/emptycomplextype.wsdl +31 -0
  338. data/test/wsdl/fault/fault.wsdl +79 -0
  339. data/test/wsdl/fault/multifault.wsdl +96 -0
  340. data/test/wsdl/fault/test_fault.rb +119 -0
  341. data/test/wsdl/fault/test_multifault.rb +134 -0
  342. data/test/wsdl/group/expectedClassdef.rb +58 -0
  343. data/test/wsdl/group/expectedDriver.rb +51 -0
  344. data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
  345. data/test/wsdl/group/group.wsdl +88 -0
  346. data/test/wsdl/group/test_rpc.rb +145 -0
  347. data/test/wsdl/list/list.wsdl +93 -0
  348. data/test/wsdl/list/test_list.rb +124 -0
  349. data/test/wsdl/map/map.wsdl +92 -0
  350. data/test/wsdl/map/map.xml +43 -0
  351. data/test/wsdl/map/test_map.rb +99 -0
  352. data/test/wsdl/marshal/Person.rb +1 -0
  353. data/test/wsdl/marshal/person.wsdl +21 -0
  354. data/test/wsdl/marshal/person_org.rb +23 -0
  355. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  356. data/test/wsdl/multiplefault.wsdl +75 -0
  357. data/test/wsdl/oneway/oneway.wsdl +36 -0
  358. data/test/wsdl/oneway/test_oneway.rb +108 -0
  359. data/test/wsdl/overload/expectedClient.rb +37 -0
  360. data/test/wsdl/overload/expectedDriver.rb +61 -0
  361. data/test/wsdl/overload/expectedServant.rb +35 -0
  362. data/test/wsdl/overload/overload.wsdl +70 -0
  363. data/test/wsdl/overload/test_overload.rb +131 -0
  364. data/test/wsdl/qualified/lp.wsdl +47 -0
  365. data/test/wsdl/qualified/lp.xsd +26 -0
  366. data/test/wsdl/qualified/np.wsdl +51 -0
  367. data/test/wsdl/qualified/test_qualified.rb +137 -0
  368. data/test/wsdl/qualified/test_unqualified.rb +138 -0
  369. data/test/wsdl/raa/RAAService.rb +125 -0
  370. data/test/wsdl/raa/README.txt +8 -0
  371. data/test/wsdl/raa/expectedClassDef.rb +100 -0
  372. data/test/wsdl/raa/expectedDriver.rb +96 -0
  373. data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
  374. data/test/wsdl/raa/raa.wsdl +264 -0
  375. data/test/wsdl/raa/test_raa.rb +126 -0
  376. data/test/wsdl/ref/expectedDriver.rb +51 -0
  377. data/test/wsdl/ref/expectedProduct.rb +243 -0
  378. data/test/wsdl/ref/product.wsdl +147 -0
  379. data/test/wsdl/ref/test_ref.rb +268 -0
  380. data/test/wsdl/rpc/rpc.wsdl +109 -0
  381. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  382. data/test/wsdl/rpc/test_rpc.rb +176 -0
  383. data/test/wsdl/rpc/test_rpc_lit.rb +470 -0
  384. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  385. data/test/wsdl/simplecontent/test_simplecontent.rb +102 -0
  386. data/test/wsdl/simpletype/rpc/echo_version.rb +1 -0
  387. data/test/wsdl/simpletype/rpc/echo_versionDriver.rb +10 -0
  388. data/test/wsdl/simpletype/rpc/echo_versionMappingRegistry.rb +4 -0
  389. data/test/wsdl/simpletype/rpc/echo_versionServant.rb +3 -0
  390. data/test/wsdl/simpletype/rpc/echo_version_service.rb +3 -0
  391. data/test/wsdl/simpletype/rpc/echo_version_serviceClient.rb +34 -0
  392. data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
  393. data/test/wsdl/simpletype/rpc/expectedDriver.rb +58 -0
  394. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +36 -0
  395. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +57 -0
  396. data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
  397. data/test/wsdl/simpletype/rpc/expectedService.rb +55 -0
  398. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  399. data/test/wsdl/simpletype/rpc/test_rpc.rb +52 -0
  400. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  401. data/test/wsdl/simpletype/test_simpletype.rb +92 -0
  402. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  403. data/test/wsdl/soap/test_soapbodyparts.rb +79 -0
  404. data/test/wsdl/soap/wsdl2ruby/echo_version.rb +1 -0
  405. data/test/wsdl/soap/wsdl2ruby/echo_versionDriver.rb +10 -0
  406. data/test/wsdl/soap/wsdl2ruby/echo_versionMappingRegistry.rb +4 -0
  407. data/test/wsdl/soap/wsdl2ruby/echo_versionServant.rb +3 -0
  408. data/test/wsdl/soap/wsdl2ruby/echo_version_service.cgi +3 -0
  409. data/test/wsdl/soap/wsdl2ruby/echo_version_service.rb +7 -0
  410. data/test/wsdl/soap/wsdl2ruby/echo_version_serviceClient.rb +34 -0
  411. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +21 -0
  412. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
  413. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +58 -0
  414. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +36 -0
  415. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
  416. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +48 -0
  417. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +55 -0
  418. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  419. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +37 -0
  420. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  421. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +53 -0
  422. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  423. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +83 -0
  424. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +102 -0
  425. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  426. data/test/wsdl/soaptype/test_soaptype.rb +178 -0
  427. data/test/wsdl/test_emptycomplextype.rb +21 -0
  428. data/test/wsdl/test_fault.rb +50 -0
  429. data/test/wsdl/test_multiplefault.rb +41 -0
  430. data/test/xsd/codegen/test_classdef.rb +244 -0
  431. data/test/xsd/noencoding.xml +4 -0
  432. data/test/xsd/test_noencoding.rb +32 -0
  433. data/test/xsd/test_ns.rb +41 -0
  434. data/test/xsd/test_xmlschemaparser.rb +22 -0
  435. data/test/xsd/test_xsd.rb +1638 -0
  436. data/test/xsd/xmllang.xml +43 -0
  437. data/test/xsd/xmlschema.xml +12 -0
  438. data/test/xsd/xsd2ruby/expected_mysample.rb +65 -0
  439. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +11 -0
  440. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +51 -0
  441. data/test/xsd/xsd2ruby/section.xsd +49 -0
  442. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +90 -0
  443. metadata +568 -0
@@ -0,0 +1,87 @@
1
+ # WSDL4R - XMLSchema simpleType definition for WSDL.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'wsdl/info'
10
+ require 'xsd/namedelements'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class SimpleType < Info
18
+ attr_accessor :name
19
+ attr_reader :restriction
20
+ attr_reader :list
21
+ attr_reader :union
22
+
23
+ def check_lexical_format(value)
24
+ if @restriction
25
+ check_restriction(value)
26
+ elsif @list
27
+ # TODO: check
28
+ elsif @union
29
+ # TODO: check
30
+ else
31
+ raise ArgumentError.new("incomplete simpleType")
32
+ end
33
+ end
34
+
35
+ def base
36
+ if @restriction
37
+ @restriction.base
38
+ else
39
+ nil
40
+ end
41
+ end
42
+
43
+ def initialize(name = nil)
44
+ super()
45
+ @name = name
46
+ @restriction = nil
47
+ @list = nil
48
+ @union = nil
49
+ end
50
+
51
+ def targetnamespace
52
+ parent.targetnamespace
53
+ end
54
+
55
+ def parse_element(element)
56
+ case element
57
+ when RestrictionName
58
+ @restriction = SimpleRestriction.new
59
+ @restriction
60
+ when ListName
61
+ @list = List.new
62
+ @list
63
+ when UnionName
64
+ @union = Union.new
65
+ @union
66
+ end
67
+ end
68
+
69
+ def parse_attr(attr, value)
70
+ case attr
71
+ when NameAttrName
72
+ @name = XSD::QName.new(targetnamespace, value.source)
73
+ end
74
+ end
75
+
76
+ private
77
+
78
+ def check_restriction(value)
79
+ unless @restriction.valid?(value)
80
+ raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
81
+ end
82
+ end
83
+ end
84
+
85
+
86
+ end
87
+ end
@@ -0,0 +1,37 @@
1
+ # WSDL4R - XMLSchema totalDigits definition for WSDL.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class TotalDigits < Info
17
+ def initialize
18
+ super
19
+ end
20
+
21
+ def parse_element(element)
22
+ nil
23
+ end
24
+
25
+ def parse_attr(attr, value)
26
+ case attr
27
+ when FixedAttrName
28
+ parent.fixed[:totaldigits] = to_boolean(value)
29
+ when ValueAttrName
30
+ parent.totaldigits = to_int(value)
31
+ end
32
+ end
33
+ end
34
+
35
+
36
+ end
37
+ end
@@ -0,0 +1,35 @@
1
+ # WSDL4R - XMLSchema union definition for WSDL.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'wsdl/info'
10
+ require 'xsd/namedelements'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class Union < Info
18
+ attr_reader :member_types
19
+
20
+ def initialize
21
+ super
22
+ @member_types = nil
23
+ end
24
+
25
+ def parse_attr(attr, value)
26
+ case attr
27
+ when MemberTypesAttrName
28
+ @member_types = value.source
29
+ end
30
+ end
31
+ end
32
+
33
+
34
+ end
35
+ end
@@ -0,0 +1,34 @@
1
+ # WSDL4R - XMLSchema unique element.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class Unique < Info
17
+ def initialize
18
+ super
19
+ end
20
+
21
+ def parse_element(element)
22
+ # Accepts any element.
23
+ self
24
+ end
25
+
26
+ def parse_attr(attr, value)
27
+ # Accepts any attribute.
28
+ true
29
+ end
30
+ end
31
+
32
+
33
+ end
34
+ end
@@ -0,0 +1,37 @@
1
+ # WSDL4R - XMLSchema whiteSpace definition for WSDL.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class WhiteSpace < Info
17
+ def initialize
18
+ super
19
+ end
20
+
21
+ def parse_element(element)
22
+ nil
23
+ end
24
+
25
+ def parse_attr(attr, value)
26
+ case attr
27
+ when FixedAttrName
28
+ parent.fixed[:whitespace] = to_boolean(value)
29
+ when ValueAttrName
30
+ parent.whitespace = value.source
31
+ end
32
+ end
33
+ end
34
+
35
+
36
+ end
37
+ end
@@ -0,0 +1,174 @@
1
+ # XSD4R - XSD to ruby mapping library.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'xsd/codegen/gensupport'
10
+ require 'wsdl/xmlSchema/importer'
11
+ require 'wsdl/soap/classDefCreator'
12
+ require 'wsdl/soap/classDefCreatorSupport'
13
+ require 'wsdl/soap/literalMappingRegistryCreator'
14
+ require 'wsdl/soap/classNameCreator'
15
+ require 'logger'
16
+
17
+
18
+ module WSDL
19
+ module XMLSchema
20
+
21
+
22
+ class XSD2Ruby
23
+ include WSDL::SOAP::ClassDefCreatorSupport
24
+
25
+ attr_accessor :location
26
+ attr_reader :opt
27
+ attr_accessor :logger
28
+ attr_accessor :basedir
29
+
30
+ def run
31
+ unless @location
32
+ raise RuntimeError, "XML Schema location not given"
33
+ end
34
+ @xsd = import(@location)
35
+ @name = @opt['classdef'] || create_classname(@xsd)
36
+ create_file
37
+ end
38
+
39
+ private
40
+
41
+ def initialize
42
+ @location = nil
43
+ @opt = {}
44
+ @logger = Logger.new(STDERR)
45
+ @basedir = nil
46
+ @xsd = nil
47
+ @name = nil
48
+ @name_creator = WSDL::SOAP::ClassNameCreator.new
49
+ end
50
+
51
+ def create_file
52
+ @modulepath = @opt['module_path']
53
+ create_classdef if @opt.key?('classdef')
54
+ create_mapping_registry if @opt.key?('mapping_registry')
55
+ create_mapper if @opt.key?('mapper')
56
+ end
57
+
58
+ def create_classdef
59
+ @logger.info { "Creating class definition." }
60
+ @classdef_filename = @name + '.rb'
61
+ check_file(@classdef_filename) or return
62
+ write_file(@classdef_filename) do |f|
63
+ f << WSDL::SOAP::ClassDefCreator.new(@xsd, @name_creator, @modulepath).dump
64
+ end
65
+ end
66
+
67
+ def create_mapping_registry
68
+ @logger.info { "Creating mapping registry definition." }
69
+ @mr_filename = @name + '_mapping_registry.rb'
70
+ check_file(@mr_filename) or return
71
+ write_file(@mr_filename) do |f|
72
+ f << dump_mapping_registry
73
+ end
74
+ end
75
+
76
+ def create_mapper
77
+ @logger.info { "Creating mapper definition." }
78
+ @mapper_filename = @name + '_mapper.rb'
79
+ check_file(@mapper_filename) or return
80
+ write_file(@mapper_filename) do |f|
81
+ f << dump_mapper
82
+ end
83
+ end
84
+
85
+ def dump_mapping_registry
86
+ defined_const = {}
87
+ creator = WSDL::SOAP::LiteralMappingRegistryCreator.new(@xsd, @name_creator, @modulepath, defined_const)
88
+ module_name = XSD::CodeGen::GenSupport.safeconstname(@name + 'MappingRegistry')
89
+ if @modulepath
90
+ module_name = [@modulepath, module_name].join('::')
91
+ end
92
+ m = XSD::CodeGen::ModuleDef.new(module_name)
93
+ m.def_require("xsd/mapping")
94
+ m.def_require("#{@classdef_filename}")
95
+ varname = 'Registry'
96
+ m.def_const(varname, '::SOAP::Mapping::LiteralRegistry.new')
97
+ m.def_code(creator.dump(varname))
98
+ #
99
+ defined_const.each do |ns, tag|
100
+ m.def_const(tag, dq(ns))
101
+ end
102
+ m.dump
103
+ end
104
+
105
+ def dump_mapper
106
+ class_name = XSD::CodeGen::GenSupport.safeconstname(@name + 'Mapper')
107
+ if @modulepath
108
+ class_name = [@modulepath, class_name].join('::')
109
+ end
110
+ mr_name = XSD::CodeGen::GenSupport.safeconstname(@name + 'MappingRegistry')
111
+ c = XSD::CodeGen::ClassDef.new(class_name, 'XSD::Mapping::Mapper')
112
+ c.def_require("#{@mr_filename}")
113
+ c.def_method("initialize") do
114
+ "super(#{mr_name}::Registry)"
115
+ end
116
+ c.dump
117
+ end
118
+
119
+ def write_file(filename)
120
+ if @basedir
121
+ filename = File.join(basedir, filename)
122
+ end
123
+ File.open(filename, "w") do |f|
124
+ yield f
125
+ end
126
+ end
127
+
128
+ def check_file(filename)
129
+ if @basedir
130
+ filename = File.join(basedir, filename)
131
+ end
132
+ if FileTest.exist?(filename)
133
+ if @opt.key?('force')
134
+ @logger.warn {
135
+ "File '#{filename}' exists but overrides it."
136
+ }
137
+ true
138
+ else
139
+ @logger.warn {
140
+ "File '#{filename}' exists. #{$0} did not override it."
141
+ }
142
+ false
143
+ end
144
+ else
145
+ @logger.info { "Creates file '#{filename}'." }
146
+ true
147
+ end
148
+ end
149
+
150
+ def create_classname(xsd)
151
+ name = nil
152
+ if xsd.targetnamespace
153
+ name = xsd.targetnamespace.scan(/[a-zA-Z0-9]+$/)[0]
154
+ end
155
+ if name.nil?
156
+ 'default'
157
+ else
158
+ XSD::CodeGen::GenSupport.safevarname(name)
159
+ end
160
+ end
161
+
162
+ def import(location)
163
+ WSDL::XMLSchema::Importer.import(location)
164
+ end
165
+ end
166
+
167
+
168
+ end
169
+ end
170
+
171
+
172
+ if __FILE__ == $0
173
+ warn("WARNING: #{File.expand_path(__FILE__)} is a library file used by bin/xsd2ruby.rb. Find bin/xsd2ruby.rb from tarball version of soap4r or install soap4r via gem.")
174
+ end
@@ -0,0 +1,188 @@
1
+ # XSD4R - Charset handling library.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ module XSD
10
+
11
+
12
+ module Charset
13
+ @internal_encoding = "UTF8" #$KCODE
14
+
15
+ class XSDError < StandardError; end
16
+ class CharsetError < XSDError; end
17
+ class UnknownCharsetError < CharsetError; end
18
+ class CharsetConversionError < CharsetError; end
19
+
20
+ public
21
+
22
+ ###
23
+ ## Maps
24
+ #
25
+ EncodingConvertMap = {}
26
+ def Charset.init
27
+ EncodingConvertMap[['UTF8', 'X_ISO_8859_1']] =
28
+ Proc.new { |str| str.unpack('U*').pack('C*') }
29
+ EncodingConvertMap[['X_ISO_8859_1', 'UTF8']] =
30
+ Proc.new { |str| str.unpack('C*').pack('U*') }
31
+ begin
32
+ require 'xsd/iconvcharset'
33
+ @internal_encoding = 'UTF8'
34
+ sjtag = (/(mswin|bccwin|mingw|cygwin|emx)/ =~ RUBY_PLATFORM) ? 'cp932' :
35
+ 'shift_jis'
36
+ EncodingConvertMap[['UTF8', 'EUC' ]] =
37
+ Proc.new { |str| IconvCharset.safe_iconv("euc-jp", "utf-8", str) }
38
+ EncodingConvertMap[['EUC' , 'UTF8']] =
39
+ Proc.new { |str| IconvCharset.safe_iconv("utf-8", "euc-jp", str) }
40
+ EncodingConvertMap[['EUC' , 'SJIS']] =
41
+ Proc.new { |str| IconvCharset.safe_iconv(sjtag, "euc-jp", str) }
42
+ EncodingConvertMap[['UTF8', 'SJIS']] =
43
+ Proc.new { |str| IconvCharset.safe_iconv(sjtag, "utf-8", str) }
44
+ EncodingConvertMap[['SJIS', 'UTF8']] =
45
+ Proc.new { |str| IconvCharset.safe_iconv("utf-8", sjtag, str) }
46
+ EncodingConvertMap[['SJIS', 'EUC' ]] =
47
+ Proc.new { |str| IconvCharset.safe_iconv("euc-jp", sjtag, str) }
48
+ rescue LoadError
49
+ begin
50
+ require 'nkf'
51
+ EncodingConvertMap[['EUC' , 'SJIS']] =
52
+ Proc.new { |str| NKF.nkf('-sXm0', str) }
53
+ EncodingConvertMap[['SJIS', 'EUC' ]] =
54
+ Proc.new { |str| NKF.nkf('-eXm0', str) }
55
+ rescue LoadError
56
+ end
57
+
58
+ begin
59
+ require 'uconv'
60
+ @internal_encoding = 'UTF8'
61
+ EncodingConvertMap[['UTF8', 'EUC' ]] = Uconv.method(:u8toeuc)
62
+ EncodingConvertMap[['UTF8', 'SJIS']] = Uconv.method(:u8tosjis)
63
+ EncodingConvertMap[['EUC' , 'UTF8']] = Uconv.method(:euctou8)
64
+ EncodingConvertMap[['SJIS', 'UTF8']] = Uconv.method(:sjistou8)
65
+ rescue LoadError
66
+ end
67
+ end
68
+ end
69
+ self.init
70
+
71
+ CharsetMap = {
72
+ 'NONE' => 'us-ascii',
73
+ 'EUC' => 'euc-jp',
74
+ 'SJIS' => 'shift_jis',
75
+ 'UTF8' => 'utf-8',
76
+ 'X_ISO_8859_1' => 'iso-8859-1',
77
+ 'X_UNKNOWN' => nil,
78
+ }
79
+
80
+ CharsetStrCache = {}
81
+
82
+
83
+ ###
84
+ ## handlers
85
+ #
86
+ def Charset.encoding
87
+ @internal_encoding
88
+ end
89
+
90
+ def Charset.encoding=(encoding)
91
+ warn("xsd charset is set to #{encoding}") if $DEBUG
92
+ @internal_encoding = encoding
93
+ end
94
+
95
+ def Charset.xml_encoding_label
96
+ charset_label(@internal_encoding)
97
+ end
98
+
99
+ def Charset.encoding_to_xml(str, charset)
100
+ encoding_conv(str, @internal_encoding, charset_str(charset))
101
+ end
102
+
103
+ def Charset.encoding_from_xml(str, charset)
104
+ encoding_conv(str, charset_str(charset), @internal_encoding)
105
+ end
106
+
107
+ def Charset.encoding_conv(str, enc_from, enc_to)
108
+ if enc_from == enc_to or enc_from == 'NONE' or enc_to == 'NONE'
109
+ str
110
+ elsif converter = EncodingConvertMap[[enc_from, enc_to]]
111
+ converter.call(str)
112
+ else
113
+ raise CharsetConversionError.new(
114
+ "Converter not found: #{enc_from} -> #{enc_to}")
115
+ end
116
+ end
117
+
118
+ def Charset.charset_label(encoding)
119
+ CharsetMap[encoding.upcase]
120
+ end
121
+
122
+ def Charset.charset_str(label)
123
+ if CharsetMap.respond_to?(:key)
124
+ CharsetStrCache[label] ||= CharsetMap.key(label.downcase) || 'X_UNKNOWN'
125
+ else
126
+ CharsetStrCache[label] ||= CharsetMap.index(label.downcase) || 'X_UNKNOWN'
127
+ end
128
+ end
129
+
130
+ # us_ascii = '[\x00-\x7F]'
131
+ us_ascii = '[\x9\xa\xd\x20-\x7F]' # XML 1.0 restricted.
132
+ USASCIIRegexp = Regexp.new("\\A#{us_ascii}*\\z")
133
+
134
+ twobytes_euc = '(?:[\x8E\xA1-\xFE][\xA1-\xFE])'
135
+ threebytes_euc = '(?:\x8F[\xA1-\xFE][\xA1-\xFE])'
136
+ character_euc = "(?:#{us_ascii}|#{twobytes_euc}|#{threebytes_euc})"
137
+ EUCRegexp = Regexp.new("\\A#{character_euc}*\\z", nil, 'n')
138
+
139
+ # onebyte_sjis = '[\x00-\x7F\xA1-\xDF]'
140
+ onebyte_sjis = '[\x9\xa\xd\x20-\x7F\xA1-\xDF]' # XML 1.0 restricted.
141
+ twobytes_sjis = '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'
142
+ character_sjis = "(?:#{onebyte_sjis}|#{twobytes_sjis})"
143
+ SJISRegexp = Regexp.new("\\A#{character_sjis}*\\z", nil, 'n')
144
+
145
+ # 0xxxxxxx
146
+ # 110yyyyy 10xxxxxx
147
+ twobytes_utf8 = '(?:[\xC0-\xDF][\x80-\xBF])'
148
+ # 1110zzzz 10yyyyyy 10xxxxxx
149
+ threebytes_utf8 = '(?:[\xE0-\xEF][\x80-\xBF][\x80-\xBF])'
150
+ # 11110uuu 10uuuzzz 10yyyyyy 10xxxxxx
151
+ fourbytes_utf8 = '(?:[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF])'
152
+ character_utf8 = "(?:#{us_ascii}|#{twobytes_utf8}|#{threebytes_utf8}|#{fourbytes_utf8})"
153
+ UTF8Regexp = Regexp.new("\\A#{character_utf8}*\\z", nil, 'n')
154
+
155
+ def Charset.is_us_ascii(str)
156
+ USASCIIRegexp =~ str
157
+ end
158
+
159
+ def Charset.is_utf8(str)
160
+ UTF8Regexp =~ str
161
+ end
162
+
163
+ def Charset.is_euc(str)
164
+ EUCRegexp =~ str
165
+ end
166
+
167
+ def Charset.is_sjis(str)
168
+ SJISRegexp =~ str
169
+ end
170
+
171
+ def Charset.is_ces(str, code = @internal_encoding)
172
+ case code
173
+ when 'NONE'
174
+ is_us_ascii(str)
175
+ when 'UTF8'
176
+ is_utf8(str)
177
+ when 'EUC'
178
+ is_euc(str)
179
+ when 'SJIS'
180
+ is_sjis(str)
181
+ else
182
+ raise UnknownCharsetError.new("Unknown charset: #{code}")
183
+ end
184
+ end
185
+ end
186
+
187
+
188
+ end