sublime_text_kit 10.0.2 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +18 -48
- data/bin/sublime_text_kit +1 -3
- data/lib/sublime_text_kit/cli/actions/config.rb +35 -0
- data/lib/sublime_text_kit/cli/actions/metadata.rb +63 -0
- data/lib/sublime_text_kit/cli/actions/session.rb +26 -0
- data/lib/sublime_text_kit/cli/actions/snippets.rb +35 -0
- data/lib/sublime_text_kit/cli/actions/update.rb +42 -0
- data/lib/sublime_text_kit/cli/configuration/content.rb +45 -0
- data/lib/sublime_text_kit/cli/configuration/defaults.yml +3 -0
- data/lib/sublime_text_kit/cli/configuration/loader.rb +37 -0
- data/lib/sublime_text_kit/cli/parsers/assembler.rb +32 -0
- data/lib/sublime_text_kit/cli/parsers/core.rb +96 -0
- data/lib/sublime_text_kit/cli/parsers.rb +11 -0
- data/lib/sublime_text_kit/cli/shell.rb +58 -0
- data/lib/sublime_text_kit/container.rb +37 -0
- data/lib/sublime_text_kit/identity.rb +3 -2
- data/lib/sublime_text_kit/metadata/handler.rb +43 -0
- data/lib/sublime_text_kit/metadata/pathway.rb +19 -0
- data/lib/sublime_text_kit/metadata/serializers/project.rb +24 -0
- data/lib/sublime_text_kit/metadata/serializers/workspace.rb +27 -0
- data/lib/sublime_text_kit/sessions/rebuilder.rb +44 -0
- data/lib/sublime_text_kit/snippets/collector.rb +13 -19
- data/lib/sublime_text_kit/snippets/model.rb +31 -0
- data/lib/sublime_text_kit/snippets/printers/ascii_doc.rb +7 -5
- data/lib/sublime_text_kit/snippets/printers/markdown.rb +7 -3
- data/lib/sublime_text_kit/snippets/reader.rb +21 -0
- data/lib/sublime_text_kit.rb +11 -10
- data.tar.gz.sig +0 -0
- metadata +56 -14
- metadata.gz.sig +0 -0
- data/lib/sublime_text_kit/cli.rb +0 -182
- data/lib/sublime_text_kit/metadata/base.rb +0 -60
- data/lib/sublime_text_kit/metadata/project_metadata.rb +0 -20
- data/lib/sublime_text_kit/metadata/workspace_metadata.rb +0 -23
- data/lib/sublime_text_kit/session.rb +0 -44
- data/lib/sublime_text_kit/snippets/snippet.rb +0 -56
@@ -1,60 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "json"
|
4
|
-
require "pathname"
|
5
|
-
|
6
|
-
module SublimeTextKit
|
7
|
-
module Metadata
|
8
|
-
# Abstract class for processing metadata.
|
9
|
-
class Base
|
10
|
-
attr_reader :name, :project_dir, :metadata_dir, :metadata_file
|
11
|
-
|
12
|
-
def self.create projects_dir, metadata_dir
|
13
|
-
instance = new projects_dir, metadata_dir
|
14
|
-
return unless valid_dir? instance.project_dir, "Projects"
|
15
|
-
return unless valid_dir? instance.metadata_dir, "Metadata"
|
16
|
-
|
17
|
-
project_paths = ::Pathname.new(instance.project_dir).children.select(&:directory?)
|
18
|
-
project_paths.each { |project_dir| new(project_dir, metadata_dir).save }
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.delete metadata_dir
|
22
|
-
instance = new "", metadata_dir
|
23
|
-
return unless valid_dir? instance.metadata_dir, "Metadata"
|
24
|
-
|
25
|
-
::Pathname.glob("#{instance.metadata_dir}/*.#{instance.file_extension}").each(&:delete)
|
26
|
-
end
|
27
|
-
|
28
|
-
def initialize project_dir, metadata_dir
|
29
|
-
@name = File.basename project_dir
|
30
|
-
@project_dir = File.expand_path project_dir
|
31
|
-
@metadata_dir = File.expand_path metadata_dir
|
32
|
-
@metadata_file = File.join @metadata_dir, "#{name}.#{file_extension}"
|
33
|
-
end
|
34
|
-
|
35
|
-
def file_extension
|
36
|
-
"sublime-unknown"
|
37
|
-
end
|
38
|
-
|
39
|
-
def to_h
|
40
|
-
{}
|
41
|
-
end
|
42
|
-
|
43
|
-
def save
|
44
|
-
return if File.exist? metadata_file
|
45
|
-
|
46
|
-
File.open(metadata_file, "w") { |file| file.write JSON.dump(to_h) }
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.valid_dir? dir, label
|
50
|
-
if File.exist? dir
|
51
|
-
true
|
52
|
-
else
|
53
|
-
puts "#{label} directory doesn't exist: #{dir}."
|
54
|
-
false
|
55
|
-
end
|
56
|
-
end
|
57
|
-
private_class_method :valid_dir?
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SublimeTextKit
|
4
|
-
module Metadata
|
5
|
-
# Processes project metadata.
|
6
|
-
class Project < Base
|
7
|
-
def file_extension
|
8
|
-
"sublime-project"
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_h
|
12
|
-
{
|
13
|
-
folders: [
|
14
|
-
{path: project_dir}
|
15
|
-
]
|
16
|
-
}
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SublimeTextKit
|
4
|
-
module Metadata
|
5
|
-
# Processes workspace metadata.
|
6
|
-
class Workspace < Base
|
7
|
-
def file_extension
|
8
|
-
"sublime-workspace"
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_h
|
12
|
-
{
|
13
|
-
expanded_folders: [project_dir],
|
14
|
-
select_project: {
|
15
|
-
selected_items: [
|
16
|
-
[name, File.join(metadata_dir, "#{name}.sublime-project")]
|
17
|
-
]
|
18
|
-
}
|
19
|
-
}
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "json"
|
4
|
-
|
5
|
-
module SublimeTextKit
|
6
|
-
# Manages Sublime Text session data.
|
7
|
-
class Session
|
8
|
-
attr_reader :metadata_dir
|
9
|
-
|
10
|
-
def self.home_path
|
11
|
-
ENV.fetch "HOME"
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.session_path
|
15
|
-
"#{home_path}/Library/Application Support/Sublime Text 3/Local/Session.sublime_session"
|
16
|
-
end
|
17
|
-
|
18
|
-
def initialize metadata_directory
|
19
|
-
@metadata_dir = File.expand_path metadata_directory
|
20
|
-
end
|
21
|
-
|
22
|
-
def workspaces
|
23
|
-
Dir["#{metadata_dir}/*.sublime-workspace"]
|
24
|
-
end
|
25
|
-
|
26
|
-
def rebuild_recent_workspaces
|
27
|
-
session = load_session
|
28
|
-
return unless session && session["workspaces"] && session["workspaces"]["recent_workspaces"]
|
29
|
-
|
30
|
-
session["workspaces"]["recent_workspaces"] = workspaces
|
31
|
-
save_session session
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def load_session
|
37
|
-
File.exist?(self.class.session_path) ? JSON.parse(File.read(self.class.session_path)) : {}
|
38
|
-
end
|
39
|
-
|
40
|
-
def save_session json
|
41
|
-
File.open(self.class.session_path, "w") { |file| file.write JSON.dump(json) }
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rexml/document"
|
4
|
-
|
5
|
-
module SublimeTextKit
|
6
|
-
module Snippets
|
7
|
-
class Snippet
|
8
|
-
ELEMENT_TRANSLATIONS = {
|
9
|
-
"content" => :content,
|
10
|
-
"tabTrigger" => :trigger,
|
11
|
-
"description" => :description,
|
12
|
-
"scope" => :scope
|
13
|
-
}.freeze
|
14
|
-
|
15
|
-
ALLOWED_METHODS = ELEMENT_TRANSLATIONS.values.freeze
|
16
|
-
|
17
|
-
def initialize document
|
18
|
-
@document = document
|
19
|
-
assign_elements
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
attr_reader :document,
|
25
|
-
:content_element,
|
26
|
-
:trigger_element,
|
27
|
-
:description_element,
|
28
|
-
:scope_element
|
29
|
-
|
30
|
-
def assign_elements
|
31
|
-
root_element.elements.each do |element|
|
32
|
-
name = element.name
|
33
|
-
|
34
|
-
fail StandardError, "Unknown element: #{element}." unless ELEMENT_TRANSLATIONS.key? name
|
35
|
-
|
36
|
-
instance_variable_set "@#{ELEMENT_TRANSLATIONS[name]}_element", element
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def root_element
|
41
|
-
document.root || REXML::Element.new
|
42
|
-
end
|
43
|
-
|
44
|
-
def method_missing name, *arguments, &block
|
45
|
-
return super unless respond_to_missing? name
|
46
|
-
|
47
|
-
String((__send__("#{name}_element") || REXML::Element.new).text)
|
48
|
-
end
|
49
|
-
|
50
|
-
# :reek:BooleanParameter
|
51
|
-
def respond_to_missing? name, include_private = false
|
52
|
-
ALLOWED_METHODS.include?(name) || super
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|