Sha256: 71aed41cad61d78bf5ec79aba21c67215c88719097a3d93849bcd9e0ac081ce5

Contents?: true

Size: 996 Bytes

Versions: 5

Compression:

Stored size: 996 Bytes

Contents

# frozen_string_literal: true

require "json"
require "refinements/pathname"

module SublimeTextKit
  module Sessions
    # Manages the rebuilding of session information.
    class Rebuilder
      include Import[:configuration]

      using Refinements::Pathname

      def call
        session = read

        return unless session.dig "workspaces", "recent_workspaces"

        Pathname(metadata_dir).expand_path
                              .files("*.sublime-workspace")
                              .then do |workspaces|
                                session["workspaces"]["recent_workspaces"] = workspaces
                                write session
                              end
      end

      private

      def read = source_path.exist? ? JSON(source_path.read) : {}

      def write(json) = JSON.dump(json).then { |content| source_path.write content }

      def metadata_dir = configuration.metadata_dir

      def source_path = configuration.session_path
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
sublime_text_kit-16.5.0 lib/sublime_text_kit/sessions/rebuilder.rb
sublime_text_kit-16.3.0 lib/sublime_text_kit/sessions/rebuilder.rb
sublime_text_kit-16.2.0 lib/sublime_text_kit/sessions/rebuilder.rb
sublime_text_kit-16.1.0 lib/sublime_text_kit/sessions/rebuilder.rb
sublime_text_kit-16.0.0 lib/sublime_text_kit/sessions/rebuilder.rb