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.
- data/bin/wsdl2ruby.rb +137 -0
- data/bin/xsd2ruby.rb +90 -0
- data/lib/soap/attachment.rb +108 -0
- data/lib/soap/attrproxy.rb +34 -0
- data/lib/soap/baseData.rb +1094 -0
- data/lib/soap/element.rb +277 -0
- data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
- data/lib/soap/encodingstyle/handler.rb +120 -0
- data/lib/soap/encodingstyle/literalHandler.rb +195 -0
- data/lib/soap/encodingstyle/soapHandler.rb +559 -0
- data/lib/soap/filter.rb +13 -0
- data/lib/soap/filter/filterchain.rb +51 -0
- data/lib/soap/filter/handler.rb +31 -0
- data/lib/soap/filter/streamhandler.rb +29 -0
- data/lib/soap/generator.rb +299 -0
- data/lib/soap/header/handler.rb +61 -0
- data/lib/soap/header/handlerset.rb +70 -0
- data/lib/soap/header/mappinghandler.rb +47 -0
- data/lib/soap/header/simplehandler.rb +44 -0
- data/lib/soap/httpconfigloader.rb +139 -0
- data/lib/soap/mapping.rb +12 -0
- data/lib/soap/mapping/encodedregistry.rb +537 -0
- data/lib/soap/mapping/factory.rb +388 -0
- data/lib/soap/mapping/literalregistry.rb +391 -0
- data/lib/soap/mapping/mapping.rb +577 -0
- data/lib/soap/mapping/registry.rb +295 -0
- data/lib/soap/mapping/rubytypeFactory.rb +446 -0
- data/lib/soap/mapping/schemadefinition.rb +170 -0
- data/lib/soap/mapping/typeMap.rb +106 -0
- data/lib/soap/mapping/wsdlencodedregistry.rb +211 -0
- data/lib/soap/mapping/wsdlliteralregistry.rb +248 -0
- data/lib/soap/marshal.rb +59 -0
- data/lib/soap/mimemessage.rb +241 -0
- data/lib/soap/nestedexception.rb +42 -0
- data/lib/soap/netHttpClient.rb +241 -0
- data/lib/soap/ns.rb +34 -0
- data/lib/soap/parser.rb +252 -0
- data/lib/soap/processor.rb +66 -0
- data/lib/soap/property.rb +333 -0
- data/lib/soap/proxy.rb +14 -0
- data/lib/soap/rpc/cgistub.rb +247 -0
- data/lib/soap/rpc/driver.rb +221 -0
- data/lib/soap/rpc/element.rb +374 -0
- data/lib/soap/rpc/element.rb.orig +374 -0
- data/lib/soap/rpc/httpserver.rb +142 -0
- data/lib/soap/rpc/methodDef.rb +68 -0
- data/lib/soap/rpc/proxy.rb +572 -0
- data/lib/soap/rpc/router.rb +662 -0
- data/lib/soap/rpc/rpc.rb +25 -0
- data/lib/soap/rpc/soaplet.rb +200 -0
- data/lib/soap/rpc/standaloneServer.rb +43 -0
- data/lib/soap/soap.rb +151 -0
- data/lib/soap/streamHandler.rb +301 -0
- data/lib/soap/wsdlDriver.rb +164 -0
- data/lib/wsdl/binding.rb +65 -0
- data/lib/wsdl/data.rb +64 -0
- data/lib/wsdl/definitions.rb +236 -0
- data/lib/wsdl/documentation.rb +32 -0
- data/lib/wsdl/import.rb +80 -0
- data/lib/wsdl/importer.rb +38 -0
- data/lib/wsdl/info.rb +50 -0
- data/lib/wsdl/message.rb +54 -0
- data/lib/wsdl/operation.rb +151 -0
- data/lib/wsdl/operationBinding.rb +240 -0
- data/lib/wsdl/param.rb +93 -0
- data/lib/wsdl/parser.rb +164 -0
- data/lib/wsdl/part.rb +52 -0
- data/lib/wsdl/port.rb +66 -0
- data/lib/wsdl/portType.rb +75 -0
- data/lib/wsdl/service.rb +61 -0
- data/lib/wsdl/soap/address.rb +40 -0
- data/lib/wsdl/soap/binding.rb +49 -0
- data/lib/wsdl/soap/body.rb +58 -0
- data/lib/wsdl/soap/cgiStubCreator.rb +92 -0
- data/lib/wsdl/soap/classDefCreator.rb +433 -0
- data/lib/wsdl/soap/classDefCreatorSupport.rb +240 -0
- data/lib/wsdl/soap/classNameCreator.rb +54 -0
- data/lib/wsdl/soap/clientSkeltonCreator.rb +104 -0
- data/lib/wsdl/soap/complexType.rb +173 -0
- data/lib/wsdl/soap/data.rb +42 -0
- data/lib/wsdl/soap/definitions.rb +200 -0
- data/lib/wsdl/soap/driverCreator.rb +118 -0
- data/lib/wsdl/soap/element.rb +33 -0
- data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +73 -0
- data/lib/wsdl/soap/fault.rb +56 -0
- data/lib/wsdl/soap/header.rb +86 -0
- data/lib/wsdl/soap/headerfault.rb +56 -0
- data/lib/wsdl/soap/literalMappingRegistryCreator.rb +115 -0
- data/lib/wsdl/soap/mappingRegistryCreator.rb +58 -0
- data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +376 -0
- data/lib/wsdl/soap/methodDefCreator.rb +199 -0
- data/lib/wsdl/soap/operation.rb +112 -0
- data/lib/wsdl/soap/servantSkeltonCreator.rb +89 -0
- data/lib/wsdl/soap/servletStubCreator.rb +104 -0
- data/lib/wsdl/soap/standaloneServerStubCreator.rb +100 -0
- data/lib/wsdl/soap/wsdl2ruby.rb +217 -0
- data/lib/wsdl/types.rb +44 -0
- data/lib/wsdl/wsdl.rb +24 -0
- data/lib/wsdl/xmlSchema/all.rb +24 -0
- data/lib/wsdl/xmlSchema/annotation.rb +34 -0
- data/lib/wsdl/xmlSchema/any.rb +61 -0
- data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
- data/lib/wsdl/xmlSchema/attribute.rb +104 -0
- data/lib/wsdl/xmlSchema/attributeGroup.rb +68 -0
- data/lib/wsdl/xmlSchema/choice.rb +58 -0
- data/lib/wsdl/xmlSchema/complexContent.rb +97 -0
- data/lib/wsdl/xmlSchema/complexExtension.rb +119 -0
- data/lib/wsdl/xmlSchema/complexRestriction.rb +104 -0
- data/lib/wsdl/xmlSchema/complexType.rb +193 -0
- data/lib/wsdl/xmlSchema/content.rb +95 -0
- data/lib/wsdl/xmlSchema/data.rb +116 -0
- data/lib/wsdl/xmlSchema/element.rb +153 -0
- data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
- data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
- data/lib/wsdl/xmlSchema/group.rb +100 -0
- data/lib/wsdl/xmlSchema/import.rb +53 -0
- data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
- data/lib/wsdl/xmlSchema/importer.rb +102 -0
- data/lib/wsdl/xmlSchema/include.rb +48 -0
- data/lib/wsdl/xmlSchema/length.rb +37 -0
- data/lib/wsdl/xmlSchema/list.rb +48 -0
- data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/maxlength.rb +37 -0
- data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/minlength.rb +37 -0
- data/lib/wsdl/xmlSchema/parser.rb +167 -0
- data/lib/wsdl/xmlSchema/pattern.rb +36 -0
- data/lib/wsdl/xmlSchema/ref.rb +33 -0
- data/lib/wsdl/xmlSchema/schema.rb +178 -0
- data/lib/wsdl/xmlSchema/sequence.rb +54 -0
- data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
- data/lib/wsdl/xmlSchema/simpleExtension.rb +62 -0
- data/lib/wsdl/xmlSchema/simpleRestriction.rb +132 -0
- data/lib/wsdl/xmlSchema/simpleType.rb +87 -0
- data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
- data/lib/wsdl/xmlSchema/union.rb +35 -0
- data/lib/wsdl/xmlSchema/unique.rb +34 -0
- data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
- data/lib/wsdl/xmlSchema/xsd2ruby.rb +174 -0
- data/lib/xsd/charset.rb +188 -0
- data/lib/xsd/codegen.rb +12 -0
- data/lib/xsd/codegen/classdef.rb +208 -0
- data/lib/xsd/codegen/commentdef.rb +34 -0
- data/lib/xsd/codegen/gensupport.rb +273 -0
- data/lib/xsd/codegen/methoddef.rb +70 -0
- data/lib/xsd/codegen/moduledef.rb +208 -0
- data/lib/xsd/datatypes.rb +1466 -0
- data/lib/xsd/datatypes1999.rb +20 -0
- data/lib/xsd/iconvcharset.rb +33 -0
- data/lib/xsd/mapping.rb +68 -0
- data/lib/xsd/namedelements.rb +132 -0
- data/lib/xsd/ns.rb +182 -0
- data/lib/xsd/qname.rb +79 -0
- data/lib/xsd/xmlparser.rb +76 -0
- data/lib/xsd/xmlparser.rb.orig +76 -0
- data/lib/xsd/xmlparser/libxmlparser.rb +119 -0
- data/lib/xsd/xmlparser/parser.rb +100 -0
- data/lib/xsd/xmlparser/rexmlparser.rb +58 -0
- data/lib/xsd/xmlparser/xmlparser.rb +50 -0
- data/lib/xsd/xmlparser/xmlscanner.rb +149 -0
- data/test/16runner.rb +68 -0
- data/test/interopR2/README.txt +2 -0
- data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
- data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
- data/test/interopR2/base.rb +288 -0
- data/test/interopR2/client.NetRemoting.rb +17 -0
- data/test/interopR2/client.rb +1234 -0
- data/test/interopR2/client4S4C.rb +15 -0
- data/test/interopR2/client4S4C2.rb +14 -0
- data/test/interopR2/clientASP.NET.rb +17 -0
- data/test/interopR2/clientApacheAxis.rb +16 -0
- data/test/interopR2/clientApacheSOAP.rb +17 -0
- data/test/interopR2/clientBEAWebLogic.rb +17 -0
- data/test/interopR2/clientBase.rb +1967 -0
- data/test/interopR2/clientCapeConnect.rb +18 -0
- data/test/interopR2/clientDelphi.rb +19 -0
- data/test/interopR2/clientEasySoap.rb +14 -0
- data/test/interopR2/clientFrontier.rb +25 -0
- data/test/interopR2/clientGLUE.rb +32 -0
- data/test/interopR2/clientHP.rb +13 -0
- data/test/interopR2/clientJAX-RPC.rb +19 -0
- data/test/interopR2/clientJSOAP.rb +14 -0
- data/test/interopR2/clientKafkaXSLT.rb +15 -0
- data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
- data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
- data/test/interopR2/clientNuSOAP.rb +19 -0
- data/test/interopR2/clientNuWave.rb +15 -0
- data/test/interopR2/clientOpenLink.rb +15 -0
- data/test/interopR2/clientOracle.rb +15 -0
- data/test/interopR2/clientPEAR.rb +18 -0
- data/test/interopR2/clientPhalanx.rb +18 -0
- data/test/interopR2/clientSIMACE.rb +18 -0
- data/test/interopR2/clientSOAP4R.rb +18 -0
- data/test/interopR2/clientSOAP__Lite.rb +14 -0
- data/test/interopR2/clientSQLData.rb +18 -0
- data/test/interopR2/clientSilverStream.rb +17 -0
- data/test/interopR2/clientSpray2001.rb +17 -0
- data/test/interopR2/clientSun.rb +19 -0
- data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
- data/test/interopR2/clientWASP.rb +19 -0
- data/test/interopR2/clientWASPC.rb +18 -0
- data/test/interopR2/clientWebMethods.rb +15 -0
- data/test/interopR2/clientWhiteMesa.rb +28 -0
- data/test/interopR2/clientWingfoot.rb +15 -0
- data/test/interopR2/clientXMLBus.rb +19 -0
- data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
- data/test/interopR2/clientXSOAP.rb +14 -0
- data/test/interopR2/clientZSI.rb +19 -0
- data/test/interopR2/clienteSOAP.rb +18 -0
- data/test/interopR2/clientgSOAP.rb +18 -0
- data/test/interopR2/clientkSOAP.rb +17 -0
- data/test/interopR2/iSimonReg.rb +112 -0
- data/test/interopR2/interopResultBase.rb +114 -0
- data/test/interopR2/interopService.rb +247 -0
- data/test/interopR2/rwikiInteropService.rb +105 -0
- data/test/interopR2/server.cgi +270 -0
- data/test/interopR2/server.rb +275 -0
- data/test/interopR2/simonReg.rb +123 -0
- data/test/interopR2/test.sh +49 -0
- data/test/interopR4/client.rb +112 -0
- data/test/results +4810 -0
- data/test/runner.rb +7 -0
- data/test/sm11/classDef.rb +156 -0
- data/test/sm11/client.rb +542 -0
- data/test/sm11/driver.rb +183 -0
- data/test/sm11/servant.rb +1067 -0
- data/test/sm11/server.rb +25 -0
- data/test/soap/asp.net/hello.wsdl +96 -0
- data/test/soap/asp.net/test_aspdotnet.rb +123 -0
- data/test/soap/auth/htdigest +2 -0
- data/test/soap/auth/htpasswd +2 -0
- data/test/soap/auth/test_basic.rb +117 -0
- data/test/soap/auth/test_digest.rb +118 -0
- data/test/soap/calc/calc.rb +17 -0
- data/test/soap/calc/calc2.rb +29 -0
- data/test/soap/calc/server.cgi +13 -0
- data/test/soap/calc/server.rb +17 -0
- data/test/soap/calc/server2.rb +20 -0
- data/test/soap/calc/test_calc.rb +51 -0
- data/test/soap/calc/test_calc2.rb +55 -0
- data/test/soap/calc/test_calc_cgi.rb +71 -0
- data/test/soap/case/test_mapping.rb +57 -0
- data/test/soap/fault/test_customfault.rb +60 -0
- data/test/soap/fault/test_fault.rb +46 -0
- data/test/soap/fault/test_soaparray.rb +35 -0
- data/test/soap/filter/test_filter.rb +146 -0
- data/test/soap/header/server.cgi +119 -0
- data/test/soap/header/session.pstoredb +0 -0
- data/test/soap/header/test_authheader.rb +240 -0
- data/test/soap/header/test_authheader_cgi.rb +121 -0
- data/test/soap/header/test_simplehandler.rb +116 -0
- data/test/soap/helloworld/hw_s.rb +16 -0
- data/test/soap/helloworld/test_helloworld.rb +43 -0
- data/test/soap/htpasswd +2 -0
- data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
- data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
- data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
- data/test/soap/literalArrayMapping/test_definedarray.rb +34 -0
- data/test/soap/marshal/marshaltestlib.rb +494 -0
- data/test/soap/marshal/test_digraph.rb +56 -0
- data/test/soap/marshal/test_marshal.rb +26 -0
- data/test/soap/marshal/test_struct.rb +47 -0
- data/test/soap/ssl/README +1 -0
- data/test/soap/ssl/ca.cert +23 -0
- data/test/soap/ssl/client.cert +19 -0
- data/test/soap/ssl/client.key +15 -0
- data/test/soap/ssl/server.cert +19 -0
- data/test/soap/ssl/server.key +15 -0
- data/test/soap/ssl/sslsvr.rb +57 -0
- data/test/soap/ssl/subca.cert +21 -0
- data/test/soap/ssl/test_ssl.rb +235 -0
- data/test/soap/struct/test_struct.rb +70 -0
- data/test/soap/styleuse/client.rb +20 -0
- data/test/soap/styleuse/server.rb +86 -0
- data/test/soap/swa/test_file.rb +75 -0
- data/test/soap/test_basetype.rb +1090 -0
- data/test/soap/test_cookie.rb +112 -0
- data/test/soap/test_custom_ns.rb +105 -0
- data/test/soap/test_custommap.rb +110 -0
- data/test/soap/test_empty.rb +105 -0
- data/test/soap/test_envelopenamespace.rb +85 -0
- data/test/soap/test_extraattr.rb +54 -0
- data/test/soap/test_generator.rb +27 -0
- data/test/soap/test_httpconfigloader.rb +71 -0
- data/test/soap/test_mapping.rb +131 -0
- data/test/soap/test_nestedexception.rb +56 -0
- data/test/soap/test_nil.rb +57 -0
- data/test/soap/test_no_indent.rb +88 -0
- data/test/soap/test_property.rb +428 -0
- data/test/soap/test_response_as_xml.rb +117 -0
- data/test/soap/test_soapelement.rb +138 -0
- data/test/soap/test_streamhandler.rb +270 -0
- data/test/soap/test_styleuse.rb +326 -0
- data/test/soap/wsdlDriver/README.txt +2 -0
- data/test/soap/wsdlDriver/calc.wsdl +126 -0
- data/test/soap/wsdlDriver/document.wsdl +54 -0
- data/test/soap/wsdlDriver/echo_version.rb +29 -0
- data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
- data/test/soap/wsdlDriver/test_calc.rb +71 -0
- data/test/soap/wsdlDriver/test_document.rb +71 -0
- data/test/soap/wsdlDriver/test_simpletype.rb +80 -0
- data/test/testutil.rb +54 -0
- data/test/wsdl/abstract/abstract.wsdl +176 -0
- data/test/wsdl/abstract/test_abstract.rb +159 -0
- data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
- data/test/wsdl/anonymous/expectedDriver.rb +59 -0
- data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
- data/test/wsdl/anonymous/lp.wsdl +147 -0
- data/test/wsdl/anonymous/test_anonymous.rb +130 -0
- data/test/wsdl/any/any.wsdl +114 -0
- data/test/wsdl/any/expectedDriver.rb +68 -0
- data/test/wsdl/any/expectedEcho.rb +57 -0
- data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
- data/test/wsdl/any/expectedService.rb +69 -0
- data/test/wsdl/any/test_any.rb +193 -0
- data/test/wsdl/axisArray/axisArray.wsdl +87 -0
- data/test/wsdl/axisArray/test_axisarray.rb +124 -0
- data/test/wsdl/choice/choice.wsdl +167 -0
- data/test/wsdl/choice/test_choice.rb +310 -0
- data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
- data/test/wsdl/complexcontent/test_echo.rb +90 -0
- data/test/wsdl/datetime/DatetimeService.rb +44 -0
- data/test/wsdl/datetime/datetime.rb +0 -0
- data/test/wsdl/datetime/datetime.wsdl +45 -0
- data/test/wsdl/datetime/datetimeServant.rb +22 -0
- data/test/wsdl/datetime/test_datetime.rb +86 -0
- data/test/wsdl/document/array/double.wsdl +161 -0
- data/test/wsdl/document/array/test_array.rb +201 -0
- data/test/wsdl/document/document.wsdl +76 -0
- data/test/wsdl/document/number.wsdl +54 -0
- data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
- data/test/wsdl/document/test_nosoapaction.rb +102 -0
- data/test/wsdl/document/test_number.rb +92 -0
- data/test/wsdl/document/test_rpc.rb +355 -0
- data/test/wsdl/emptycomplextype.wsdl +31 -0
- data/test/wsdl/fault/fault.wsdl +79 -0
- data/test/wsdl/fault/multifault.wsdl +96 -0
- data/test/wsdl/fault/test_fault.rb +119 -0
- data/test/wsdl/fault/test_multifault.rb +134 -0
- data/test/wsdl/group/expectedClassdef.rb +58 -0
- data/test/wsdl/group/expectedDriver.rb +51 -0
- data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
- data/test/wsdl/group/group.wsdl +88 -0
- data/test/wsdl/group/test_rpc.rb +145 -0
- data/test/wsdl/list/list.wsdl +93 -0
- data/test/wsdl/list/test_list.rb +124 -0
- data/test/wsdl/map/map.wsdl +92 -0
- data/test/wsdl/map/map.xml +43 -0
- data/test/wsdl/map/test_map.rb +99 -0
- data/test/wsdl/marshal/Person.rb +1 -0
- data/test/wsdl/marshal/person.wsdl +21 -0
- data/test/wsdl/marshal/person_org.rb +23 -0
- data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
- data/test/wsdl/multiplefault.wsdl +75 -0
- data/test/wsdl/oneway/oneway.wsdl +36 -0
- data/test/wsdl/oneway/test_oneway.rb +108 -0
- data/test/wsdl/overload/expectedClient.rb +37 -0
- data/test/wsdl/overload/expectedDriver.rb +61 -0
- data/test/wsdl/overload/expectedServant.rb +35 -0
- data/test/wsdl/overload/overload.wsdl +70 -0
- data/test/wsdl/overload/test_overload.rb +131 -0
- data/test/wsdl/qualified/lp.wsdl +47 -0
- data/test/wsdl/qualified/lp.xsd +26 -0
- data/test/wsdl/qualified/np.wsdl +51 -0
- data/test/wsdl/qualified/test_qualified.rb +137 -0
- data/test/wsdl/qualified/test_unqualified.rb +138 -0
- data/test/wsdl/raa/RAAService.rb +125 -0
- data/test/wsdl/raa/README.txt +8 -0
- data/test/wsdl/raa/expectedClassDef.rb +100 -0
- data/test/wsdl/raa/expectedDriver.rb +96 -0
- data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
- data/test/wsdl/raa/raa.wsdl +264 -0
- data/test/wsdl/raa/test_raa.rb +126 -0
- data/test/wsdl/ref/expectedDriver.rb +51 -0
- data/test/wsdl/ref/expectedProduct.rb +243 -0
- data/test/wsdl/ref/product.wsdl +147 -0
- data/test/wsdl/ref/test_ref.rb +268 -0
- data/test/wsdl/rpc/rpc.wsdl +109 -0
- data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
- data/test/wsdl/rpc/test_rpc.rb +176 -0
- data/test/wsdl/rpc/test_rpc_lit.rb +470 -0
- data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
- data/test/wsdl/simplecontent/test_simplecontent.rb +102 -0
- data/test/wsdl/simpletype/rpc/echo_version.rb +1 -0
- data/test/wsdl/simpletype/rpc/echo_versionDriver.rb +10 -0
- data/test/wsdl/simpletype/rpc/echo_versionMappingRegistry.rb +4 -0
- data/test/wsdl/simpletype/rpc/echo_versionServant.rb +3 -0
- data/test/wsdl/simpletype/rpc/echo_version_service.rb +3 -0
- data/test/wsdl/simpletype/rpc/echo_version_serviceClient.rb +34 -0
- data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
- data/test/wsdl/simpletype/rpc/expectedDriver.rb +58 -0
- data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +36 -0
- data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +57 -0
- data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
- data/test/wsdl/simpletype/rpc/expectedService.rb +55 -0
- data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
- data/test/wsdl/simpletype/rpc/test_rpc.rb +52 -0
- data/test/wsdl/simpletype/simpletype.wsdl +114 -0
- data/test/wsdl/simpletype/test_simpletype.rb +92 -0
- data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
- data/test/wsdl/soap/test_soapbodyparts.rb +79 -0
- data/test/wsdl/soap/wsdl2ruby/echo_version.rb +1 -0
- data/test/wsdl/soap/wsdl2ruby/echo_versionDriver.rb +10 -0
- data/test/wsdl/soap/wsdl2ruby/echo_versionMappingRegistry.rb +4 -0
- data/test/wsdl/soap/wsdl2ruby/echo_versionServant.rb +3 -0
- data/test/wsdl/soap/wsdl2ruby/echo_version_service.cgi +3 -0
- data/test/wsdl/soap/wsdl2ruby/echo_version_service.rb +7 -0
- data/test/wsdl/soap/wsdl2ruby/echo_version_serviceClient.rb +34 -0
- data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +21 -0
- data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
- data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +58 -0
- data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +36 -0
- data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
- data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +48 -0
- data/test/wsdl/soap/wsdl2ruby/expectedService.rb +55 -0
- data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
- data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +37 -0
- data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
- data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +53 -0
- data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
- data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +83 -0
- data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +102 -0
- data/test/wsdl/soaptype/soaptype.wsdl +61 -0
- data/test/wsdl/soaptype/test_soaptype.rb +178 -0
- data/test/wsdl/test_emptycomplextype.rb +21 -0
- data/test/wsdl/test_fault.rb +50 -0
- data/test/wsdl/test_multiplefault.rb +41 -0
- data/test/xsd/codegen/test_classdef.rb +244 -0
- data/test/xsd/noencoding.xml +4 -0
- data/test/xsd/test_noencoding.rb +32 -0
- data/test/xsd/test_ns.rb +41 -0
- data/test/xsd/test_xmlschemaparser.rb +22 -0
- data/test/xsd/test_xsd.rb +1638 -0
- data/test/xsd/xmllang.xml +43 -0
- data/test/xsd/xmlschema.xml +12 -0
- data/test/xsd/xsd2ruby/expected_mysample.rb +65 -0
- data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +11 -0
- data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +51 -0
- data/test/xsd/xsd2ruby/section.xsd +49 -0
- data/test/xsd/xsd2ruby/test_xsd2ruby.rb +90 -0
- 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
|
data/lib/xsd/charset.rb
ADDED
@@ -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
|