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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +20 -0
- data/.envrc +4 -0
- data/.ruby-version +1 -0
- data/.travis.yml +39 -0
- data/COPYING +7 -0
- data/GPL +340 -0
- data/Gemfile +53 -0
- data/Gemfile.lock +221 -0
- data/README.md +57 -0
- data/RELEASE_en.html +1900 -0
- data/RUBYS +56 -0
- data/Rakefile +88 -0
- data/bin/wsdl2ruby.rb +1 -4
- data/bin/xsd2ruby.rb +2 -4
- data/gemfiles/httpclient.gemfile +26 -0
- data/install.rb +91 -0
- data/lib/soap/attachment.rb +27 -11
- data/lib/soap/attrproxy.rb +0 -1
- data/lib/soap/baseData.rb +15 -3
- data/lib/soap/element.rb +1 -2
- data/lib/soap/encodingstyle/aspDotNetHandler.rb +0 -1
- data/lib/soap/encodingstyle/handler.rb +0 -1
- data/lib/soap/encodingstyle/literalHandler.rb +0 -1
- data/lib/soap/encodingstyle/soapHandler.rb +0 -1
- data/lib/soap/filter/filterchain.rb +1 -2
- data/lib/soap/filter/handler.rb +0 -1
- data/lib/soap/filter/streamhandler.rb +0 -1
- data/lib/soap/filter.rb +0 -1
- data/lib/soap/generator.rb +3 -3
- data/lib/soap/header/handler.rb +0 -1
- data/lib/soap/header/handlerset.rb +0 -1
- data/lib/soap/header/mappinghandler.rb +0 -1
- data/lib/soap/header/simplehandler.rb +0 -1
- data/lib/soap/http_logger.rb +16 -2
- data/lib/soap/httpconfigloader.rb +1 -2
- data/lib/soap/mapping/encodedregistry.rb +22 -20
- data/lib/soap/mapping/factory.rb +42 -13
- data/lib/soap/mapping/literalregistry.rb +3 -6
- data/lib/soap/mapping/mapping.rb +11 -12
- data/lib/soap/mapping/registry.rb +2 -5
- data/lib/soap/mapping/rubytypeFactory.rb +2 -2
- data/lib/soap/mapping/schemadefinition.rb +0 -1
- data/lib/soap/mapping/typeMap.rb +0 -2
- data/lib/soap/mapping/wsdlencodedregistry.rb +1 -2
- data/lib/soap/mapping/wsdlliteralregistry.rb +0 -1
- data/lib/soap/mapping.rb +0 -1
- data/lib/soap/marshal.rb +0 -1
- data/lib/soap/mimemessage.rb +52 -27
- data/lib/soap/nestedexception.rb +1 -2
- data/lib/soap/netHttpClient.rb +4 -5
- data/lib/soap/ns.rb +0 -5
- data/lib/soap/parser.rb +1 -1
- data/lib/soap/processor.rb +0 -1
- data/lib/soap/property.rb +21 -18
- data/lib/soap/proxy.rb +0 -1
- data/lib/soap/rpc/cgistub.rb +3 -4
- data/lib/soap/rpc/driver.rb +175 -176
- data/lib/soap/rpc/element.rb +2 -3
- data/lib/soap/rpc/element.rb.orig +374 -0
- data/lib/soap/rpc/httpserver.rb +1 -3
- data/lib/soap/rpc/methodDef.rb +0 -1
- data/lib/soap/rpc/proxy.rb +2 -3
- data/lib/soap/rpc/router.rb +36 -7
- data/lib/soap/rpc/rpc.rb +0 -1
- data/lib/soap/rpc/soaplet.rb +2 -3
- data/lib/soap/rpc/standaloneServer.rb +1 -2
- data/lib/soap/soap.rb +4 -30
- data/lib/soap/streamHandler.rb +8 -10
- data/lib/soap/version.rb +3 -3
- data/lib/soap/wsdlDriver.rb +0 -2
- data/lib/wsdl/binding.rb +0 -1
- data/lib/wsdl/data.rb +0 -1
- data/lib/wsdl/definitions.rb +0 -1
- data/lib/wsdl/documentation.rb +0 -1
- data/lib/wsdl/import.rb +0 -1
- data/lib/wsdl/importer.rb +0 -1
- data/lib/wsdl/info.rb +0 -1
- data/lib/wsdl/message.rb +0 -1
- data/lib/wsdl/operation.rb +0 -1
- data/lib/wsdl/operationBinding.rb +3 -4
- data/lib/wsdl/param.rb +0 -1
- data/lib/wsdl/parser.rb +5 -21
- data/lib/wsdl/part.rb +0 -1
- data/lib/wsdl/port.rb +0 -1
- data/lib/wsdl/portType.rb +0 -1
- data/lib/wsdl/service.rb +0 -1
- data/lib/wsdl/soap/address.rb +0 -1
- data/lib/wsdl/soap/binding.rb +0 -1
- data/lib/wsdl/soap/body.rb +0 -1
- data/lib/wsdl/soap/cgiStubCreator.rb +0 -1
- data/lib/wsdl/soap/classDefCreator.rb +20 -1
- data/lib/wsdl/soap/classDefCreatorSupport.rb +1 -2
- data/lib/wsdl/soap/classNameCreator.rb +0 -1
- data/lib/wsdl/soap/clientSkeltonCreator.rb +2 -5
- data/lib/wsdl/soap/complexType.rb +0 -1
- data/lib/wsdl/soap/data.rb +0 -1
- data/lib/wsdl/soap/definitions.rb +1 -2
- data/lib/wsdl/soap/driverCreator.rb +75 -74
- data/lib/wsdl/soap/element.rb +0 -1
- data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +0 -1
- data/lib/wsdl/soap/fault.rb +0 -1
- data/lib/wsdl/soap/header.rb +0 -1
- data/lib/wsdl/soap/headerfault.rb +0 -1
- data/lib/wsdl/soap/literalMappingRegistryCreator.rb +0 -1
- data/lib/wsdl/soap/mappingRegistryCreator.rb +0 -1
- data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +0 -1
- data/lib/wsdl/soap/methodDefCreator.rb +9 -1
- data/lib/wsdl/soap/operation.rb +1 -2
- data/lib/wsdl/soap/servantSkeltonCreator.rb +2 -5
- data/lib/wsdl/soap/servletStubCreator.rb +0 -1
- data/lib/wsdl/soap/standaloneServerStubCreator.rb +0 -1
- data/lib/wsdl/soap/wsdl2ruby.rb +9 -5
- data/lib/wsdl/types.rb +0 -1
- data/lib/wsdl/wsdl.rb +0 -1
- data/lib/wsdl/xmlSchema/all.rb +0 -1
- data/lib/wsdl/xmlSchema/annotation.rb +0 -1
- data/lib/wsdl/xmlSchema/any.rb +0 -1
- data/lib/wsdl/xmlSchema/anyAttribute.rb +0 -1
- data/lib/wsdl/xmlSchema/attribute.rb +0 -1
- data/lib/wsdl/xmlSchema/attributeGroup.rb +0 -1
- data/lib/wsdl/xmlSchema/choice.rb +0 -1
- data/lib/wsdl/xmlSchema/complexContent.rb +0 -1
- data/lib/wsdl/xmlSchema/complexExtension.rb +0 -1
- data/lib/wsdl/xmlSchema/complexRestriction.rb +0 -1
- data/lib/wsdl/xmlSchema/complexType.rb +0 -1
- data/lib/wsdl/xmlSchema/content.rb +0 -1
- data/lib/wsdl/xmlSchema/data.rb +0 -1
- data/lib/wsdl/xmlSchema/element.rb +1 -2
- data/lib/wsdl/xmlSchema/enumeration.rb +0 -1
- data/lib/wsdl/xmlSchema/fractiondigits.rb +0 -1
- data/lib/wsdl/xmlSchema/group.rb +0 -1
- data/lib/wsdl/xmlSchema/import.rb +1 -1
- data/lib/wsdl/xmlSchema/importHandler.rb +1 -1
- data/lib/wsdl/xmlSchema/importer.rb +0 -1
- data/lib/wsdl/xmlSchema/include.rb +1 -1
- data/lib/wsdl/xmlSchema/length.rb +0 -1
- data/lib/wsdl/xmlSchema/list.rb +0 -1
- data/lib/wsdl/xmlSchema/maxexclusive.rb +0 -1
- data/lib/wsdl/xmlSchema/maxinclusive.rb +0 -1
- data/lib/wsdl/xmlSchema/maxlength.rb +0 -1
- data/lib/wsdl/xmlSchema/minexclusive.rb +0 -1
- data/lib/wsdl/xmlSchema/mininclusive.rb +0 -1
- data/lib/wsdl/xmlSchema/minlength.rb +0 -1
- data/lib/wsdl/xmlSchema/parser.rb +4 -5
- data/lib/wsdl/xmlSchema/pattern.rb +0 -1
- data/lib/wsdl/xmlSchema/ref.rb +0 -1
- data/lib/wsdl/xmlSchema/schema.rb +0 -1
- data/lib/wsdl/xmlSchema/sequence.rb +0 -1
- data/lib/wsdl/xmlSchema/simpleContent.rb +0 -1
- data/lib/wsdl/xmlSchema/simpleExtension.rb +0 -1
- data/lib/wsdl/xmlSchema/simpleRestriction.rb +0 -1
- data/lib/wsdl/xmlSchema/simpleType.rb +0 -1
- data/lib/wsdl/xmlSchema/totaldigits.rb +0 -1
- data/lib/wsdl/xmlSchema/union.rb +0 -1
- data/lib/wsdl/xmlSchema/unique.rb +0 -1
- data/lib/wsdl/xmlSchema/whitespace.rb +0 -1
- data/lib/wsdl/xmlSchema/xsd2ruby.rb +0 -3
- data/lib/xsd/charset.rb +162 -152
- data/lib/xsd/codegen/classdef.rb +0 -1
- data/lib/xsd/codegen/commentdef.rb +0 -1
- data/lib/xsd/codegen/gensupport.rb +5 -9
- data/lib/xsd/codegen/methoddef.rb +0 -1
- data/lib/xsd/codegen/moduledef.rb +0 -1
- data/lib/xsd/codegen.rb +0 -1
- data/lib/xsd/datatypes.rb +1122 -1098
- data/lib/xsd/datatypes1999.rb +0 -1
- data/lib/xsd/iconvcharset.rb +2 -19
- data/lib/xsd/mapping.rb +0 -1
- data/lib/xsd/namedelements.rb +0 -1
- data/lib/xsd/ns.rb +1 -2
- data/lib/xsd/qname.rb +2 -3
- data/lib/xsd/xmlparser/libxmlparser.rb +22 -39
- data/lib/xsd/xmlparser/parser.rb +1 -2
- data/lib/xsd/xmlparser/rexmlparser.rb +8 -4
- data/lib/xsd/xmlparser/xmlparser.rb +50 -0
- data/lib/xsd/xmlparser/xmlscanner.rb +149 -0
- data/lib/xsd/xmlparser.rb +18 -23
- data/lib/xsd/xmlparser.rb.orig +76 -0
- data/rtiss_soap4r.gemspec +751 -0
- data/rubyStyle.css +104 -0
- data/sample/attachment/complexmime/EdmService.rb +124 -0
- data/sample/attachment/complexmime/README.txt +3 -0
- data/sample/attachment/complexmime/client.rb +57 -0
- data/sample/attachment/complexmime/drift.cdf +1 -0
- data/sample/attachment/complexmime/plaatje.png +1 -0
- data/sample/attachment/complexmime/server.rb +68 -0
- data/sample/attachment/swa/client.rb +13 -0
- data/sample/attachment/swa/server.rb +23 -0
- data/sample/basic/apacheClient.rb +92 -0
- data/sample/basic/babelfish.rb +16 -0
- data/sample/basic/calc/calc.rb +17 -0
- data/sample/basic/calc/calc2.rb +29 -0
- data/sample/basic/calc/client.rb +26 -0
- data/sample/basic/calc/client2.rb +29 -0
- data/sample/basic/calc/httpd.rb +20 -0
- data/sample/basic/calc/samplehttpd.conf +2 -0
- data/sample/basic/calc/server.cgi +15 -0
- data/sample/basic/calc/server.fcgi +22 -0
- data/sample/basic/calc/server.rb +21 -0
- data/sample/basic/calc/server2.rb +24 -0
- data/sample/basic/exchange/client.rb +19 -0
- data/sample/basic/exchange/exchange.rb +17 -0
- data/sample/basic/exchange/httpd.rb +20 -0
- data/sample/basic/exchange/samplehttpd.conf +2 -0
- data/sample/basic/exchange/server.cgi +14 -0
- data/sample/basic/exchange/server.rb +20 -0
- data/sample/basic/flickr.rb +26 -0
- data/sample/basic/helloworld/client.rb +6 -0
- data/sample/basic/helloworld/server.rb +20 -0
- data/sample/basic/sampleStruct/client.rb +16 -0
- data/sample/basic/sampleStruct/httpd.rb +20 -0
- data/sample/basic/sampleStruct/iSampleStruct.rb +22 -0
- data/sample/basic/sampleStruct/sampleStruct.rb +13 -0
- data/sample/basic/sampleStruct/samplehttpd.conf +2 -0
- data/sample/basic/sampleStruct/server.cgi +14 -0
- data/sample/basic/sampleStruct/server.rb +20 -0
- data/sample/basic/whois.rb +14 -0
- data/sample/basic/wsdl_helloworld/README +15 -0
- data/sample/basic/wsdl_helloworld/client/default.rb +1 -0
- data/sample/basic/wsdl_helloworld/client/defaultDriver.rb +47 -0
- data/sample/basic/wsdl_helloworld/client/hws.wsdl +46 -0
- data/sample/basic/wsdl_helloworld/client/hwsClient.rb +22 -0
- data/sample/basic/wsdl_helloworld/server/hw_s.rb +25 -0
- data/sample/basic/wsdl_helloworld/server/hws.wsdl +46 -0
- data/sample/basic/yahooNewsSearch.rb +36 -0
- data/sample/howto/as_xml/client.rb +22 -0
- data/sample/howto/as_xml/server.rb +22 -0
- data/sample/howto/base64/client.rb +17 -0
- data/sample/howto/base64/server.rb +30 -0
- data/sample/howto/custom_ns/client.rb +37 -0
- data/sample/howto/custom_ns/server.rb +42 -0
- data/sample/howto/documentliteral/README.txt +19 -0
- data/sample/howto/documentliteral/client.rb +11 -0
- data/sample/howto/documentliteral/echo.wsdl +66 -0
- data/sample/howto/documentliteral/servant.rb +11 -0
- data/sample/howto/filter/client.rb +42 -0
- data/sample/howto/filter/server.rb +67 -0
- data/sample/howto/scopesample/client.rb +34 -0
- data/sample/howto/scopesample/httpd.rb +22 -0
- data/sample/howto/scopesample/samplehttpd.conf +2 -0
- data/sample/howto/scopesample/servant.rb +18 -0
- data/sample/howto/scopesample/server.cgi +29 -0
- data/sample/howto/scopesample/server.rb +20 -0
- data/sample/howto/styleuse/client.rb +21 -0
- data/sample/howto/styleuse/server.rb +86 -0
- data/sample/howto/wsdl_fault/README.txt +11 -0
- data/sample/howto/wsdl_fault/fault/AddClient.rb +24 -0
- data/sample/howto/wsdl_fault/fault/AddServer.rb +15 -0
- data/sample/howto/wsdl_fault/fault/AddServiceImpl.rb +18 -0
- data/sample/howto/wsdl_fault/fault/fault.wsdl +79 -0
- data/sample/howto/wsdl_fault/multifault/AddClient.rb +28 -0
- data/sample/howto/wsdl_fault/multifault/AddServer.rb +15 -0
- data/sample/howto/wsdl_fault/multifault/AddServiceImpl.rb +24 -0
- data/sample/howto/wsdl_fault/multifault/fault.wsdl +96 -0
- data/sample/howto/wsdl_hash/client.rb +11 -0
- data/sample/howto/wsdl_hash/hash.wsdl +69 -0
- data/sample/howto/wsdl_hash/server.rb +17 -0
- data/sample/marshal/customfactory.rb +97 -0
- data/sample/marshal/customregistry.rb +17 -0
- data/sample/marshal/digraph.rb +43 -0
- data/sample/marshal/enum/README.txt +6 -0
- data/sample/marshal/enum/enum.xsd +23 -0
- data/sample/marshal/enum/enumsample.rb +20 -0
- data/sample/marshal/enum/enumsample_mapper.rb +7 -0
- data/sample/marshal/enum/enumsample_mapping_registry.rb +23 -0
- data/sample/marshal/enum/marshal.rb +9 -0
- data/sample/payload/basicauth/client.rb +10 -0
- data/sample/payload/basicauth/htpasswd +2 -0
- data/sample/payload/basicauth/server.rb +43 -0
- data/sample/payload/cookies/calc.rb +52 -0
- data/sample/payload/cookies/client.rb +30 -0
- data/sample/payload/cookies/filterclient.rb +52 -0
- data/sample/payload/cookies/server.rb +24 -0
- data/sample/payload/gzipped/client.rb +8 -0
- data/sample/payload/gzipped/server.rb +21 -0
- data/sample/payload/ssl/files/README +1 -0
- data/sample/payload/ssl/files/ca.cert +23 -0
- data/sample/payload/ssl/files/client.cert +19 -0
- data/sample/payload/ssl/files/client.key +15 -0
- data/sample/payload/ssl/files/server.cert +19 -0
- data/sample/payload/ssl/files/server.key +15 -0
- data/sample/payload/ssl/files/sslclient.properties +5 -0
- data/sample/payload/ssl/files/sslclient_require_noserverauth.properties +2 -0
- data/sample/payload/ssl/files/sslclient_with_clientauth.properties +9 -0
- data/sample/payload/ssl/files/subca.cert +21 -0
- data/sample/payload/ssl/sslclient.rb +12 -0
- data/sample/payload/ssl/sslclient_require_noserverauth.rb +12 -0
- data/sample/payload/ssl/sslclient_with_clientauth.rb +12 -0
- data/sample/payload/ssl/sslserver.rb +49 -0
- data/sample/payload/ssl/sslserver_noauth.rb +45 -0
- data/sample/payload/ssl/sslserver_require_clientauth.rb +50 -0
- data/sample/showcase/soap/hippo5tq/hippo5tq.rb +41 -0
- data/sample/showcase/soap/hippo5tq/hippo5tq2.rb +99 -0
- data/sample/showcase/soap/hippo5tq/hippoClient.rb +106 -0
- data/sample/showcase/soap/icd/IICD.rb +17 -0
- data/sample/showcase/soap/icd/icd.rb +46 -0
- data/sample/showcase/soap/mssoap/README.txt +62 -0
- data/sample/showcase/soap/mssoap/client.vba +19 -0
- data/sample/showcase/soap/mssoap/stockQuoteService.cgi +44 -0
- data/sample/showcase/soap/mssoap/stockQuoteService.rb +9 -0
- data/sample/showcase/soap/mssoap/stockQuoteService.wsdl +47 -0
- data/sample/showcase/soap/mssoap/stockQuoteServiceClient.rb +26 -0
- data/sample/showcase/soap/mssoap/stockQuoteServiceClient.xls +0 -0
- data/sample/showcase/soap/mssoap/stockQuoteServicePortTypeDriver.rb +46 -0
- data/sample/showcase/soap/netDicV06/INetDicV06.rb +36 -0
- data/sample/showcase/soap/netDicV06/netDicV06.rb +16 -0
- data/sample/showcase/soap/raa/SOAP__Lite.pl +15 -0
- data/sample/showcase/soap/raa/pocketSOAP.js +33 -0
- data/sample/showcase/soap/raa2.4/raa.rb +332 -0
- data/sample/showcase/soap/raa2.4/raa.wsdl +644 -0
- data/sample/showcase/soap/raa2.4/raaDriver.rb +255 -0
- data/sample/showcase/soap/raa2.4/raaServiceClient.rb +354 -0
- data/sample/showcase/soap/raa2.4/sample.rb +115 -0
- data/sample/showcase/soap/rwiki/rwikiClient.rb +29 -0
- data/sample/showcase/soap/rwiki/rwikiServer.cgi +44 -0
- data/sample/showcase/soap/soapbox/ContactsDataSet.xml +37 -0
- data/sample/showcase/soap/soapbox/ExceptionDataSet.xml +23 -0
- data/sample/showcase/soap/soapbox/MessageDataSet.xml +8 -0
- data/sample/showcase/soap/soapbox/SoapBoxWebService.wsdl +1233 -0
- data/sample/showcase/soap/soapbox/SoapBoxWebServiceWithRawXML.wsdl +1226 -0
- data/sample/showcase/soap/soapbox/wsdlDriver.rb +23 -0
- data/sample/showcase/wsdl/PayPalSvc/client.rb +36 -0
- data/sample/showcase/wsdl/amazon/AmazonSearch.rb +3160 -0
- data/sample/showcase/wsdl/amazon/AmazonSearchDriver.rb +546 -0
- data/sample/showcase/wsdl/amazon/sampleClient.rb +37 -0
- data/sample/showcase/wsdl/amazon/wsdlDriver.rb +52 -0
- data/sample/showcase/wsdl/amazonEC/client.rb +13 -0
- data/sample/showcase/wsdl/eBaySvc/sampleclient.rb +60 -0
- data/sample/showcase/wsdl/googleAdwords/CampaignService.wsdl +785 -0
- data/sample/showcase/wsdl/googleAdwords/ca.pem +19 -0
- data/sample/showcase/wsdl/googleAdwords/client.rb +40 -0
- data/sample/showcase/wsdl/googleAdwords/soap/property +1 -0
- data/sample/showcase/wsdl/googleSearch/GoogleSearch.rb +97 -0
- data/sample/showcase/wsdl/googleSearch/GoogleSearchDriver.rb +102 -0
- data/sample/showcase/wsdl/googleSearch/README +6 -0
- data/sample/showcase/wsdl/googleSearch/httpd.rb +20 -0
- data/sample/showcase/wsdl/googleSearch/sampleClient.rb +56 -0
- data/sample/showcase/wsdl/googleSearch/samplehttpd.conf +2 -0
- data/sample/showcase/wsdl/googleSearch/sjissearch.sh +3 -0
- data/sample/showcase/wsdl/googleSearch/wsdlDriver.rb +29 -0
- data/sample/showcase/wsdl/noaa/README.txt +5 -0
- data/sample/showcase/wsdl/noaa/client.rb +44 -0
- data/sample/showcase/wsdl/noaa/default.rb +46 -0
- data/sample/showcase/wsdl/noaa/defaultDriver.rb +66 -0
- data/sample/showcase/wsdl/noaa/defaultMappingRegistry.rb +74 -0
- data/sample/showcase/wsdl/noaa/ndfdXMLClient.rb +43 -0
- data/sample/showcase/wsdl/raa2.4/raa.rb +134 -0
- data/sample/showcase/wsdl/raa2.4/raa.wsdl +644 -0
- data/sample/showcase/wsdl/raa2.4/wsdlDriver.rb +117 -0
- data/sample/showcase/wsdl/rnn/client.rb +59 -0
- data/sample/showcase/wsdl/rnn/post.rb +27 -0
- data/sample/showcase/wsdl/rnn/rnn-hash.wsdl +282 -0
- data/sample/showcase/wsdl/rnn/rnn.wsdl +310 -0
- data/sample/showcase/wsdl/rnn/submit.rb +63 -0
- data/sample/showcase/wsdl/salesforce/SforceServiceClient.rb +280 -0
- data/sample/showcase/wsdl/salesforce/ca.pem +35 -0
- data/sample/showcase/wsdl/salesforce/client.rb +156 -0
- data/sample/showcase/wsdl/salesforce/default.rb +1740 -0
- data/sample/showcase/wsdl/salesforce/defaultDriver.rb +165 -0
- data/sample/showcase/wsdl/salesforce/soap/property +1 -0
- data/sample/soapheader/authheader/authmgr.rb +41 -0
- data/sample/soapheader/authheader/client.rb +40 -0
- data/sample/soapheader/authheader/client2.rb +42 -0
- data/sample/soapheader/authheader/server.rb +73 -0
- data/sample/soapheader/authheader/server2.rb +83 -0
- data/sample/soapheader/soapext_basicauth/client.rb +25 -0
- data/sample/soapheader/soapext_basicauth/mms_MizGIS.rb +701 -0
- data/sample/soapheader/soapext_basicauth/mms_MizGIS.wsdl +1007 -0
- data/sample/soapheader/soapext_basicauth/mms_MizGISClient.rb +231 -0
- data/sample/soapheader/soapext_basicauth/mms_MizGISDriver.rb +210 -0
- data/sample/soapheader/soapext_basicauth/mms_MizGISMappingRegistry.rb +1232 -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 +116 -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_calc2.rb +55 -0
- data/test/soap/case/test_mapping.rb +33 -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 +147 -0
- data/test/soap/header/server.cgi +122 -0
- data/test/soap/header/session.pstoredb +0 -0
- data/test/soap/header/test_authheader.rb +234 -0
- data/test/soap/header/test_authheader_cgi.rb +120 -0
- data/test/soap/header/test_simplehandler.rb +120 -0
- data/test/soap/helloworld/hw_s.rb +16 -0
- data/test/soap/helloworld/test_helloworld.rb +42 -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 +33 -0
- data/test/soap/marshal/marshaltestlib.rb +456 -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 +238 -0
- data/test/soap/struct/test_struct.rb +69 -0
- data/test/soap/styleuse/client.rb +20 -0
- data/test/soap/styleuse/server.rb +86 -0
- data/test/soap/swa/test_file.rb +76 -0
- data/test/soap/test_basetype.rb +1090 -0
- data/test/soap/test_cookie.rb +111 -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 +84 -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 +122 -0
- data/test/soap/test_nestedexception.rb +61 -0
- data/test/soap/test_nil.rb +61 -0
- data/test/soap/test_no_indent.rb +88 -0
- data/test/soap/test_property.rb +427 -0
- data/test/soap/test_response_as_xml.rb +116 -0
- data/test/soap/test_soapelement.rb +138 -0
- data/test/soap/test_streamhandler.rb +269 -0
- data/test/soap/test_styleuse.rb +327 -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 +72 -0
- data/test/soap/wsdlDriver/test_document.rb +72 -0
- data/test/soap/wsdlDriver/test_simpletype.rb +81 -0
- data/test/test_helper.rb +82 -0
- data/test/wsdl/abstract/abstract.rb +102 -0
- data/test/wsdl/abstract/abstract.wsdl +176 -0
- data/test/wsdl/abstract/abstractDriver.rb +73 -0
- data/test/wsdl/abstract/abstractMappingRegistry.rb +139 -0
- data/test/wsdl/abstract/test_abstract.rb +158 -0
- data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
- data/test/wsdl/anonymous/expectedDriver.rb +61 -0
- data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
- data/test/wsdl/anonymous/lp.rb +128 -0
- data/test/wsdl/anonymous/lp.wsdl +147 -0
- data/test/wsdl/anonymous/lpDriver.rb +61 -0
- data/test/wsdl/anonymous/lpMappingRegistry.rb +176 -0
- data/test/wsdl/anonymous/test_anonymous.rb +130 -0
- data/test/wsdl/any/any.wsdl +114 -0
- data/test/wsdl/any/echo.rb +57 -0
- data/test/wsdl/any/echoDriver.rb +70 -0
- data/test/wsdl/any/echoMappingRegistry.rb +63 -0
- data/test/wsdl/any/echoServant.rb +52 -0
- data/test/wsdl/any/echo_service.rb +69 -0
- data/test/wsdl/any/echo_serviceClient.rb +52 -0
- data/test/wsdl/any/expectedDriver.rb +70 -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/itemList.rb +31 -0
- data/test/wsdl/axisArray/itemListDriver.rb +62 -0
- data/test/wsdl/axisArray/itemListMappingRegistry.rb +60 -0
- data/test/wsdl/axisArray/test_axisarray.rb +124 -0
- data/test/wsdl/choice/choice.rb +117 -0
- data/test/wsdl/choice/choice.wsdl +167 -0
- data/test/wsdl/choice/choiceDriver.rb +69 -0
- data/test/wsdl/choice/choiceMappingRegistry.rb +131 -0
- data/test/wsdl/choice/test_choice.rb +310 -0
- data/test/wsdl/complexcontent/complexContent.rb +40 -0
- data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
- data/test/wsdl/complexcontent/complexContentMappingRegistry.rb +67 -0
- data/test/wsdl/complexcontent/test_echo.rb +89 -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 +88 -0
- data/test/wsdl/document/array/double.rb +114 -0
- data/test/wsdl/document/array/double.wsdl +161 -0
- data/test/wsdl/document/array/doubleDriver.rb +69 -0
- data/test/wsdl/document/array/doubleMappingRegistry.rb +115 -0
- data/test/wsdl/document/array/test_array.rb +202 -0
- data/test/wsdl/document/document.wsdl +76 -0
- data/test/wsdl/document/echo.rb +120 -0
- data/test/wsdl/document/echoDriver.rb +53 -0
- data/test/wsdl/document/echoMappingRegistry.rb +64 -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 +351 -0
- data/test/wsdl/emptycomplextype.wsdl +31 -0
- data/test/wsdl/fault/Add.rb +53 -0
- data/test/wsdl/fault/AddMappingRegistry.rb +46 -0
- data/test/wsdl/fault/AddServant.rb +28 -0
- data/test/wsdl/fault/AddService.rb +51 -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 +133 -0
- data/test/wsdl/group/echo.rb +58 -0
- data/test/wsdl/group/echoDriver.rb +53 -0
- data/test/wsdl/group/echoMappingRegistry.rb +67 -0
- data/test/wsdl/group/expectedClassdef.rb +58 -0
- data/test/wsdl/group/expectedDriver.rb +53 -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.rb +55 -0
- data/test/wsdl/list/list.wsdl +93 -0
- data/test/wsdl/list/listDriver.rb +53 -0
- data/test/wsdl/list/listMappingRegistry.rb +40 -0
- data/test/wsdl/list/test_list.rb +123 -0
- data/test/wsdl/map/map.wsdl +92 -0
- data/test/wsdl/map/map.xml +43 -0
- data/test/wsdl/map/test_map.rb +100 -0
- data/test/wsdl/marshal/Person.rb +23 -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.rb +17 -0
- data/test/wsdl/oneway/oneway.wsdl +36 -0
- data/test/wsdl/oneway/onewayDriver.rb +52 -0
- data/test/wsdl/oneway/onewayMappingRegistry.rb +20 -0
- data/test/wsdl/oneway/test_oneway.rb +107 -0
- data/test/wsdl/overload/OverloadServiceClient.rb +37 -0
- data/test/wsdl/overload/default.rb +1 -0
- data/test/wsdl/overload/defaultDriver.rb +61 -0
- data/test/wsdl/overload/defaultMappingRegistry.rb +8 -0
- data/test/wsdl/overload/defaultServant.rb +35 -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/default.rb +30 -0
- data/test/wsdl/qualified/defaultDriver.rb +51 -0
- data/test/wsdl/qualified/defaultMappingRegistry.rb +29 -0
- data/test/wsdl/qualified/lp.rb +45 -0
- data/test/wsdl/qualified/lp.wsdl +47 -0
- data/test/wsdl/qualified/lp.xsd +26 -0
- data/test/wsdl/qualified/lpDriver.rb +51 -0
- data/test/wsdl/qualified/lpMappingRegistry.rb +96 -0
- data/test/wsdl/qualified/np.wsdl +51 -0
- data/test/wsdl/qualified/test_qualified.rb +136 -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 +128 -0
- data/test/wsdl/ref/expectedDriver.rb +53 -0
- data/test/wsdl/ref/expectedProduct.rb +243 -0
- data/test/wsdl/ref/product.rb +243 -0
- data/test/wsdl/ref/product.wsdl +147 -0
- data/test/wsdl/ref/productDriver.rb +53 -0
- data/test/wsdl/ref/productMappingRegistry.rb +150 -0
- data/test/wsdl/ref/test_ref.rb +267 -0
- data/test/wsdl/rpc/RPC-Literal-TestDefinitions.rb +90 -0
- data/test/wsdl/rpc/RPC-Literal-TestDefinitionsDriver.rb +149 -0
- data/test/wsdl/rpc/RPC-Literal-TestDefinitionsMappingRegistry.rb +168 -0
- data/test/wsdl/rpc/echo.rb +35 -0
- data/test/wsdl/rpc/echoDriver.rb +74 -0
- data/test/wsdl/rpc/echoMappingRegistry.rb +46 -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 +177 -0
- data/test/wsdl/rpc/test_rpc_lit.rb +471 -0
- data/test/wsdl/simplecontent/simpleContent.rb +78 -0
- data/test/wsdl/simplecontent/simpleContentDriver.rb +53 -0
- data/test/wsdl/simplecontent/simpleContentMappingRegistry.rb +77 -0
- data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
- data/test/wsdl/simplecontent/test_simplecontent.rb +101 -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 +93 -0
- data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
- data/test/wsdl/soap/test_soapbodyparts.rb +80 -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/mysample.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/echo.rb +21 -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/echo.rb +23 -0
- data/test/wsdl/soaptype/echoDriver.rb +55 -0
- data/test/wsdl/soaptype/echoMappingRegistry.rb +32 -0
- data/test/wsdl/soaptype/soaptype.wsdl +61 -0
- data/test/wsdl/soaptype/test_soaptype.rb +176 -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_iconvcharset.rb +20 -0
- data/test/xsd/test_noencoding.rb +33 -0
- data/test/xsd/test_ns.rb +41 -0
- data/test/xsd/test_xmlschemaparser.rb +22 -0
- data/test/xsd/test_xsd.rb +1640 -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/mysample.rb +65 -0
- data/test/xsd/xsd2ruby/mysample_mapper.rb +11 -0
- data/test/xsd/xsd2ruby/mysample_mapping_registry.rb +51 -0
- data/test/xsd/xsd2ruby/section.xsd +49 -0
- data/test/xsd/xsd2ruby/test_xsd2ruby.rb +89 -0
- metadata +762 -24
- data/lib/xsd/xmlparser/nokogiriparser.rb +0 -63
- data/lib/xsd/xmlparser/ogaparser.rb +0 -53
- 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
|
-
|
87
|
-
|
88
|
-
class NSDBase
|
89
|
-
@@types = []
|
97
|
+
def self.types
|
98
|
+
@@types
|
99
|
+
end
|
90
100
|
|
91
|
-
|
101
|
+
def initialize
|
102
|
+
end
|
92
103
|
|
93
|
-
|
94
|
-
|
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
|
-
|
102
|
-
|
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
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
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
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
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
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
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
|
-
|
123
|
-
|
124
|
-
|
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
|
-
|
127
|
-
def check_lexical_format(value)
|
128
|
-
screen_data(value)
|
129
|
-
true
|
130
|
-
end
|
154
|
+
private
|
131
155
|
|
132
|
-
|
133
|
-
|
134
|
-
|
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
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
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
|
-
|
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
|
-
|
157
|
-
|
158
|
-
|
159
|
-
end
|
175
|
+
def _set(value)
|
176
|
+
@data = value
|
177
|
+
end
|
160
178
|
|
161
|
-
|
162
|
-
|
163
|
-
|
179
|
+
def _to_s
|
180
|
+
@data.to_s
|
181
|
+
end
|
164
182
|
end
|
165
183
|
|
166
|
-
|
167
|
-
|
168
|
-
|
184
|
+
class XSDNil < XSDAnySimpleType
|
185
|
+
Type = QName.new(Namespace, NilLiteral)
|
186
|
+
Value = 'true'
|
169
187
|
|
170
|
-
|
171
|
-
|
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
|
-
|
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
|
-
|
192
|
-
init(Type, value)
|
193
|
-
end
|
204
|
+
@@strict_ces_validation = false
|
194
205
|
|
195
|
-
|
206
|
+
def self.strict_ces_validation=(strict_ces_validation)
|
207
|
+
@@strict_ces_validation = strict_ces_validation
|
208
|
+
end
|
196
209
|
|
197
|
-
|
198
|
-
|
199
|
-
|
210
|
+
def self.strict_ces_validation
|
211
|
+
@@strict_ces_validation
|
212
|
+
end
|
200
213
|
|
201
|
-
|
202
|
-
@@strict_ces_validation
|
203
|
-
end
|
214
|
+
private
|
204
215
|
|
205
|
-
|
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
|
-
|
208
|
-
|
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
|
-
|
233
|
+
class XSDBoolean < XSDAnySimpleType
|
234
|
+
Type = QName.new(Namespace, BooleanLiteral)
|
220
235
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
private
|
236
|
+
def initialize(value = nil)
|
237
|
+
init(Type, value)
|
238
|
+
end
|
226
239
|
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
if
|
231
|
-
|
232
|
-
|
233
|
-
|
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
|
-
|
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
|
-
|
258
|
+
class XSDDecimal < XSDAnySimpleType
|
259
|
+
Type = QName.new(Namespace, DecimalLiteral)
|
245
260
|
|
246
|
-
|
247
|
-
|
248
|
-
|
261
|
+
def initialize(value = nil)
|
262
|
+
init(Type, value)
|
263
|
+
end
|
249
264
|
|
250
|
-
|
251
|
-
|
252
|
-
|
265
|
+
def nonzero?
|
266
|
+
(@number != '0')
|
267
|
+
end
|
253
268
|
|
254
|
-
private
|
269
|
+
private
|
255
270
|
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
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
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
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
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
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
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
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
|
-
|
308
|
-
|
309
|
-
|
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
|
-
|
317
|
-
|
318
|
-
|
335
|
+
def initialize(value = nil)
|
336
|
+
init(Type, value)
|
337
|
+
end
|
319
338
|
|
320
|
-
|
321
|
-
init(Type, value)
|
322
|
-
end
|
339
|
+
private
|
323
340
|
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
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
|
-
|
343
|
-
str
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
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
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
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
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
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
|
-
|
377
|
-
|
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
|
-
|
384
|
-
|
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
|
-
|
387
|
-
|
388
|
-
|
401
|
+
def initialize(value = nil)
|
402
|
+
init(Type, value)
|
403
|
+
end
|
389
404
|
|
390
|
-
private
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
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
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
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
|
-
|
451
|
+
class XSDDuration < XSDAnySimpleType
|
452
|
+
Type = QName.new(Namespace, DurationLiteral)
|
438
453
|
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
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
|
-
|
448
|
-
|
449
|
-
|
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
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
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
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
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 '
|
521
|
+
require 'rational'
|
522
|
+
require 'date'
|
507
523
|
|
508
|
-
module XSDDateTimeImpl
|
509
|
-
|
510
|
-
|
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
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
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
|
-
|
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
|
-
|
542
|
-
|
543
|
-
|
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
|
-
|
546
|
-
|
547
|
-
|
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
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
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
|
-
|
586
|
+
((diffmin < 0) ? '-' : '+') << format('%02d:%02d',
|
587
|
+
(diffmin.abs / 60.0).to_i, (diffmin.abs % 60.0).to_i)
|
562
588
|
end
|
563
|
-
|
564
|
-
end
|
589
|
+
end
|
565
590
|
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
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
|
-
|
577
|
-
|
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
|
-
|
597
|
-
|
598
|
-
|
599
|
-
end
|
617
|
+
class XSDDateTime < XSDAnySimpleType
|
618
|
+
include XSDDateTimeImpl
|
619
|
+
Type = QName.new(Namespace, DateTimeLiteral)
|
600
620
|
|
601
|
-
|
602
|
-
|
603
|
-
|
621
|
+
def initialize(value = nil)
|
622
|
+
init(Type, value)
|
623
|
+
end
|
604
624
|
|
605
|
-
|
606
|
-
init(Type, value)
|
607
|
-
end
|
625
|
+
private
|
608
626
|
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
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
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
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
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
if @
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
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
|
-
|
666
|
-
|
679
|
+
class XSDTime < XSDAnySimpleType
|
680
|
+
include XSDDateTimeImpl
|
681
|
+
Type = QName.new(Namespace, TimeLiteral)
|
667
682
|
|
668
|
-
|
669
|
-
|
670
|
-
|
683
|
+
def initialize(value = nil)
|
684
|
+
init(Type, value)
|
685
|
+
end
|
671
686
|
|
672
|
-
private
|
687
|
+
private
|
673
688
|
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
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
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
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
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
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
|
-
|
716
|
-
|
729
|
+
class XSDDate < XSDAnySimpleType
|
730
|
+
include XSDDateTimeImpl
|
731
|
+
Type = QName.new(Namespace, DateLiteral)
|
717
732
|
|
718
|
-
|
719
|
-
|
720
|
-
|
733
|
+
def initialize(value = nil)
|
734
|
+
init(Type, value)
|
735
|
+
end
|
721
736
|
|
722
|
-
private
|
737
|
+
private
|
723
738
|
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
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
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
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
|
-
|
748
|
-
|
761
|
+
class XSDGYearMonth < XSDAnySimpleType
|
762
|
+
include XSDDateTimeImpl
|
763
|
+
Type = QName.new(Namespace, GYearMonthLiteral)
|
749
764
|
|
750
|
-
|
751
|
-
|
752
|
-
|
765
|
+
def initialize(value = nil)
|
766
|
+
init(Type, value)
|
767
|
+
end
|
753
768
|
|
754
|
-
private
|
769
|
+
private
|
755
770
|
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
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
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
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
|
-
|
779
|
-
|
792
|
+
class XSDGYear < XSDAnySimpleType
|
793
|
+
include XSDDateTimeImpl
|
794
|
+
Type = QName.new(Namespace, GYearLiteral)
|
780
795
|
|
781
|
-
|
782
|
-
|
783
|
-
|
796
|
+
def initialize(value = nil)
|
797
|
+
init(Type, value)
|
798
|
+
end
|
784
799
|
|
785
|
-
private
|
800
|
+
private
|
786
801
|
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
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
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
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
|
-
|
809
|
-
|
822
|
+
class XSDGMonthDay < XSDAnySimpleType
|
823
|
+
include XSDDateTimeImpl
|
824
|
+
Type = QName.new(Namespace, GMonthDayLiteral)
|
810
825
|
|
811
|
-
|
812
|
-
|
813
|
-
|
826
|
+
def initialize(value = nil)
|
827
|
+
init(Type, value)
|
828
|
+
end
|
814
829
|
|
815
|
-
private
|
830
|
+
private
|
816
831
|
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
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
|
-
|
829
|
-
|
830
|
-
|
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
|
-
|
836
|
-
|
849
|
+
class XSDGDay < XSDAnySimpleType
|
850
|
+
include XSDDateTimeImpl
|
851
|
+
Type = QName.new(Namespace, GDayLiteral)
|
837
852
|
|
838
|
-
|
839
|
-
|
840
|
-
|
853
|
+
def initialize(value = nil)
|
854
|
+
init(Type, value)
|
855
|
+
end
|
841
856
|
|
842
|
-
private
|
857
|
+
private
|
843
858
|
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
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
|
-
|
855
|
-
|
856
|
-
|
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
|
-
|
862
|
-
|
875
|
+
class XSDGMonth < XSDAnySimpleType
|
876
|
+
include XSDDateTimeImpl
|
877
|
+
Type = QName.new(Namespace, GMonthLiteral)
|
863
878
|
|
864
|
-
|
865
|
-
|
866
|
-
|
879
|
+
def initialize(value = nil)
|
880
|
+
init(Type, value)
|
881
|
+
end
|
867
882
|
|
868
|
-
private
|
883
|
+
private
|
869
884
|
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
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
|
-
|
881
|
-
|
882
|
-
|
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
|
-
|
901
|
+
class XSDHexBinary < XSDAnySimpleType
|
902
|
+
Type = QName.new(Namespace, HexBinaryLiteral)
|
888
903
|
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
904
|
+
# String in Ruby could be a binary.
|
905
|
+
def initialize(value = nil)
|
906
|
+
init(Type, value)
|
907
|
+
end
|
893
908
|
|
894
|
-
|
895
|
-
|
896
|
-
|
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
|
-
|
903
|
-
|
904
|
-
|
917
|
+
def string
|
918
|
+
[@data].pack("H*")
|
919
|
+
end
|
905
920
|
|
906
|
-
private
|
921
|
+
private
|
907
922
|
|
908
|
-
|
909
|
-
|
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
|
-
|
928
|
+
class XSDBase64Binary < XSDAnySimpleType
|
929
|
+
Type = QName.new(Namespace, Base64BinaryLiteral)
|
915
930
|
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
931
|
+
# String in Ruby could be a binary.
|
932
|
+
def initialize(value = nil)
|
933
|
+
init(Type, value)
|
934
|
+
end
|
920
935
|
|
921
|
-
|
922
|
-
|
923
|
-
|
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
|
-
|
930
|
-
|
931
|
-
|
944
|
+
def string
|
945
|
+
@data.unpack("m")[0]
|
946
|
+
end
|
932
947
|
|
933
|
-
private
|
948
|
+
private
|
934
949
|
|
935
|
-
|
936
|
-
|
950
|
+
def screen_data(value)
|
951
|
+
[value].pack("m").strip
|
952
|
+
end
|
937
953
|
end
|
938
|
-
end
|
939
954
|
|
940
|
-
class XSDAnyURI < XSDAnySimpleType
|
941
|
-
|
955
|
+
class XSDAnyURI < XSDAnySimpleType
|
956
|
+
Type = QName.new(Namespace, AnyURILiteral)
|
942
957
|
|
943
|
-
|
944
|
-
|
945
|
-
|
958
|
+
def initialize(value = nil)
|
959
|
+
init(Type, value)
|
960
|
+
end
|
946
961
|
|
947
|
-
private
|
962
|
+
private
|
948
963
|
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
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
|
-
|
973
|
+
class XSDQName < XSDAnySimpleType
|
974
|
+
Type = QName.new(Namespace, QNameLiteral)
|
960
975
|
|
961
|
-
|
962
|
-
|
963
|
-
|
976
|
+
def initialize(value = nil)
|
977
|
+
init(Type, value)
|
978
|
+
end
|
964
979
|
|
965
|
-
private
|
980
|
+
private
|
966
981
|
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
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
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
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
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
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
|
-
|
1012
|
+
###
|
1013
|
+
## Derived types
|
1014
|
+
#
|
1015
|
+
class XSDNormalizedString < XSDString
|
1016
|
+
Type = QName.new(Namespace, NormalizedStringLiteral)
|
1002
1017
|
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1018
|
+
def initialize(value = nil)
|
1019
|
+
init(Type, value)
|
1020
|
+
end
|
1006
1021
|
|
1007
|
-
private
|
1022
|
+
private
|
1008
1023
|
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
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
|
-
|
1033
|
+
class XSDToken < XSDNormalizedString
|
1034
|
+
Type = QName.new(Namespace, TokenLiteral)
|
1020
1035
|
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1036
|
+
def initialize(value = nil)
|
1037
|
+
init(Type, value)
|
1038
|
+
end
|
1024
1039
|
|
1025
|
-
private
|
1040
|
+
private
|
1026
1041
|
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
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
|
-
|
1037
|
-
Type = QName.new(Namespace, LanguageLiteral)
|
1051
|
+
super
|
1038
1052
|
|
1039
|
-
|
1040
|
-
|
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
|
-
|
1060
|
+
class XSDLanguage < XSDToken
|
1061
|
+
Type = QName.new(Namespace, LanguageLiteral)
|
1044
1062
|
|
1045
|
-
|
1046
|
-
|
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
|
-
|
1056
|
-
Type = QName.new(Namespace, NMTOKENLiteral)
|
1067
|
+
private
|
1057
1068
|
|
1058
|
-
|
1059
|
-
|
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
|
-
|
1079
|
+
class XSDNMTOKEN < XSDToken
|
1080
|
+
Type = QName.new(Namespace, NMTOKENLiteral)
|
1063
1081
|
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1067
|
-
value
|
1068
|
-
end
|
1069
|
-
end
|
1082
|
+
def initialize(value = nil)
|
1083
|
+
init(Type, value)
|
1084
|
+
end
|
1070
1085
|
|
1071
|
-
|
1072
|
-
Type = QName.new(Namespace, NMTOKENSLiteral)
|
1086
|
+
private
|
1073
1087
|
|
1074
|
-
|
1075
|
-
|
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
|
-
|
1095
|
+
class XSDNMTOKENS < XSDNMTOKEN
|
1096
|
+
Type = QName.new(Namespace, NMTOKENSLiteral)
|
1079
1097
|
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1083
|
-
value
|
1084
|
-
end
|
1085
|
-
end
|
1098
|
+
def initialize(value = nil)
|
1099
|
+
init(Type, value)
|
1100
|
+
end
|
1086
1101
|
|
1087
|
-
|
1088
|
-
Type = QName.new(Namespace, NameLiteral)
|
1102
|
+
private
|
1089
1103
|
|
1090
|
-
|
1091
|
-
|
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
|
-
|
1111
|
+
class XSDName < XSDToken
|
1112
|
+
Type = QName.new(Namespace, NameLiteral)
|
1095
1113
|
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
value
|
1100
|
-
end
|
1101
|
-
end
|
1114
|
+
def initialize(value = nil)
|
1115
|
+
init(Type, value)
|
1116
|
+
end
|
1102
1117
|
|
1103
|
-
|
1104
|
-
Type = QName.new(Namespace, NCNameLiteral)
|
1118
|
+
private
|
1105
1119
|
|
1106
|
-
|
1107
|
-
|
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
|
-
|
1127
|
+
class XSDNCName < XSDName
|
1128
|
+
Type = QName.new(Namespace, NCNameLiteral)
|
1111
1129
|
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
value
|
1116
|
-
end
|
1117
|
-
end
|
1130
|
+
def initialize(value = nil)
|
1131
|
+
init(Type, value)
|
1132
|
+
end
|
1118
1133
|
|
1119
|
-
|
1120
|
-
Type = QName.new(Namespace, IDLiteral)
|
1134
|
+
private
|
1121
1135
|
|
1122
|
-
|
1123
|
-
|
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
|
-
|
1143
|
+
class XSDID < XSDNCName
|
1144
|
+
Type = QName.new(Namespace, IDLiteral)
|
1127
1145
|
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
value
|
1132
|
-
end
|
1133
|
-
end
|
1146
|
+
def initialize(value = nil)
|
1147
|
+
init(Type, value)
|
1148
|
+
end
|
1134
1149
|
|
1135
|
-
|
1136
|
-
Type = QName.new(Namespace, IDREFLiteral)
|
1150
|
+
private
|
1137
1151
|
|
1138
|
-
|
1139
|
-
|
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
|
-
|
1159
|
+
class XSDIDREF < XSDNCName
|
1160
|
+
Type = QName.new(Namespace, IDREFLiteral)
|
1143
1161
|
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
value
|
1148
|
-
end
|
1149
|
-
end
|
1162
|
+
def initialize(value = nil)
|
1163
|
+
init(Type, value)
|
1164
|
+
end
|
1150
1165
|
|
1151
|
-
|
1152
|
-
Type = QName.new(Namespace, IDREFSLiteral)
|
1166
|
+
private
|
1153
1167
|
|
1154
|
-
|
1155
|
-
|
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
|
-
|
1175
|
+
class XSDIDREFS < XSDIDREF
|
1176
|
+
Type = QName.new(Namespace, IDREFSLiteral)
|
1159
1177
|
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
value
|
1164
|
-
end
|
1165
|
-
end
|
1178
|
+
def initialize(value = nil)
|
1179
|
+
init(Type, value)
|
1180
|
+
end
|
1166
1181
|
|
1167
|
-
|
1168
|
-
Type = QName.new(Namespace, ENTITYLiteral)
|
1182
|
+
private
|
1169
1183
|
|
1170
|
-
|
1171
|
-
|
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
|
-
|
1191
|
+
class XSDENTITY < XSDNCName
|
1192
|
+
Type = QName.new(Namespace, ENTITYLiteral)
|
1175
1193
|
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
value
|
1180
|
-
end
|
1181
|
-
end
|
1194
|
+
def initialize(value = nil)
|
1195
|
+
init(Type, value)
|
1196
|
+
end
|
1182
1197
|
|
1183
|
-
|
1184
|
-
Type = QName.new(Namespace, ENTITIESLiteral)
|
1198
|
+
private
|
1185
1199
|
|
1186
|
-
|
1187
|
-
|
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
|
-
|
1207
|
+
class XSDENTITIES < XSDENTITY
|
1208
|
+
Type = QName.new(Namespace, ENTITIESLiteral)
|
1191
1209
|
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
value
|
1196
|
-
end
|
1197
|
-
end
|
1210
|
+
def initialize(value = nil)
|
1211
|
+
init(Type, value)
|
1212
|
+
end
|
1198
1213
|
|
1199
|
-
|
1200
|
-
Type = QName.new(Namespace, IntegerLiteral)
|
1214
|
+
private
|
1201
1215
|
|
1202
|
-
|
1203
|
-
|
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
|
-
|
1223
|
+
class XSDInteger < XSDDecimal
|
1224
|
+
Type = QName.new(Namespace, IntegerLiteral)
|
1207
1225
|
|
1208
|
-
|
1209
|
-
|
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
|
-
|
1215
|
-
|
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
|
-
|
1221
|
-
|
1222
|
-
|
1244
|
+
def _set(value)
|
1245
|
+
@data = value
|
1246
|
+
end
|
1223
1247
|
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1248
|
+
def _to_s
|
1249
|
+
@data.to_s
|
1250
|
+
end
|
1227
1251
|
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
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
|
-
|
1235
|
-
|
1236
|
-
|
1258
|
+
def maxinclusive
|
1259
|
+
nil
|
1260
|
+
end
|
1237
1261
|
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1262
|
+
def mininclusive
|
1263
|
+
nil
|
1264
|
+
end
|
1241
1265
|
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1266
|
+
PositiveMinInclusive = 1
|
1267
|
+
def positive(v)
|
1268
|
+
PositiveMinInclusive <= v
|
1269
|
+
end
|
1245
1270
|
end
|
1246
|
-
end
|
1247
1271
|
|
1248
|
-
class XSDNonPositiveInteger < XSDInteger
|
1249
|
-
|
1272
|
+
class XSDNonPositiveInteger < XSDInteger
|
1273
|
+
Type = QName.new(Namespace, NonPositiveIntegerLiteral)
|
1250
1274
|
|
1251
|
-
|
1252
|
-
|
1253
|
-
|
1275
|
+
def initialize(value = nil)
|
1276
|
+
init(Type, value)
|
1277
|
+
end
|
1254
1278
|
|
1255
|
-
private
|
1279
|
+
private
|
1256
1280
|
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1281
|
+
def maxinclusive
|
1282
|
+
0
|
1283
|
+
end
|
1260
1284
|
|
1261
|
-
|
1262
|
-
|
1285
|
+
def mininclusive
|
1286
|
+
nil
|
1287
|
+
end
|
1263
1288
|
end
|
1264
|
-
end
|
1265
1289
|
|
1266
|
-
class XSDNegativeInteger < XSDNonPositiveInteger
|
1267
|
-
|
1290
|
+
class XSDNegativeInteger < XSDNonPositiveInteger
|
1291
|
+
Type = QName.new(Namespace, NegativeIntegerLiteral)
|
1268
1292
|
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1293
|
+
def initialize(value = nil)
|
1294
|
+
init(Type, value)
|
1295
|
+
end
|
1272
1296
|
|
1273
|
-
private
|
1297
|
+
private
|
1274
1298
|
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1299
|
+
def maxinclusive
|
1300
|
+
-1
|
1301
|
+
end
|
1278
1302
|
|
1279
|
-
|
1280
|
-
|
1303
|
+
def mininclusive
|
1304
|
+
nil
|
1305
|
+
end
|
1281
1306
|
end
|
1282
|
-
end
|
1283
1307
|
|
1284
|
-
class XSDLong < XSDInteger
|
1285
|
-
|
1308
|
+
class XSDLong < XSDInteger
|
1309
|
+
Type = QName.new(Namespace, LongLiteral)
|
1286
1310
|
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1311
|
+
def initialize(value = nil)
|
1312
|
+
init(Type, value)
|
1313
|
+
end
|
1290
1314
|
|
1291
|
-
private
|
1315
|
+
private
|
1292
1316
|
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1317
|
+
def maxinclusive
|
1318
|
+
+9223372036854775807
|
1319
|
+
end
|
1296
1320
|
|
1297
|
-
|
1298
|
-
|
1321
|
+
def mininclusive
|
1322
|
+
-9223372036854775808
|
1323
|
+
end
|
1299
1324
|
end
|
1300
|
-
end
|
1301
1325
|
|
1302
|
-
class XSDInt < XSDLong
|
1303
|
-
|
1326
|
+
class XSDInt < XSDLong
|
1327
|
+
Type = QName.new(Namespace, IntLiteral)
|
1304
1328
|
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1329
|
+
def initialize(value = nil)
|
1330
|
+
init(Type, value)
|
1331
|
+
end
|
1308
1332
|
|
1309
|
-
private
|
1333
|
+
private
|
1310
1334
|
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1335
|
+
def maxinclusive
|
1336
|
+
+2147483647
|
1337
|
+
end
|
1314
1338
|
|
1315
|
-
|
1316
|
-
|
1339
|
+
def mininclusive
|
1340
|
+
-2147483648
|
1341
|
+
end
|
1317
1342
|
end
|
1318
|
-
end
|
1319
1343
|
|
1320
|
-
class XSDShort < XSDInt
|
1321
|
-
|
1344
|
+
class XSDShort < XSDInt
|
1345
|
+
Type = QName.new(Namespace, ShortLiteral)
|
1322
1346
|
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1347
|
+
def initialize(value = nil)
|
1348
|
+
init(Type, value)
|
1349
|
+
end
|
1326
1350
|
|
1327
|
-
private
|
1351
|
+
private
|
1328
1352
|
|
1329
|
-
|
1330
|
-
|
1331
|
-
|
1353
|
+
def maxinclusive
|
1354
|
+
+32767
|
1355
|
+
end
|
1332
1356
|
|
1333
|
-
|
1334
|
-
|
1357
|
+
def mininclusive
|
1358
|
+
-32768
|
1359
|
+
end
|
1335
1360
|
end
|
1336
|
-
end
|
1337
1361
|
|
1338
|
-
class XSDByte < XSDShort
|
1339
|
-
|
1362
|
+
class XSDByte < XSDShort
|
1363
|
+
Type = QName.new(Namespace, ByteLiteral)
|
1340
1364
|
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1365
|
+
def initialize(value = nil)
|
1366
|
+
init(Type, value)
|
1367
|
+
end
|
1344
1368
|
|
1345
|
-
private
|
1369
|
+
private
|
1346
1370
|
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1371
|
+
def maxinclusive
|
1372
|
+
+127
|
1373
|
+
end
|
1350
1374
|
|
1351
|
-
|
1352
|
-
|
1375
|
+
def mininclusive
|
1376
|
+
-128
|
1377
|
+
end
|
1353
1378
|
end
|
1354
|
-
end
|
1355
1379
|
|
1356
|
-
class XSDNonNegativeInteger < XSDInteger
|
1357
|
-
|
1380
|
+
class XSDNonNegativeInteger < XSDInteger
|
1381
|
+
Type = QName.new(Namespace, NonNegativeIntegerLiteral)
|
1358
1382
|
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1383
|
+
def initialize(value = nil)
|
1384
|
+
init(Type, value)
|
1385
|
+
end
|
1362
1386
|
|
1363
|
-
private
|
1387
|
+
private
|
1364
1388
|
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1389
|
+
def maxinclusive
|
1390
|
+
nil
|
1391
|
+
end
|
1368
1392
|
|
1369
|
-
|
1370
|
-
|
1393
|
+
def mininclusive
|
1394
|
+
0
|
1395
|
+
end
|
1371
1396
|
end
|
1372
|
-
end
|
1373
1397
|
|
1374
|
-
class XSDUnsignedLong < XSDNonNegativeInteger
|
1375
|
-
|
1398
|
+
class XSDUnsignedLong < XSDNonNegativeInteger
|
1399
|
+
Type = QName.new(Namespace, UnsignedLongLiteral)
|
1376
1400
|
|
1377
|
-
|
1378
|
-
|
1379
|
-
|
1401
|
+
def initialize(value = nil)
|
1402
|
+
init(Type, value)
|
1403
|
+
end
|
1380
1404
|
|
1381
|
-
private
|
1405
|
+
private
|
1382
1406
|
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1407
|
+
def maxinclusive
|
1408
|
+
+18446744073709551615
|
1409
|
+
end
|
1386
1410
|
|
1387
|
-
|
1388
|
-
|
1411
|
+
def mininclusive
|
1412
|
+
0
|
1413
|
+
end
|
1389
1414
|
end
|
1390
|
-
end
|
1391
1415
|
|
1392
|
-
class XSDUnsignedInt < XSDUnsignedLong
|
1393
|
-
|
1416
|
+
class XSDUnsignedInt < XSDUnsignedLong
|
1417
|
+
Type = QName.new(Namespace, UnsignedIntLiteral)
|
1394
1418
|
|
1395
|
-
|
1396
|
-
|
1397
|
-
|
1419
|
+
def initialize(value = nil)
|
1420
|
+
init(Type, value)
|
1421
|
+
end
|
1398
1422
|
|
1399
|
-
private
|
1423
|
+
private
|
1400
1424
|
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1425
|
+
def maxinclusive
|
1426
|
+
+4294967295
|
1427
|
+
end
|
1404
1428
|
|
1405
|
-
|
1406
|
-
|
1429
|
+
def mininclusive
|
1430
|
+
0
|
1431
|
+
end
|
1407
1432
|
end
|
1408
|
-
end
|
1409
1433
|
|
1410
|
-
class XSDUnsignedShort < XSDUnsignedInt
|
1411
|
-
|
1434
|
+
class XSDUnsignedShort < XSDUnsignedInt
|
1435
|
+
Type = QName.new(Namespace, UnsignedShortLiteral)
|
1412
1436
|
|
1413
|
-
|
1414
|
-
|
1415
|
-
|
1437
|
+
def initialize(value = nil)
|
1438
|
+
init(Type, value)
|
1439
|
+
end
|
1416
1440
|
|
1417
|
-
private
|
1441
|
+
private
|
1418
1442
|
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1443
|
+
def maxinclusive
|
1444
|
+
+65535
|
1445
|
+
end
|
1422
1446
|
|
1423
|
-
|
1424
|
-
|
1447
|
+
def mininclusive
|
1448
|
+
0
|
1449
|
+
end
|
1425
1450
|
end
|
1426
|
-
end
|
1427
1451
|
|
1428
|
-
class XSDUnsignedByte < XSDUnsignedShort
|
1429
|
-
|
1452
|
+
class XSDUnsignedByte < XSDUnsignedShort
|
1453
|
+
Type = QName.new(Namespace, UnsignedByteLiteral)
|
1430
1454
|
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1455
|
+
def initialize(value = nil)
|
1456
|
+
init(Type, value)
|
1457
|
+
end
|
1434
1458
|
|
1435
|
-
private
|
1459
|
+
private
|
1436
1460
|
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1461
|
+
def maxinclusive
|
1462
|
+
+255
|
1463
|
+
end
|
1440
1464
|
|
1441
|
-
|
1442
|
-
|
1465
|
+
def mininclusive
|
1466
|
+
0
|
1467
|
+
end
|
1443
1468
|
end
|
1444
|
-
end
|
1445
1469
|
|
1446
|
-
class XSDPositiveInteger < XSDNonNegativeInteger
|
1447
|
-
|
1470
|
+
class XSDPositiveInteger < XSDNonNegativeInteger
|
1471
|
+
Type = QName.new(Namespace, PositiveIntegerLiteral)
|
1448
1472
|
|
1449
|
-
|
1450
|
-
|
1451
|
-
|
1473
|
+
def initialize(value = nil)
|
1474
|
+
init(Type, value)
|
1475
|
+
end
|
1452
1476
|
|
1453
|
-
private
|
1477
|
+
private
|
1454
1478
|
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1479
|
+
def maxinclusive
|
1480
|
+
nil
|
1481
|
+
end
|
1458
1482
|
|
1459
|
-
|
1460
|
-
|
1483
|
+
def mininclusive
|
1484
|
+
1
|
1485
|
+
end
|
1461
1486
|
end
|
1462
|
-
end
|
1463
1487
|
|
1464
1488
|
|
1465
1489
|
end
|