summaryrefslogtreecommitdiff
path: root/lib/wsdl/xmlSchema/simpleRestriction.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/wsdl/xmlSchema/simpleRestriction.rb')
-rw-r--r--lib/wsdl/xmlSchema/simpleRestriction.rb29
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