diff --git a/app.go b/app.go index fd65da4..8ae5176 100644 --- a/app.go +++ b/app.go @@ -2,37 +2,15 @@ package main import ( "context" - "encoding/json" "io/ioutil" "os" "path" "path/filepath" - "sort" "strings" - "time" "github.com/wailsapp/wails/v2/pkg/runtime" ) -type Nikki_date_t struct { - Year int - Month int - Day int -} - -type Nikki_t struct { - Fname string - Date Nikki_date_t - Content string -} - -type Setting_t struct { - Nikki_dir string - Fname_format string -} - -var default_Setting_data = Setting_t{Nikki_dir: "", Fname_format: "YYYY年MM月DD日.txt"} - // App struct type App struct { ctx context.Context @@ -82,133 +60,6 @@ func (a *App) Get_dir_fnames(dir_name string) []string { return fnames } -func (a *App) Add_nikki_today() { - if a.Setting_data.Nikki_dir == "" { - return - } - - timezone := time.FixedZone("Asia/Tokyo", 9*60*60) - time_now := time.Now().In(timezone) - f, err := os.OpenFile( - path.Join( - a.Setting_data.Nikki_dir, - time_now.Format(TimeFormat_conv(a.Setting_data.Fname_format)), - ), - os.O_WRONLY|os.O_CREATE, 0666, - ) - if err != nil { - } - f.Close() -} - -func (a *App) Parse_nikki_file(fname string) Nikki_t { - content, err := ioutil.ReadFile(path.Join(a.Setting_data.Nikki_dir, fname)) - if err != nil { - panic(err) - } - - Fname_format_golang := TimeFormat_conv(a.Setting_data.Fname_format) - - t, err := time.Parse(Fname_format_golang, fname) - - return Nikki_t{ - Fname: fname, Content: string(content), - Date: Nikki_date_t{ - Year: t.Year(), - Month: int(t.Month()), - Day: t.Day(), - }, - } -} - -func (a *App) Write_nikki_file(v Nikki_t) { - var err error - var f *os.File - f, err = os.Create(path.Join(a.Setting_data.Nikki_dir, v.Fname)) - for err != nil { - f, err = os.Create(path.Join(a.Setting_data.Nikki_dir, v.Fname)) - time.Sleep(time.Millisecond * 200) - } - defer f.Close() - - _, err = f.Write([]byte(v.Content)) - if err != nil { - panic(err) - } -} - -func (a *App) Set_nikki(v []Nikki_t) { - for i, e := range v { - if a.Nikki_data[i].Content != e.Content { - a.Nikki_data[i].Content = e.Content - a.Write_nikki_file(a.Nikki_data[i]) - } - } - -} - -func (a *App) Load_nikki() { - var reslut []Nikki_t - for _, e := range a.Get_dir_fnames(a.Setting_data.Nikki_dir) { - reslut = append(reslut, a.Parse_nikki_file(e)) - } - - sort.SliceStable(reslut, func(i, j int) bool { - if reslut[i].Date.Year != reslut[j].Date.Year { - return reslut[i].Date.Year > reslut[j].Date.Year - } - if reslut[i].Date.Month != reslut[j].Date.Month { - return reslut[i].Date.Month > reslut[j].Date.Month - } - return reslut[i].Date.Day > reslut[j].Date.Day - }) - a.Nikki_data = reslut -} - -func (a *App) Get_nikki() []Nikki_t { - - return a.Nikki_data -} - -func (a *App) Load_setting() { - - setting_text, err := ioutil.ReadFile(a.setting_json_path) - if err == nil { - if err := json.Unmarshal(setting_text, &a.Setting_data); err != nil { - a.Setting_data = default_Setting_data - } - } else { - a.Setting_data = default_Setting_data - } - -} - -func (a *App) Write_setting() { - setting_text, err := json.Marshal(a.Setting_data) - f, err := os.Create(a.setting_json_path) - for err != nil { - f, err = os.Create(a.setting_json_path) - time.Sleep(time.Millisecond * 200) - } - defer f.Close() - - _, err = f.Write([]byte(setting_text)) - if err != nil { - panic(err) - } -} - -func (a *App) Get_setting() Setting_t { - return a.Setting_data -} - -func (a *App) Set_setting(v Setting_t) { - if a.Setting_data != v { - a.Setting_data = v - a.Write_setting() - } -} - func (a *App) Select_Nikki_dir_Dialog() string { path_data, err := runtime.OpenDirectoryDialog(a.ctx, runtime.OpenDialogOptions{ DefaultDirectory: "", diff --git a/app_nikki.go b/app_nikki.go new file mode 100644 index 0000000..07e33a5 --- /dev/null +++ b/app_nikki.go @@ -0,0 +1,109 @@ +package main + +import ( + "io/ioutil" + "os" + "path" + "sort" + "time" +) + +type Nikki_date_t struct { + Year int + Month int + Day int +} + +type Nikki_t struct { + Fname string + Date Nikki_date_t + Content string +} + +func (a *App) Add_nikki_today() { + if a.Setting_data.Nikki_dir == "" { + return + } + + timezone := time.FixedZone("Asia/Tokyo", 9*60*60) + time_now := time.Now().In(timezone) + f, err := os.OpenFile( + path.Join( + a.Setting_data.Nikki_dir, + time_now.Format(TimeFormat_conv(a.Setting_data.Fname_format)), + ), + os.O_WRONLY|os.O_CREATE, 0666, + ) + if err != nil { + } + f.Close() +} + +func (a *App) Parse_nikki_file(fname string) Nikki_t { + content, err := ioutil.ReadFile(path.Join(a.Setting_data.Nikki_dir, fname)) + if err != nil { + panic(err) + } + + Fname_format_golang := TimeFormat_conv(a.Setting_data.Fname_format) + + t, err := time.Parse(Fname_format_golang, fname) + + return Nikki_t{ + Fname: fname, Content: string(content), + Date: Nikki_date_t{ + Year: t.Year(), + Month: int(t.Month()), + Day: t.Day(), + }, + } +} + +func (a *App) Write_nikki_file(v Nikki_t) { + var err error + var f *os.File + f, err = os.Create(path.Join(a.Setting_data.Nikki_dir, v.Fname)) + for err != nil { + f, err = os.Create(path.Join(a.Setting_data.Nikki_dir, v.Fname)) + time.Sleep(time.Millisecond * 200) + } + defer f.Close() + + _, err = f.Write([]byte(v.Content)) + if err != nil { + panic(err) + } +} + +func (a *App) Set_nikki(v []Nikki_t) { + for i, e := range v { + if a.Nikki_data[i].Content != e.Content { + a.Nikki_data[i].Content = e.Content + a.Write_nikki_file(a.Nikki_data[i]) + } + } + +} + +func (a *App) Load_nikki() { + var reslut []Nikki_t + for _, e := range a.Get_dir_fnames(a.Setting_data.Nikki_dir) { + reslut = append(reslut, a.Parse_nikki_file(e)) + } + + sort.SliceStable(reslut, func(i, j int) bool { + if reslut[i].Date.Year != reslut[j].Date.Year { + return reslut[i].Date.Year > reslut[j].Date.Year + } + if reslut[i].Date.Month != reslut[j].Date.Month { + return reslut[i].Date.Month > reslut[j].Date.Month + } + return reslut[i].Date.Day > reslut[j].Date.Day + }) + a.Nikki_data = reslut +} + +func (a *App) Get_nikki() []Nikki_t { + + return a.Nikki_data +} diff --git a/app_nikki_test.go b/app_nikki_test.go new file mode 100644 index 0000000..65741e7 --- /dev/null +++ b/app_nikki_test.go @@ -0,0 +1,17 @@ +package main + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestParse_nikki_file(t *testing.T) { + app := App{} + app.Setting_data.Nikki_dir = "test-dir" + app.Setting_data.Fname_format = "YYYY年MM月DD日.txt" + + assert.EqualExportedValues(t, + Nikki_t{Fname: "2024年09月19日.txt", Date: Nikki_date_t{Year: 2024, Month: 9, Day: 19}, Content: "Test!"}, + app.Parse_nikki_file("2024年09月19日.txt")) +} diff --git a/app_setting.go b/app_setting.go new file mode 100644 index 0000000..320a133 --- /dev/null +++ b/app_setting.go @@ -0,0 +1,54 @@ +package main + +import ( + "encoding/json" + "io/ioutil" + "os" + "time" +) + +type Setting_t struct { + Nikki_dir string + Fname_format string +} + +var default_Setting_data = Setting_t{Nikki_dir: "", Fname_format: "YYYY年MM月DD日.txt"} + +func (a *App) Get_setting() Setting_t { + return a.Setting_data +} + +func (a *App) Set_setting(v Setting_t) { + if a.Setting_data != v { + a.Setting_data = v + a.Write_setting() + } +} + +func (a *App) Write_setting() { + setting_text, err := json.Marshal(a.Setting_data) + f, err := os.Create(a.setting_json_path) + for err != nil { + f, err = os.Create(a.setting_json_path) + time.Sleep(time.Millisecond * 200) + } + defer f.Close() + + _, err = f.Write([]byte(setting_text)) + if err != nil { + panic(err) + } +} + +func (a *App) Load_setting() { + + setting_text, err := ioutil.ReadFile(a.setting_json_path) + if err == nil { + if err := json.Unmarshal(setting_text, &a.Setting_data); err != nil { + a.Setting_data = default_Setting_data + } + } else { + a.Setting_data = default_Setting_data + } + +} diff --git a/app_test.go b/app_test.go index c56d4e2..899dc31 100644 --- a/app_test.go +++ b/app_test.go @@ -27,13 +27,3 @@ func TestTimeFormat_conv(t *testing.T) { assert.Equal(t, "2006年01月02日.txt", TimeFormat_conv("YYYY年MM月DD日.txt")) } - -func TestParse_nikki_file(t *testing.T) { - app := App{} - app.Setting_data.Nikki_dir = "test-dir" - app.Setting_data.Fname_format = "YYYY年MM月DD日.txt" - - assert.EqualExportedValues(t, - Nikki_t{Fname: "2024年09月19日.txt", Date: Nikki_date_t{Year: 2024, Month: 9, Day: 19}, Content: "Test!"}, - app.Parse_nikki_file("2024年09月19日.txt")) -}