# File lib/puppet/file_serving/configuration/parser.rb, line 9
 9:     def parse
10:         raise("File server configuration %s does not exist" % self.file) unless FileTest.exists?(self.file)
11:         raise("Cannot read file server configuration %s" % self.file) unless FileTest.readable?(self.file)
12: 
13:         @mounts = {}
14:         @count = 0
15: 
16:         File.open(self.file) { |f|
17:             mount = nil
18:             f.each { |line|
19:                 # Have the count increment at the top, in case we throw exceptions.
20:                 @count += 1
21: 
22:                 case line
23:                 when /^\s*#/; next # skip comments
24:                 when /^\s*$/; next # skip blank lines
25:                 when /\[([-\w]+)\]/
26:                     mount = newmount($1)
27:                 when /^\s*(\w+)\s+(.+)$/
28:                     var = $1
29:                     value = $2
30:                     raise(ArgumentError, "Fileserver configuration file does not use '=' as a separator") if value =~ /^=/
31:                     case var
32:                     when "path"
33:                         path(mount, value)
34:                     when "allow"
35:                         allow(mount, value)
36:                     when "deny"
37:                         deny(mount, value)
38:                     else
39:                         raise ArgumentError.new("Invalid argument '%s'" % var,
40:                             @count, file)
41:                     end
42:                 else
43:                     raise ArgumentError.new("Invalid line '%s'" % line.chomp,
44:                         @count, file)
45:                 end
46:             }
47:         }
48: 
49:         validate()
50: 
51:         return @mounts
52:     end