고급 mq 기술: 간단한 쿼리에서 복잡한 워크플로우까지
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
Markdown 문서 처리 및 자동화 워크플로우를 구축하는 개발자
- 난이도: 중급 이상 (기초 mq 사용법에 대한 지식이 필요)
핵심 요약
- mq의 고급 기능은 조건부 로직, 강력한 필터링, 복잡한 변환을 통해 Markdown 처리를 자동화함.
- 핵심 명령어 예시:
to_text()
,select()
,s"..."
(템플릿 문자열)을 활용한 데이터 변환. - 커스텀 함수 정의 (
def format_api_endpoint()
)와 CI/CD 통합 (VERSION=$(mq ...)
) 가능.
섹션별 세부 요약
1. 조건부 로직 처리
if (is_h1())
: 헤딩 레벨에 따라 동적 텍스트 생성.select(or(contains("async"), contains("function")))
: 특정 키워드 포함 코드 필터링.len() > 3
: 배열 길이 기반 필터링.
2. 템플릿 문자열 및 변수 사용
s"# ${project_name} v${version}"
: 변수 치환으로 문서 헤더 생성.- `s"!${lang}": 이미지 링크 동적 생성.
to_md_list(anchor, 1)
: 목록 형식으로 링크 정리.
3. 커스텀 함수 정의 및 재사용
def extract_endpoints()
: API 엔드포인트 추출 함수 정의.include "custom" | extract_endpoints()
: 커스텀 함수 모듈화.format_api_endpoint("GET", self, "API endpoint")
: 문서화된 API 설명 생성.
4. 대규모 처리 및 성능 최적화
mq -P 5
: 병렬 처리로 대규모 문서 처리 속도 향상.mq --unbuffered
: 대용량 파일 처리 시 메모리 효율적 사용.csv2table_with_header()
: CSV 데이터를 테이블로 변환.
5. CI/CD 통합 및 버전 관리
VERSION=$(mq 'select(.h2) | ...')
: 문서에서 버전 정보 자동 추출.mq 'select(and(.h2, contains("API"))) | to_text()'
: 변경 로그 자동 분석.s"File: ${__FILE__}\nIssue: ${to_text(self)}"
: TODO/FIXME 이슈 추적.
결론
mq는 Markdown 문서 처리 및 자동화 워크플로우에 최적화된 도구로, 조건부 로직, 필터링, 변환 기능을 통해 개발 생산성을 극대화할 수 있음. 커스텀 함수 정의와 CI/CD 통합을 통해 실무에서 효과적으로 활용 가능. 예제와 문서를 참고해 복잡한 워크플로우를 구축해보세요.