initial commit
This commit is contained in:
58
Packages/Pretty YAML Node/PrettyYamlNode.py
Normal file
58
Packages/Pretty YAML Node/PrettyYamlNode.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import sublime
|
||||
import sublime_plugin
|
||||
import decimal
|
||||
import sys
|
||||
import tempfile
|
||||
import subprocess
|
||||
import os
|
||||
import shutil
|
||||
import json
|
||||
|
||||
STATUS_ID = 'pretty_yaml_node'
|
||||
s = sublime.load_settings("Pretty YAML Node.sublime-settings")
|
||||
|
||||
class PrettyyamlnodeCommand(sublime_plugin.TextCommand):
|
||||
|
||||
def run(self, edit):
|
||||
""" Pretty print YAML """
|
||||
for region in self.view.sel():
|
||||
|
||||
selected_entire_file = False
|
||||
|
||||
# If no selection, use the entire file as the selection
|
||||
if region.empty() and s.get("use_entire_file_if_no_selection", True):
|
||||
selection = sublime.Region(0, self.view.size())
|
||||
selected_entire_file = True
|
||||
else:
|
||||
selection = region
|
||||
|
||||
temp_path = tempfile.mkdtemp("prettyyaml")
|
||||
with open(temp_path + "/in.yml" ,"w") as file:
|
||||
file.write(self.view.substr(selection))
|
||||
|
||||
with open(temp_path + "/config.json", 'w') as file:
|
||||
json.dump(s.get('dumper_args'), file)
|
||||
|
||||
output = subprocess.check_output([s.get("node_path"), os.path.dirname(os.path.abspath(__file__)) + "/pretty_json.js", temp_path])
|
||||
self.set_short_status(self.view, output.decode("utf-8").replace("\n", ""))
|
||||
with open(temp_path + "/out.yml" ,"r") as file:
|
||||
self.view.replace(edit, selection, file.read())
|
||||
|
||||
shutil.rmtree(temp_path)
|
||||
|
||||
if selected_entire_file:
|
||||
self.change_syntax()
|
||||
|
||||
def change_syntax(self):
|
||||
if "Plain text" in self.view.settings().get('syntax'):
|
||||
self.view.set_syntax_file("Packages/YAML/YAML.tmLanguage")
|
||||
|
||||
def set_short_status(self, active_view, text):
|
||||
def erase_status():
|
||||
active_view.erase_status(STATUS_ID)
|
||||
active_view.set_status(STATUS_ID, text)
|
||||
sublime.set_timeout_async(erase_status, 2000)
|
||||
|
||||
def plugin_loaded():
|
||||
global s
|
||||
s = sublime.load_settings("Pretty YAML Node.sublime-settings")
|
||||
Reference in New Issue
Block a user