diff options
Diffstat (limited to 'lib/wsdl/xmlSchema/simpleRestriction.rb')
-rw-r--r-- | lib/wsdl/xmlSchema/simpleRestriction.rb | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/lib/wsdl/xmlSchema/simpleRestriction.rb b/lib/wsdl/xmlSchema/simpleRestriction.rb index 6986e74423..e8bf3ebfa5 100644 --- a/lib/wsdl/xmlSchema/simpleRestriction.rb +++ b/lib/wsdl/xmlSchema/simpleRestriction.rb @@ -1,4 +1,4 @@ -# WSDL4R - XMLSchema simpleType definition for WSDL. +# WSDL4R - XMLSchema simpleContent restriction definition for WSDL. # Copyright (C) 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>. # This program is copyrighted free software by NAKAMURA, Hiroshi. You can @@ -17,21 +17,32 @@ module XMLSchema class SimpleRestriction < Info attr_reader :base attr_reader :enumeration + attr_accessor :length + attr_accessor :pattern def initialize super @base = nil @enumeration = [] # NamedElements? + @length = nil + @pattern = nil end def valid?(value) - @enumeration.include?(value) + return false unless check_restriction(value) + return false unless check_length(value) + return false unless check_pattern(value) + true end def parse_element(element) case element when EnumerationName Enumeration.new # just a parsing handler + when LengthName + Length.new # just a parsing handler + when PatternName + Pattern.new # just a parsing handler end end @@ -41,6 +52,20 @@ class SimpleRestriction < Info @base = value end end + +private + + def check_restriction(value) + @enumeration.empty? or @enumeration.include?(value) + end + + def check_length(value) + @length.nil? or value.size == @length + end + + def check_pattern(value) + @pattern.nil? or @pattern =~ value + end end |