SublimeText 플러그인 - URL Encoder/Decoder
준비
상단 메뉴의 Tools > Developer > new Plugins
메뉴를 눌러 새로운 템플릿을 불러온다.
import sublime
import sublime_plugin
class ExampleCommand(sublime_plugin.TextCommand):
def run(self, edit):
self.view.insert(edit, 0, "Hello, World!")
↑ 처음 자동 생성되는 샘플
ExcampleCommand
class를 생성하면 SublimeText는 자동으로 뒤에 Command
를 제외한 Example
을 SnakeCase로 변환하여 SublimeText에서 사용 가능한 명령어로 변환해준다. 즉, MyExampleCommand
는 my_example
이라는 명령어가 된다.
저장은 SublimeText에서 알아서 경로를 잡아주니 그 자리에 그냥 넣으면 된다. (~~~/SublimeText 3/Packages/User
같은 느낌)
MyExampleCommand
같은 네이밍을 CamelCase 라고 하고,my_example_command
같은 네이밍을 SnakeCase 라고 한다.
기능 구현
선택한 영역을 텍스트를 URL Encoding/Decoding 해주는 커맨드를 만드는것이 목표
먼저 URL encoding/decoding 하는 방법은 간단하다.
from urllib import parse
encoded = parse.quote("인코딩 대상 문자")
decoded = parse.unquote("%EC%9D%B8%EC%BD%94%EB%94%A9")
위 샘플에서 SublimeText 모듈을 이용해 선택한 모든 텍스트를 가져와서 터미널에 출력하는 코드
import sublime
import sublime_plugin
class ExampleCommand(sublime_plugin.TextCommand):
def run(self, edit):
regions = self.view.sel() # 선택한 영역을 List로 가져온다. 선택을 안하면 빈 리스트 []를 리턴
for region in regions:
selected_text = self.view.substr(region) # 선택한 영역의 텍스트를 가져온다
print(selected_text)
SublimeText에서 ctrl+`
키를 누르면 하단에 터미널이 뜨는데, view.run_command('example')
를 입력하면 실행된다.
플러그인 구현
url_encode
와 url_decode
라는 커맨드를 작성하고 선택 영역을 URL Encode/Decode 해주는 플러그인을 작성한다.
import sublime
import sublime_plugin
from urllib import parse
class UrlEncodeCommand(sublime_plugin.TextCommand):
def run(self, edit):
for region in self.view.sel():
if region.size():
text = self.view.substr(region)
encoded = parse.quote(text)
self.view.replace(edit, region, encoded) # 선택 영역의 텍스트를 ecoded로 replace 한다.
class UrlDecodeCommand(sublime_plugin.TextCommand):
def run(self, edit):
for region in self.view.sel():
if region.size():
text = self.view.substr(region)
decoded = parse.unquote(text)
self.view.replace(edit, region, decoded) # 선택영역을 URL decode된 문자열로 replace.
Command Palette 명령어로 추가
매번 ctrl+`
로 실행할 순 없으니, ctrl+shift+p
를 누르면 나오는 창(Command Palette)에 명령어를 추가한다.
위 플러그인.py 파일을 저장한 위치에 Default.sublime-commands
파일을 만들고 아래와 같이 설정한다.
[
{
"caption": "URL Encoding",
"command": "url_encode"
},
{
"caption": "URL Decoding",
"command": "url_decode"
}
]
ctrl+shift+p
팔레트 메뉴에서 URL Encoding
으로 호출하면, 선택한 문자열이 URL Encoding된 문자열로 치환된다.
'Dev > Python' 카테고리의 다른 글
[하루 1시간] 실시간 OCR 번역기 만들기 (1) | 2023.11.24 |
---|---|
Python 접근제어자 (0) | 2018.05.28 |
카카오톡 챗봇 (2) (1) | 2017.12.22 |
카카오톡 챗봇 (1) (1) | 2017.12.15 |