file

package
v1.0.33 Latest Latest
Warning

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

Go to latest
Published: Sep 19, 2023 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Examples

Constants

This section is empty.

Variables

View Source
var (

	// Open opens a file for reading within the given context
	Open = F.Flow3(
		openIOE,
		RIOE.FromIOEither[*os.File],
		RIOE.WithContext[*os.File],
	)
)

Functions

func Close

func Close[C io.Closer](c C) RIOE.ReaderIOEither[any]

Close closes an object

func ReadFile

func ReadFile(path string) RIOE.ReaderIOEither[[]byte]

ReadFile reads a file in the scope of a context

Example
package main

import (
	"context"
	"fmt"

	RIO "github.com/IBM/fp-go/context/readerio"
	R "github.com/IBM/fp-go/context/readerioeither"
	"github.com/IBM/fp-go/errors"
	F "github.com/IBM/fp-go/function"
	IO "github.com/IBM/fp-go/io"
	J "github.com/IBM/fp-go/json"
)

type RecordType struct {
	Data string `json:"data"`
}

func getData(r RecordType) string {
	return r.Data
}

func main() {

	data := F.Pipe4(
		ReadFile("./data/file.json"),
		R.ChainEitherK(J.Unmarshal[RecordType]),
		R.ChainFirstIOK(IO.Logf[RecordType]("Log: %v")),
		R.Map(getData),
		R.GetOrElse(F.Flow2(
			errors.ToString,
			RIO.Of[string],
		)),
	)

	result := data(context.Background())

	fmt.Println(result())

}
Output:

Carsten

Types

This section is empty.

Jump to

Keyboard shortcuts

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