Extend Purpose

This commit is contained in:
monoid 2022-06-11 16:28:45 +09:00
parent 384c33e6a6
commit 7f2471103b
3 changed files with 44 additions and 20 deletions

View File

@ -1,16 +1,21 @@
# 1. 소개(Introduction) # 1. 소개(Introduction)
> Version : 1.0.1 > Version : 1.1.0
>
본 문서는 전북대학교 컴퓨터공학과의 Floor 팀에서 Scrap Yard라는 어플리케이션을 설계 및 구현하기 위한 소프트웨어 요구사항 명세서(SRS)이다. > Version Hash : <%= it.gitHash %>
>
> 본 문서는 전북대학교 컴퓨터공학과의 Floor 팀에서 Scrap Yard라는 어플리케이션을
> 설계 및 구현하기 위한 소프트웨어 요구사항 명세서(SRS)이자 어플리케이션의 구조를
> 나타내는 설계서이자 어플리케이션의 시험 결과 보고서이다. 정리하면 어플리케이션을
> 개발하면서 발생하는 산출물들을 정리한 문서이다.
## 1.1. 목적(Purpose) ## 1.1. 목적(Purpose)
본 문서의 목적은 프로젝트의 관련된 모든 아이디어들을 정리하고 분석해서 나열하는 것이다. 또한 프로젝트를 더 잘 이해하기 위해 이 제품이 어떻게 사용될지 예측하고 분류하고, 나중에 개발될 요소를 설명하고, 고려 중이지만 폐기될 수 있는 요구사항들을 문서화한다. 본 문서의 목적은 첫째로 프로젝트의 관련된 모든 아이디어들을 정리하고 분석해서 나열하는 것이다. 또한 프로젝트를 더 잘 이해하기 위해 이 제품이 어떻게 사용될지 예측하고 분류하고, 나중에 개발될 요소를 설명하고, 고려 중이지만 폐기될 수 있는 요구사항들을 문서화한다. 둘째로 이러한 요구사항을 해결하기 위해 만들어진 설계를 나열하고 문서화하는 것이다. 셋째로 이러한 설계로 구현된 프로그램을 시험을 하고 그 결과를 정리해서 보기좋게 문서화하고 색인하는 것이다.
## 1.2. 범위(Scope) ## 1.2. 범위(Scope)
본 문서의 범위는 ScrapYard의 기능들과 그 환경이다. 본 문서의 범위는 ScrapYard의 기능들과 그 환경 그리고 상세 설계 및 인터페이스이다.
ScrapYard는 문서 작성 밎 문서를 아카이빙 할 수 있는 웹 어플리케이션이다. 같이 제공되는 확장기능을 통해 북마크(즐겨찾기)를 구조적으로 보관할 수 있고 미리보기를 보여줄 수 있다. ScrapYard는 문서 작성 밎 문서를 아카이빙 할 수 있는 웹 어플리케이션이다. 같이 제공되는 확장기능을 통해 북마크(즐겨찾기)를 구조적으로 보관할 수 있고 미리보기를 보여줄 수 있다.
@ -27,7 +32,8 @@ ScrapYard는 문서 작성 밎 문서를 아카이빙 할 수 있는 웹 어플
## 1.4. 참고자료(References) ## 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/) - [react](https://reactjs.org/)
- [recoil](https://recoiljs.org/) - [recoil](https://recoiljs.org/)
- [MUI](https://mui.com/) - [MUI](https://mui.com/)
@ -36,4 +42,7 @@ ScrapYard는 문서 작성 밎 문서를 아카이빙 할 수 있는 웹 어플
## 1.5. 개요(Overview) ## 1.5. 개요(Overview)
2장에서는 종합적인 요구사항을 서술하고, 3장에서는 기능 및 UI에 대해서 상세한 요구사항을 설명한다. 2장과 3장은 SRS(소프트웨어 요구사항 명세서)의 양식에 맞추어 작성되었다. 2장에서는 종합적인 요구사항을 서술하고, 3장에서는 기능 및 UI에 대해서 상세한 요구사항을 설명한다.
4장은 SRS의 추가 이력사항에 대해서 서술한다. 여기에서는 어플리케이션 개발 일정표가 포함되어 있다.
5장은 어플리케이션의 상세한 설계에 대해서 서술한다.
6장은 개발된 어플리케이션의 시험과 그 결과에 대해서 서술한다.

View File

@ -54,7 +54,6 @@
%><%=`${subIndex++}. #${i.number} ${i.title}\n` %><% %><%=`${subIndex++}. #${i.number} ${i.title}\n` %><%
} }
%> %>
<% <%
} }
%> %>

View File

@ -19,18 +19,20 @@ class StderrHandler extends WriterHandler {
} }
interface Book { interface Book {
sections: Section[]; sections: BookItem[];
} }
interface Section { type Separator = "Separator";
//chapter or separtor or PartTitle //type PartTitle = ;
type BookItem = Separator | {
Chapter: Chapter; Chapter: Chapter;
} }
interface Chapter { interface Chapter {
name: string; name: string;
content: string; content: string;
/** section number */ /** section number */
number?: number[]; number?: number[];
sub_items: Section[]; sub_items: BookItem[];
path?: string; path?: string;
source_path?: string; source_path?: string;
parent_names: string[]; parent_names: string[];
@ -66,6 +68,13 @@ function toHeadId(name: string){
return name.replaceAll(/[^A-Za-z\s0-9]/gi,"").toLocaleLowerCase().replaceAll(" ","-"); 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[]) { async function main(args: string[]) {
if (args.length > 1) { if (args.length > 1) {
//log.info(`args: ${JSON.stringify(args)}`); //log.info(`args: ${JSON.stringify(args)}`);
@ -84,19 +93,26 @@ async function main(args: string[]) {
table.set(category,c); table.set(category,c);
} }
c.push(x); c.push(x);
}) });
const gitHash = await getCurrentGitHash();
log.info(`start`); log.info(`start\n`);
const data = await readAll(Deno.stdin); const data = await readAll(Deno.stdin);
const jsonText = new TextDecoder().decode(data); const jsonText = new TextDecoder().decode(data);
await Deno.writeTextFile("log.json", jsonText); await Deno.writeTextFile("log.json", jsonText);
const [context, book] = JSON.parse(jsonText) as [any, Book]; const [context, book] = JSON.parse(jsonText) as [any, Book];
book.sections.forEach(x=>{ book.sections.forEach(x=>{
x.Chapter.content = Eta.render(x.Chapter.content, { if(x === "Separator"){
issues: issues, //skip
table: table, }
toHeadId: toHeadId, else {
}) as string; 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`)); //Deno.stderr.writeSync(new TextEncoder().encode(`context: ${JSON.stringify(context)}\n`));
console.log(JSON.stringify(book)); console.log(JSON.stringify(book));