옵시디언 활용/Dataview

Dataview 심화: Dataviewjs의 Utility Method

반응형

DataviewJS는 노트에서 메타데이터를 추출하고 조작하는 데 필요한 유틸리티 메소드에 접근할 수 있습니다. 이러한 메소드들은 데이터 처리를 보다 간편하고 효율적으로 만들어줍니다. 

dv.array(value)

dv.array(value) 함수는 주어진 값을 Dataview 데이터 배열로 변환합니다. 이미 데이터 배열인 경우 변경 없이 반환합니다. 이는 다양한 데이터 형태를 통일된 배열 형태로 처리할 수 있게 하여 데이터 조작을 용이하게 합니다.

단일 값으로 배열 생성

dv.array(5); // [5]

다중 항목 배열을 그대로 반환

dv.array([10, 20, 30]); // [10, 20, 30]

dv.isArray(value)

dv.isArray(value) 함수는 주어진 값이 배열 또는 dataview 배열인지 여부를 반환합니다. 이 함수는 데이터 유형을 확인할 때 유용하며, 배열 작업을 수행하기 전에 데이터 유형을 검증하는 데 사용할 수 있습니다.

문자열이 배열인지 확인

dv.isArray("hello world"); // false

객체 배열 확인

dv.isArray([{ x: 1 }, { y: 2 }]); // true

dv.fileLink(path, [embed?], [display-name])

dv.fileLink(path, [embed?], [display-name]) 함수는 텍스트 경로를 Dataview 링크 객체로 변환합니다. 선택적으로 링크가 임베드될지와 표시 이름을 지정할 수 있습니다. 이를 통해 노트 내에서 다른 노트나 섹션에 대한 참조를 생성할 수 있습니다.

간단한 파일 링크

dv.fileLink("Meeting/2021-09-09"); // [[Meeting/2021-09-09]]

임베드 링크와 표시 이름

dv.fileLink("Project/Design Doc", true, "Design Documentation"); // ![Design Documentation](Project/Design Doc)

dv.sectionLink(path, section, [embed?], [display?])

dv.sectionLink(path, section, [embed?], [display?]) 함수는 텍스트 경로와 섹션 이름을 Dataview 링크 객체로 변환합니다. 선택적으로 링크가 임베드되고 표시 이름이 지정될 수 있습니다. 이 함수는 특정 섹션으로의 직접적인 참조를 생성할 때 유용합니다.

섹션 링크 생성

dv.sectionLink("Project/Index", "Overview"); // [[Project/Index#Overview]]

표시 이름을 가진 섹션 링크

dv.sectionLink("Journal/2021-09", "Reflections", false, "September Reflections"); // [[Journal/2021-09#Reflections|September Reflections]]

dv.blockLink(path, blockId, [embed?], [display?])

dv.blockLink(path, blockId, [embed?], [display?]) 함수는 텍스트 경로와 블록 ID를 Dataview 링크 객체로 변환합니다. 선택적으로 링크가 임베드되고 표시 이름이 지정될 수 있습니다. 특정 블록에 대한 참조를 생성할 때 사용됩니다.

블록 링크 생성

dv.blockLink("Notes/Meeting Notes", "a1b2c3"); // [[Notes/Meeting Notes#^a1b2c3]]

표시 이름을 가진 블록 링크

dv.blockLink("Books/My Favorite Books", "x7y8z9", false, "Favorite Book List"); // [[Books/My Favorite Books#^x7y8z9|Favorite Book List]]

dv.date(text)

dv.date(text)는 텍스트를 luxon DateTime으로 변환합니다.

dv.date("2022-05-10"); // DateTime { 2022-05-10 }

문자열에서 날짜 생성

dv.duration(text)

dv.duration(text)는 문자열을 luxon Duration으로 변환합니다.

dv.duration("15 days"); // Duration { 15 days }

문자열에서 기간 생성

dv.compare(a, b)

dv.compare(a, b)는 값들을 비교합니다.

숫자 비교

dv.compare(10, 20); // -1

문자열 비교

dv.compare("apple", "banana"); // -1

dv.equal(a, b)

dv.equal(a, b)는 값들을 비교해서 true, false로 반환합니다.

동일한 배열 비교

dv.equal([1, 2, 3], [1, 2, 3]); // true

다른 객체 비교

dv.equal({ key: "value" }, { key: "value2" }); // false

dv.clone(value)

dv.clone(value)는 Dataview 값의 깊은 복사본(deep clone)을 생성합니다.

dv.clone({ name: "John", age: 30 }); // { name: "John", age: 30 }

객체의 깊은 복사

dv.parse(value)

dv.parse(value)는 문자열 객체를 복잡한 Dataview 유형으로 파싱합니다.

링크 파싱

dv.parse("[[Project Plan]]"); // Link { path: "Project Plan" }

날짜와 기간 파싱

dv.parse("2023-01-01"); // DateTime { 2023-01-01 }
dv.parse("2 weeks, 3 days"); // Duration { 2 weeks, 3 days }

 

반응형