JSON 구성 파서

이번 주에 나는 Eakamrost_gen 저장소에서 지난 번에 나에게 준 어려움 때문에 다시 작업하기로 결정했습니다. 이번에는 준비가 되어 있을 거라 생각했는데, 그렇지 않군요. 이번에는 사실 저번 협동 연구실 이후로 그들이 만든 수많은 변화 때문에 훨씬 더 어려움을 겪었습니다.

새로운 기능
사용자는 다음 중 하나를 수행하여 SSG를 실행할 수 있습니다.

# Option 1: use command line arguments:
ssg --input ./site --output ./build --stylesheet https://cdn.jsdelivr.net/npm/water.css@2/out/water.css --lang fr

# Option 2: use a config file
ssg --config ./ssg-config.json


구성 파일 옵션은 훨씬 더 짧은 명령을 가질 수 있고 대신 옵션을 파일에 저장할 수 있음을 의미합니다.

RUST에서 코드 작성 및 테스트



프로젝트를 분기한 후 Eakam의 저장소에서 사용하던 크레이트clap가 새로 추가되어 코드를 작성하는 데 시간이 좀 걸렸습니다. 따라서 기술적으로 옵션을 선택하고 구문 분석하는 방법을 다시 배우려고 했습니다. 명령 구문 분석에 머리를 감은 후 구성 파일을 처리하는 구조체와 함수를 만들었습니다.

use std::io::BufReader;

extern crate serde_with;
extern crate serde_json;
extern crate serde;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
#[serde_with::skip_serializing_none]
struct Config{
    input: Option<String>,
    output: Option<String>,
    lang: Option<String>
}


JSON을 생성된 구조체로 구문 분석하기 위해 serde를 사용한 다음 구조체를 호출하고 세부 정보를 이미 만들어진 handle_conversion() 함수로 구문 분석합니다.

그러나 이것은 Option<String>가 일반 문자열로 구문 분석될 수 없다는 사실을 알기 전이었습니다. 그래서 그것을 변환할 방법을 찾아야 했고, 그렇게 했지만 시간이 좀 걸렸습니다.

힘내 사용



git을 원격으로 사용하는 방법을 알아내려는 것은 흥미로운 경험이었습니다. 내가 예상했던 것보다 훨씬 더 간단했지만. 이제 마우스를 클릭하지 않고 끌어오기 요청 코드를 테스트하는 방법을 알고 있습니다.

마지막 생각들



아직 익숙하지 않은 언어로 작업하는 것이 쉽지 않았지만, 오픈소스로 작업하는 것은 새로운 규칙을 배우는 데 많은 도움이 됩니다. 나는 모든 언어에서 구문이 다르다는 것을 배웠습니다. 구축하는 기술과 아이디어는 동일합니다.

좋은 웹페이지 즐겨찾기