github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/optional/encoders/bz2.go (about)

     1  package encoders
     2  
     3  import (
     4  	"compress/bzip2"
     5  	"io"
     6  
     7  	"github.com/lmorg/murex/lang"
     8  	"github.com/lmorg/murex/lang/types"
     9  )
    10  
    11  func init() {
    12  	lang.DefineMethod("!bz2", cmdUnbz2, types.Generic, types.Generic)
    13  }
    14  
    15  func cmdUnbz2(p *lang.Process) (err error) {
    16  	if err = p.ErrIfNotAMethod(); err != nil {
    17  		p.Stdout.SetDataType(types.Null)
    18  		return err
    19  	}
    20  
    21  	p.Stdout.SetDataType(types.Generic)
    22  	bz2 := bzip2.NewReader(p.Stdin)
    23  	_, err = io.Copy(p.Stdout, bz2)
    24  	if err != nil {
    25  		return err
    26  	}
    27  
    28  	return nil
    29  }