syukujitsu

package module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2021 License: BSD-3-Clause Imports: 13 Imported by: 0

README

syukujitsu-go

PkgGoDev Go Report Card

内閣府の祝日 CSV を以下の syukujitsu.Entry 構造体のスライスにパースします。

type Entry struct {
	Year  int
	Month int
	Day   int
	Name  string
}

使い方

go get github.com/mikan/syukujitsu-go
package main

import (
	"context"
	"fmt"
	"time"

	"github.com/mikan/syukujitsu-go"
)

func main() {
	entries, err := syukujitsu.FetchAndParse(context.Background())
	if err != nil {
		panic(err)
	}
	fmt.Printf("%d 件の祝日を読み込みました\n", len(entries))
	if name, found := syukujitsu.Find(entries, time.Now()); found {
		fmt.Printf("今日は%sです!\n", name)
	} else {
		fmt.Printf("今日は祝日ではありません\n")
	}
}

ここにソースがあります: demo.go

予めダウンロードしたファイルを使いたい場合

go get github.com/mikan/syukujitsu-go
curl -O https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv
package main

import (
	"fmt"
	"time"

	"github.com/mikan/syukujitsu-go"
)

func main() {
	entries, err := syukujitsu.LoadAndParse("syukujitsu.csv")
	if err != nil {
		panic(err)
	}
	fmt.Printf("%d 件の祝日を読み込みました\n", len(entries))
	if name, found := syukujitsu.Find(entries, time.Now()); found {
		fmt.Printf("今日は%sです!\n", name)
	} else {
		fmt.Printf("今日は祝日ではありません\n")
	}
}

ここにソースがあります: demo.go

なぜ shukujitsu ではなく syukujitsu なのですか?

ファイル名に合わせました。でも URL を良く見るとディレクトリ名は shukujitsu なんですよね。

https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv

ライセンス

BSD 3-clause

作った人

@mikan

Documentation

Overview

Package syukujitsu は内閣府の祝日 CSV を取得してパースします。

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Find added in v0.0.2

func Find(entries []Entry, time time.Time) (name string, found bool)

Find は Entry スライス内に time.Time と一致する祝日があればその祝日名と true を、一致しなければ空文字と false を返却します。

Example
entries, err := FetchAndParse(context.Background())
if err != nil {
	panic(err)
}
fmt.Println(Find(entries, time.Date(2021, 1, 1, 0, 0, 0, 0, time.Local)))
fmt.Println(Find(entries, time.Date(2021, 1, 2, 0, 0, 0, 0, time.Local)))
Output:

元日 true
 false

Types

type Entry

type Entry struct {
	Year  int
	Month int
	Day   int
	Name  string
}

Entry は祝日1日分の情報を保持する構造体です。

func FetchAndParse

func FetchAndParse(ctx context.Context) ([]Entry, error)

FetchAndParse は内閣府ウェブサイトから祝日 CSV を取得して Entry スライスに変換します。

func LoadAndParse

func LoadAndParse(name string) ([]Entry, error)

LoadAndParse は予めダウンロードしておいた祝日 CSV を Entry スライスに変換します。

func Parse

func Parse(data []byte) ([]Entry, error)

Parse はバイトスライスにロードされた CSV データを Entry スライスに変換します。

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL