lib/tinymce/rails/asset_manifest/propshaft_manifest.rb



module TinyMCE
  module Rails
    class PropshaftManifest < AssetManifest
      def self.try(manifest_path)
        json_file = File.join(manifest_path, ".manifest.json")
        new(json_file) if File.exist?(json_file)
      end

      def initialize(file)
        @file = file
        @manifest = JSON.parse(File.read(file))
      end

      def append(logical_path, file)
        assets[logical_path] = logical_path
      end

      def remove(logical_path)
        assets.delete(logical_path)
      end

      def remove_digest(logical_path)
        asset_path(logical_path) do |digested, logical_path|
          assets[logical_path] = logical_path

          yield digested, logical_path if block_given?
        end
      end

      def assets
        @manifest
      end

      def dump
        JSON.generate(@manifest)
      end

      def write
        File.open(@file, "wb") { |f| f.write(dump) }
      end
    end
  end
end