# File lib/hiera/backend/puppet_backend.rb, line 8
      def hierarchy(scope, override)
        begin
          data_class = Config[:puppet][:datasource] || "data"
        rescue
          data_class = "data"
        end

        calling_class = scope.resource.name.to_s.downcase
        calling_module = calling_class.split("::").first

        hierarchy = Config[:hierarchy] || [calling_class, calling_module]

        hierarchy = [hierarchy].flatten.map do |klass|
          klass = Backend.parse_string(klass, scope,
            {
              "calling_class"  => calling_class,
              "calling_module" => calling_module
            }
          )

          next if klass == ""

          [data_class, klass].join("::")
        end.compact

        hierarchy << [calling_class, data_class].join("::")

        unless calling_module == calling_class
          hierarchy << [calling_module, data_class].join("::")
        end

        hierarchy.insert(0, [data_class, override].join("::")) if override

        hierarchy
      end