[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 번역기 만들기  (2) 2023.11.24
Python 접근제어자  (1) 2018.05.28
카카오톡 챗봇 (2)  (2) 2017.12.22
카카오톡 챗봇 (1)  (3) 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바