[SublimeText] 플러그인 만들기 - URL Decoder

2022. 1. 8. 16:26·Dev/Python

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
'Dev/Python' 카테고리의 다른 글
  • [하루 1시간] 실시간 OCR 번역기 만들기
  • Python 접근제어자
  • 카카오톡 챗봇 (2)
  • 카카오톡 챗봇 (1)
우르슬라
우르슬라
    반응형
  • 우르슬라
    저장소
    우르슬라
  • 전체
    오늘
    어제
    • 분류 전체보기 (29)
      • AI (1)
      • Dev (17)
        • Python (5)
        • Javascript (3)
        • Tools (5)
        • React (1)
        • 공부 (1)
      • 메타버스2 (2)
      • NFT (0)
      • 판매용 (0)
      • IT 이슈 (2)
      • 금융 이슈 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java se programmer
    deepseek r1-lite-preview
    NFT
    metaverse2
    deepseek
    크립토트레이딩
    clarksea
    암호화폐차트
    시스템프롬프트
    오블완
    discord
    hd중공업
    가상부동산
    화면 번역
    메타버스2
    아젠다47
    speech synthesis markup language
    ks54
    prompt enchance
    javascript
    oracle certified professional
    linyuvo ks54
    프롬프트 강화
    wp engine 차단
    랭그래프
    agenda47
    랜드마크
    linyuvo
    티스토리챌린지
    ssml
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
우르슬라
[SublimeText] 플러그인 만들기 - URL Decoder
상단으로

티스토리툴바