Mercurial > hg > Members > anatofuz > lectable
view dumphtml.go @ 21:1aa824c6b319
...
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 02 Apr 2020 21:24:24 +0900 |
parents | |
children | 8d14bbbedf23 |
line wrap: on
line source
package lectable import ( "bufio" "encoding/json" "io" "os" "strings" ) /* <td class="required"><a href="http://ie.u-ryukyu.ac.jp/syllabus/2019/early/617009001.html">プロジェクトデザイン</a> <a href="http://ie.u-ryukyu.ac.jp/%7koji/pw/" target="_blank" rel="noopener noreferrer">山田 孝治</a> <span style="font-size: 8pt;">工1-321</span></td> <td class="select"><a href="http://ie.u-ryukyu.ac.jp/syllabus/2019/early/617016001.html">情報処理技術概論</a> <a>宮里 智樹</a> <span style="font-size: 8pt;">工1-322</span></td> */ type teacherSTR struct { name string url string } type TeacherFromJSON struct { Teacher []string `json:"teacher"` } type dumpHTMLSTR struct { ID string Name string Teacher teacherSTR Place string IsSelect bool NextTerm *dumpHTMLSTR } type teacherNameToURL map[string]string func convertStaticTeacherToMap(jsonPath string) (*teacherNameToURL, error) { f, err := os.Open(jsonPath) if err != nil { return nil, err } br := bufio.NewReader(f) dec := json.NewDecoder(br) var teacherFJson []TeacherFromJSON err = dec.Decode(&teacherFJson) if err != nil { return nil, err } tnametoURL := make(teacherNameToURL, len(teacherFJson)) for _, tcfj := range teacherFJson { tnametoURL[tcfj.Teacher[0]] = tcfj.Teacher[1] } return &tnametoURL, nil } func convertLec(jsonPath string) ([]Lec, error) { f, err := os.Open(jsonPath) if err != nil { return nil, err } br := bufio.NewReader(f) dec := json.NewDecoder(br) var lecs []Lec err = dec.Decode(&lecs) if err != nil { return nil, err } return lecs, nil } /* */ /* type dumpHTMLSTR struct { ID string Name string Teacher teacherSTR Place string IsSelect bool NextTerm *DumpLectureFPDF } */ type GradeLecturesArray [6][5][5]*dumpHTMLSTR type GradeLectures struct { B1 *[5][5]*dumpHTMLSTR //[ day of week ] [period] B2 *[5][5]*dumpHTMLSTR //[ day of week ] [period] B3 *[5][5]*dumpHTMLSTR //[ day of week ] [period] B4 *[5][5]*dumpHTMLSTR //[ day of week ] [period] M *[5][5]*dumpHTMLSTR //[ day of week ] [period] OLD *[5][5]*dumpHTMLSTR //[ day of week ] [period] } func convertdumpHTMLSTR(lecs []Lec, teacherToJSON teacherNameToURL) (*GradeLectures, error) { glecturesArray := new(GradeLecturesArray) for _, lec := range lecs { grade := lec.Grades[0] //NOTE: now, grade elements is always one grade-- teacherURL := teacherToJSON[lec.Teacher] lTeacher := teacherSTR{ name: lec.Teacher, url: teacherURL, } for _, day := range lec.Day { dhstr := dumpHTMLSTR{ ID: lec.ID, Name: lec.Name, Teacher: lTeacher, Place: lec.Place, IsSelect: lec.isSelect, NextTerm: nil, } day-- if glecturesArray[grade][lec.DayOfWeek][day] != nil { if strings.Contains(glecturesArray[grade][lec.DayOfWeek][day].Name, "大学英語") { var strBuilder strings.Builder strBuilder.WriteString(dhstr.Teacher.name) strBuilder.WriteString("/") strBuilder.WriteString(glecturesArray[grade][lec.DayOfWeek][day].Teacher.name) glecturesArray[grade][lec.DayOfWeek][day].Teacher.name = strBuilder.String() strBuilder.Reset() strBuilder.WriteString(dhstr.Place) strBuilder.WriteString("/") strBuilder.WriteString(glecturesArray[grade][lec.DayOfWeek][day].Place) glecturesArray[grade][lec.DayOfWeek][day].Place = strBuilder.String() continue } glecturesArray[grade][lec.DayOfWeek][day].NextTerm = &dhstr continue } glecturesArray[grade][lec.DayOfWeek][day] = &dhstr } } glectures := new(GradeLectures) glectures.B1 = &glecturesArray[0] glectures.B2 = &glecturesArray[1] glectures.B3 = &glecturesArray[2] glectures.B4 = &glecturesArray[3] glectures.M = &glecturesArray[4] return glectures, nil } func dumpHTML(grlectures *GradeLectures, writer io.Writer) error { return nil }