# File lib/puppet/util/settings.rb, line 335
335:     def unsafe_parse(file)
336:         parse_file(file).each do |area, values|
337:             @values[area] = values
338:         end
339: 
340:         # Determine our environment, if we have one.
341:         if @config[:environment]
342:             env = self.value(:environment).to_sym
343:         else
344:             env = "none"
345:         end
346: 
347:         # Call any hooks we should be calling.
348:         settings_with_hooks.each do |setting|
349:             each_source(env) do |source|
350:                 if value = @values[source][setting.name]
351:                     # We still have to use value() to retrieve the value, since
352:                     # we want the fully interpolated value, not $vardir/lib or whatever.
353:                     # This results in extra work, but so few of the settings
354:                     # will have associated hooks that it ends up being less work this
355:                     # way overall.
356:                     setting.handle(self.value(setting.name, env))
357:                     break
358:                 end
359:             end
360:         end
361: 
362:         # We have to do it in the reverse of the search path,
363:         # because multiple sections could set the same value
364:         # and I'm too lazy to only set the metadata once.
365:         searchpath.reverse.each do |source|
366:             if meta = @values[source][:_meta]
367:                 set_metadata(meta)
368:             end
369:         end
370:     end