« Back to Index

Go: text indenting

View original Gist on GitHub

Tags: #go #tty

main text indenting.go

// https://play.golang.org/p/aug7FboQQQ_g

package main

import (
	"fmt"
	"strings"

	"github.com/mitchellh/go-wordwrap"
)

func wrapIndent(s string, lim uint, indent uint) string {
	lim -= indent
	wrapped := wordwrap.WrapString(s, lim)
	var result []string
	for _, line := range strings.Split(wrapped, "\n") {
		result = append(result, strings.Repeat(" ", int(indent))+line)
	}
	return strings.Join(result, "\n")
}

func main() {
	fmt.Printf("%s\n\n", wrapIndent(text, 80, 0))
	fmt.Printf("%s\n\n", wrapIndent(text, 80, 4))
}

const text = `Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia, molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborum numquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem. Veritatis obcaecati tenetur iure eius earum ut molestias architecto voluptate aliquam nihil, eveniet aliquid culpa officia aut! Impedit sit sunt quaerat, odit, tenetur error, harum nesciunt ipsum debitis quas aliquid. Reprehenderit, quia. Quo neque error repudiandae fuga?`