資源簡介
一個sublime XML的插件,可以讓大家很方便對XML內(nèi)容進(jìn)行格式化操作。

代碼片段和文件信息
import?sublime
import?sublime_plugin
import?re
import?json
from?xml.dom.minidom?import?parseString
from?xml.parsers.expat?import?ExpatError?errors
from?os.path?import?basename?splitext
class?baseIndentCommand(sublime_plugin.TextCommand):
????def?__init__(self?view):
????????self.view?=?view
????????self.language?=?self.get_language()
????def?get_language(self):
????????syntax?=?self.view.settings().get(‘syntax‘)
????????language?=?splitext(basename(syntax))[0].lower()?if?syntax?is?not?None?else?“plain?text“
????????return?language
????def?check_enabled(self?lang):
????????return?True
????def?is_enabled(self):
????????“““
????????Enables?or?disables?the?‘indent‘?command.?Command?will?be?disabled?if
????????there?are?currently?no?text?selections?and?current?file?is?not?‘xml‘?or
????????‘Plain?Text‘.?This?helps?clarify?to?the?user?about?when?the?command?can
????????be?executed?especially?useful?for?UI?controls.
????????“““
????????if?self.view?is?None:
????????????return?False
????????return?self.check_enabled(self.get_language())
????def?run(self?edit):
????????“““
????????Main?plugin?logic?for?the?‘indent‘?command.
????????“““
????????view?=?self.view
????????regions?=?view.sel()
????????#?if?there?are?more?than?1?region?or?region?one?and?it‘s?not?empty
????????if?len(regions)?>?1?or?not?regions[0].empty():
????????????for?region?in?view.sel():
????????????????if?not?region.empty():
????????????????????s?=?view.substr(region).strip()
????????????????????s?=?self.indent(s)
????????????????????view.replace(edit?region?s)
????????else:??#?format?all?text
????????????alltextreg?=?sublime.Region(0?view.size())
????????????s?=?view.substr(alltextreg).strip()
????????????s?=?self.indent(s)
????????????if?s:
????????????????view.replace(edit?alltextreg?s)
????def?indent(self?s):
????????return?s
class?AutoIndentCommand(baseIndentCommand):
????def?get_text_type(self?s):
????????language?=?self.language
????????if?language?==?‘xml‘:
????????????return?‘xml‘
????????if?language?==?‘json‘:
????????????return?‘json‘
????????if?language?==?‘plain?text‘?and?s:
????????????if?s[0]?==?‘<‘:
????????????????return?‘xml‘
????????????if?s[0]?==?‘{‘?or?s[0]?==?‘[‘:
????????????????return?‘json‘
????????return?‘notsupported‘
????def?indent(self?s):
????????text_type?=?self.get_text_type(s)
????????if?text_type?==?‘xml‘:
????????????command?=?IndentxmlCommand(self.view)
????????if?text_type?==?‘json‘:
????????????command?=?IndentJsonCommand(self.view)
????????if?text_type?==?‘notsupported‘:
????????????return?s
????????return?command.indent(s)
????def?check_enabled(self?lang):
????????return?True
class?IndentxmlCommand(baseIndentCommand):
????def?indent(self?s):
????????#?figure?out?encoding
????????utfEncoded?=?s.encode(“utf-8“)
????????encoding?=?“utf-8“
????????encoding_match?=?re.compile(b“<\?.*encoding=\“(.*?)\“.*\?>“).match(utfEncoded)
????????if?encoding_match:
????????????encoding?=?encoding_match.group(1).decode(“utf-8“).lower()
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-04-12?13:41??sublimetext_indentxm
?????文件???????????7??2018-04-12?13:41??sublimetext_indentxm
?????文件??????????64??2018-04-12?13:41??sublimetext_indentxm
?????文件??????????66??2018-04-12?13:41??sublimetext_indentxm
?????文件??????????64??2018-04-12?13:41??sublimetext_indentxm
?????文件?????????257??2018-04-12?13:41??sublimetext_indentxm
?????文件????????1101??2018-04-12?13:41??sublimetext_indentxm
?????文件?????????704??2018-04-12?13:41??sublimetext_indentxm
?????文件????????1995??2018-04-12?13:41??sublimetext_indentxm
?????文件??????????36??2018-04-12?13:41??sublimetext_indentxm
?????文件????????4199??2018-04-12?13:41??sublimetext_indentxm
?????文件?????????129??2018-04-12?13:41??sublimetext_indentxm
?????文件????????1317??2018-04-12?13:41??sublimetext_indentxm
?????目錄???????????0??2018-04-12?13:41??sublimetext_indentxm
?????文件?????????769??2018-04-12?13:41??sublimetext_indentxm
?????目錄???????????0??2018-04-12?13:41??sublimetext_indentxm
?????文件??????????95??2018-04-12?13:41??sublimetext_indentxm
?????文件??????????92??2018-04-12?13:41??sublimetext_indentxm
?????文件??????????53??2018-04-12?13:41??sublimetext_indentxm
?????文件??????????61??2018-04-12?13:41??sublimetext_indentxm
?????文件???????????8??2018-04-12?13:41??sublimetext_indentxm
?????文件???????????7??2018-04-12?13:41??sublimetext_indentxm
?????文件??????????64??2018-04-12?13:41??sublimetext_indentxm
?????文件??????????68??2018-04-12?13:41??sublimetext_indentxm
?????文件????????1494??2018-04-12?13:41??sublimetext_indentxm
?????文件?????????144??2018-04-12?13:41??sublimetext_indentxm
評論
共有 條評論