From 6133b96d61c705c7aefdf6f577f0da5796bc522d Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> Date: Sat, 3 Jul 2004 15:38:36 +0000 Subject: This commit was manufactured by cvs2svn to create branch 'ruby_1_8'. git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@6568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/wsdl/xmlSchema/enumeration.rb | 36 +++++++++++++++ lib/wsdl/xmlSchema/simpleRestriction.rb | 48 +++++++++++++++++++ lib/wsdl/xmlSchema/simpleType.rb | 81 +++++++++++++++++++++++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 lib/wsdl/xmlSchema/enumeration.rb create mode 100644 lib/wsdl/xmlSchema/simpleRestriction.rb create mode 100644 lib/wsdl/xmlSchema/simpleType.rb (limited to 'lib/wsdl/xmlSchema') diff --git a/lib/wsdl/xmlSchema/enumeration.rb b/lib/wsdl/xmlSchema/enumeration.rb new file mode 100644 index 000000000..cd61572d0 --- /dev/null +++ b/lib/wsdl/xmlSchema/enumeration.rb @@ -0,0 +1,36 @@ +# WSDL4R - XMLSchema enumeration definition for WSDL. +# Copyright (C) 2004 NAKAMURA, Hiroshi . + +# This program is copyrighted free software by NAKAMURA, Hiroshi. You can +# redistribute it and/or modify it under the same terms of Ruby's license; +# either the dual license version in 2003, or any later version. + + +require 'wsdl/info' + + +module WSDL +module XMLSchema + + +class Enumeration < Info + def initialize + super + end + + def parse_element(element) + nil + end + + def parse_attr(attr, value) + case attr + when ValueAttrName + parent.enumeration << value + value + end + end +end + + +end +end diff --git a/lib/wsdl/xmlSchema/simpleRestriction.rb b/lib/wsdl/xmlSchema/simpleRestriction.rb new file mode 100644 index 000000000..6986e7442 --- /dev/null +++ b/lib/wsdl/xmlSchema/simpleRestriction.rb @@ -0,0 +1,48 @@ +# WSDL4R - XMLSchema simpleType definition for WSDL. +# Copyright (C) 2004 NAKAMURA, Hiroshi . + +# This program is copyrighted free software by NAKAMURA, Hiroshi. You can +# redistribute it and/or modify it under the same terms of Ruby's license; +# either the dual license version in 2003, or any later version. + + +require 'wsdl/info' +require 'xsd/namedelements' + + +module WSDL +module XMLSchema + + +class SimpleRestriction < Info + attr_reader :base + attr_reader :enumeration + + def initialize + super + @base = nil + @enumeration = [] # NamedElements? + end + + def valid?(value) + @enumeration.include?(value) + end + + def parse_element(element) + case element + when EnumerationName + Enumeration.new # just a parsing handler + end + end + + def parse_attr(attr, value) + case attr + when BaseAttrName + @base = value + end + end +end + + +end +end diff --git a/lib/wsdl/xmlSchema/simpleType.rb b/lib/wsdl/xmlSchema/simpleType.rb new file mode 100644 index 000000000..830086f99 --- /dev/null +++ b/lib/wsdl/xmlSchema/simpleType.rb @@ -0,0 +1,81 @@ +# WSDL4R - XMLSchema simpleType definition for WSDL. +# Copyright (C) 2004 NAKAMURA, Hiroshi . + +# This program is copyrighted free software by NAKAMURA, Hiroshi. You can +# redistribute it and/or modify it under the same terms of Ruby's license; +# either the dual license version in 2003, or any later version. + + +require 'wsdl/info' +require 'xsd/namedelements' + + +module WSDL +module XMLSchema + + +class SimpleType < Info + attr_accessor :name + attr_reader :derivetype + attr_reader :restriction + + def check_lexical_format(value) + if @restriction + check_restriction(value) + elsif @extension + raise NotImplementedError + # ToDo + else + raise ArgumentError.new("incomplete simpleType") + end + end + + def base + if @restriction + @restriction.base + elsif @extension + @extension.base + else + raise ArgumentError.new("incomplete simpleType") + end + end + + def initialize(name = nil) + super() + @name = name + @derivetype = nil + @restriction = nil + end + + def targetnamespace + parent.targetnamespace + end + + def parse_element(element) + case element + when RestrictionName + @restriction = SimpleRestriction.new + @derivetype = element.name + @restriction + end + end + + def parse_attr(attr, value) + case attr + when NameAttrName + @name = XSD::QName.new(targetnamespace, value) + end + end + +private + + def check_restriction(value) + unless @restriction.valid?(value) + raise ::XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'.") + end + end +end + + +end +end -- cgit