From 7f2471103b670b42a73ac32b995b8f26d84837eb Mon Sep 17 00:00:00 2001 From: monoid Date: Sat, 11 Jun 2022 16:28:45 +0900 Subject: [PATCH] Extend Purpose --- src/intro.md | 23 ++++++++++++++++------- src/overall.md | 1 - tools/preprop.ts | 40 ++++++++++++++++++++++++++++------------ 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/src/intro.md b/src/intro.md index 7c309fe..8ad01b3 100644 --- a/src/intro.md +++ b/src/intro.md @@ -1,16 +1,21 @@ # 1. 소개(Introduction) -> Version : 1.0.1 - - 본 문서는 전북대학교 컴퓨터공학과의 Floor 팀에서 Scrap Yard라는 어플리케이션을 설계 및 구현하기 위한 소프트웨어 요구사항 명세서(SRS)이다. +> Version : 1.1.0 +> +> Version Hash : <%= it.gitHash %> +> +> 본 문서는 전북대학교 컴퓨터공학과의 Floor 팀에서 Scrap Yard라는 어플리케이션을 +> 설계 및 구현하기 위한 소프트웨어 요구사항 명세서(SRS)이자 어플리케이션의 구조를 +> 나타내는 설계서이자 어플리케이션의 시험 결과 보고서이다. 정리하면 어플리케이션을 +> 개발하면서 발생하는 산출물들을 정리한 문서이다. ## 1.1. 목적(Purpose) -본 문서의 목적은 프로젝트의 관련된 모든 아이디어들을 정리하고 분석해서 나열하는 것이다. 또한 프로젝트를 더 잘 이해하기 위해 이 제품이 어떻게 사용될지 예측하고 분류하고, 나중에 개발될 요소를 설명하고, 고려 중이지만 폐기될 수 있는 요구사항들을 문서화한다. +본 문서의 목적은 첫째로 프로젝트의 관련된 모든 아이디어들을 정리하고 분석해서 나열하는 것이다. 또한 프로젝트를 더 잘 이해하기 위해 이 제품이 어떻게 사용될지 예측하고 분류하고, 나중에 개발될 요소를 설명하고, 고려 중이지만 폐기될 수 있는 요구사항들을 문서화한다. 둘째로 이러한 요구사항을 해결하기 위해 만들어진 설계를 나열하고 문서화하는 것이다. 셋째로 이러한 설계로 구현된 프로그램을 시험을 하고 그 결과를 정리해서 보기좋게 문서화하고 색인하는 것이다. ## 1.2. 범위(Scope) -본 문서의 범위는 ScrapYard의 기능들과 그 환경이다. +본 문서의 범위는 ScrapYard의 기능들과 그 환경 그리고 상세 설계 및 인터페이스이다. ScrapYard는 문서 작성 밎 문서를 아카이빙 할 수 있는 웹 어플리케이션이다. 같이 제공되는 확장기능을 통해 북마크(즐겨찾기)를 구조적으로 보관할 수 있고 미리보기를 보여줄 수 있다. @@ -27,7 +32,8 @@ ScrapYard는 문서 작성 밎 문서를 아카이빙 할 수 있는 웹 어플 ## 1.4. 참고자료(References) -- [repo](https://github.com/vi117/scrap-yard) +- [repository](https://github.com/vi117/scrap-yard) +- [document repository](https://git.prelude.duckdns.org/ScrapYard/SRS) - [react](https://reactjs.org/) - [recoil](https://recoiljs.org/) - [MUI](https://mui.com/) @@ -36,4 +42,7 @@ ScrapYard는 문서 작성 밎 문서를 아카이빙 할 수 있는 웹 어플 ## 1.5. 개요(Overview) - 2장에서는 종합적인 요구사항을 서술하고, 3장에서는 기능 및 UI에 대해서 상세한 요구사항을 설명한다. +2장과 3장은 SRS(소프트웨어 요구사항 명세서)의 양식에 맞추어 작성되었다. 2장에서는 종합적인 요구사항을 서술하고, 3장에서는 기능 및 UI에 대해서 상세한 요구사항을 설명한다. +4장은 SRS의 추가 이력사항에 대해서 서술한다. 여기에서는 어플리케이션 개발 일정표가 포함되어 있다. +5장은 어플리케이션의 상세한 설계에 대해서 서술한다. +6장은 개발된 어플리케이션의 시험과 그 결과에 대해서 서술한다. diff --git a/src/overall.md b/src/overall.md index ebbff9d..67a4557 100644 --- a/src/overall.md +++ b/src/overall.md @@ -54,7 +54,6 @@ %><%=`${subIndex++}. #${i.number} ${i.title}\n` %><% } %> - <% } %> diff --git a/tools/preprop.ts b/tools/preprop.ts index 29224c3..aa4d8f4 100644 --- a/tools/preprop.ts +++ b/tools/preprop.ts @@ -19,18 +19,20 @@ class StderrHandler extends WriterHandler { } interface Book { - sections: Section[]; + sections: BookItem[]; } -interface Section { - //chapter or separtor or PartTitle +type Separator = "Separator"; +//type PartTitle = ; +type BookItem = Separator | { Chapter: Chapter; } + interface Chapter { name: string; content: string; /** section number */ number?: number[]; - sub_items: Section[]; + sub_items: BookItem[]; path?: string; source_path?: string; parent_names: string[]; @@ -66,6 +68,13 @@ function toHeadId(name: string){ return name.replaceAll(/[^A-Za-z\s0-9]/gi,"").toLocaleLowerCase().replaceAll(" ","-"); } +async function getCurrentGitHash() { + const res = await Deno.run({cmd:["git", "rev-parse", "HEAD"], stdout:"piped"}); + const hash = new TextDecoder().decode(await res.output()).trim(); + res.close(); + return hash;; +} + async function main(args: string[]) { if (args.length > 1) { //log.info(`args: ${JSON.stringify(args)}`); @@ -84,19 +93,26 @@ async function main(args: string[]) { table.set(category,c); } c.push(x); - }) - - log.info(`start`); + }); + const gitHash = await getCurrentGitHash(); + + log.info(`start\n`); const data = await readAll(Deno.stdin); const jsonText = new TextDecoder().decode(data); await Deno.writeTextFile("log.json", jsonText); const [context, book] = JSON.parse(jsonText) as [any, Book]; book.sections.forEach(x=>{ - x.Chapter.content = Eta.render(x.Chapter.content, { - issues: issues, - table: table, - toHeadId: toHeadId, - }) as string; + if(x === "Separator"){ + //skip + } + else { + x.Chapter.content = Eta.render(x.Chapter.content, { + issues: issues, + table: table, + gitHash: gitHash, + toHeadId: toHeadId, + }) as string; + } }) //Deno.stderr.writeSync(new TextEncoder().encode(`context: ${JSON.stringify(context)}\n`)); console.log(JSON.stringify(book));