# File lib/nanoc3/base/item_rep.rb, line 347
    def write
      # Create parent directory
      FileUtils.mkdir_p(File.dirname(self.raw_path))

      # Check if file will be created
      @created = !File.file?(self.raw_path)

      if self.binary?
        # Calculate hash of old content
        if File.file?(self.raw_path)
          hash_old = hash_for_file(self.raw_path)
          size_old = File.size(self.raw_path)
        end

        # Copy
        FileUtils.cp(@filenames[:last], self.raw_path)
        @written = true

        # Check if file was modified
        size_new = File.size(self.raw_path)
        hash_new = hash_for_file(self.raw_path) if size_old == size_new
        @modified = (size_old != size_new || hash_old != hash_new)
      else
        # Remember old content
        if File.file?(self.raw_path)
          @old_content = File.read(self.raw_path)
        end

        # Write
        File.open(self.raw_path, 'w') { |io| io.write(@content[:last]) }
        @written = true

        # Generate diff
        generate_diff

        # Check if file was modified
        @modified = File.read(self.raw_path) != @old_content
      end
    end