소개
이 기사에서는 현재 강력한 구문 강조 라이브러리가 부족한 언어인 Crystal 내에서 Rust 기반 명령줄 도구bat
를 라이브러리로 사용하는 방법을 살펴봅니다. bat
은 cat
과 유사하게 파일 내용을 표시하지만 줄 번호 매기기, 구문 강조 표시, 페이지 매김과 같은 향상된 기능을 제공합니다.
<code>bat hello.rb</code>
bat
을 라이브러리로 활용하면 이러한 Crystal 제한 사항이 해결됩니다.
bat
Rust 라이브러리로서
bat
의 PrettyPrinter
구조체를 사용하면 Rust 라이브러리로 사용할 수 있습니다. 그러나 bat
이 구문 강조를 위해 복잡한 Syntect 라이브러리에 의존하는 것은 처음에는 문제를 야기했습니다. 이를 단순화하기 위해 print_with_writer
에 PrettyPrinter
함수가 추가되어 직접 문자열 구문 강조가 가능해졌습니다. 이 추가 사항은 풀 요청을 통해 제공되었으며 bat
버전 0.25.0
<code class="language-rust">use bat::PrettyPrinter; // ... code utilizing print_with_writer ...</code>
C 래퍼 만들기: bat-c
Rust 라이브러리는 Crystal에서 직접 호출할 수 없기 때문에 경량 C 래퍼 라이브러리 bat-c
가 만들어졌습니다. 이를 통해 C 상호 운용성을 갖춘 Crystal 및 기타 언어에서 bat
에 액세스할 수 있습니다. bat-c
개발에는 작성자의 제한된 Rust 및 C 전문 지식으로 인해 ChatGPT 및 Copilot이 많이 활용되었습니다. bat-c
저장소는 https://www.php.cn/link/065982e894fcde21153454b2ea4b2a8a
건축 시 주요 고려 사항bat-c
은 다음과 같습니다.
Cargo.toml
) 및 정적(cdylib
) 라이브러리를 모두 생성하도록 staticlib
을 구성하여 사용 유연성을 높입니다. rpath = true
상대 경로 라이브러리 위치를 허용합니다. LTO 및 codegen-units = 1
을 사용하여 프로필 최적화를 출시합니다.bat_c_version
)이 추가되었습니다.cargo publish
은 순수 C 라이브러리이므로 bat-c
은 피했습니다.Crystal에서 bat-c
에게 전화 걸기: wombat
Crystal 라이브러리 wombat
는 bat-c
와의 상호작용을 단순화하기 위해 개발되었습니다. 주요 과제는 bat-c
라이브러리 다운로드 및 배치를 관리하는 것이었습니다. bat-c
은 아직 널리 배포되지 않았기 때문에 GitHub 릴리스에서 직접 다운로드하는 방법을 선택했습니다. Crystal과의 원활한 통합을 위해 정적 라이브러리가 선호되었습니다. 다운로드 프로세스는 shards
(Unix 계열) 또는 배치 스크립트(Windows)를 사용하는 curl
post_install 후크를 통해 처리됩니다.
사용예
wombat
라이브러리는 다음 기능을 제공합니다.
pretty_print_file
: 파일 강조 구문.pretty_print
: 문자열을 강조하는 구문pretty_string
: 강조 표시된 문자열을 반환합니다.<code>bat hello.rb</code>
GitHub 작업 워크플로
개선사항
이러한 개선 영역에도 불구하고 프로젝트는 Crystal 내에서 bat
를 쉽고 유지 관리하기 쉽게 사용할 수 있도록 한다는 주요 목표를 성공적으로 달성했습니다. 저자는 기여와 이슈 보고를 환영합니다.
(Qiita의 일본어 게시물 원본: Wombat - RustのBatをCrystalakalar呼び출신탁스하이라이팅수루. ChatGPT의 영어 번역.)
위 내용은 Wombat - Crystal에서 호출된 Rusts Bat를 사용한 구문 강조의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!