printer/plainprinter.go
author Mikael Berthe <mikael@lilotux.net>
Wed, 21 Mar 2018 22:47:40 +0100
changeset 214 78fe649d7fc9
parent 210 94be15243195
child 228 360929ee6aef
permissions -rw-r--r--
Version 2.3.0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
185
564d92b54b00 Update copyrights
Mikael Berthe <mikael@lilotux.net>
parents: 172
diff changeset
     1
// Copyright © 2017-2018 Mikael Berthe <mikael@lilotux.net>
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
//
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
// Licensed under the MIT license.
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
// Please see the LICENSE file is this directory.
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
package printer
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
import (
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     9
	"fmt"
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    10
	"io"
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
	"os"
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
	"reflect"
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
	"time"
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
	"github.com/McKael/madon"
126
7d712d2bde73 Much improved html2text (fromhtml)
Mikael Berthe <mikael@lilotux.net>
parents: 121
diff changeset
    16
	"github.com/McKael/madonctl/printer/html2text"
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    17
)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    18
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
// PlainPrinter is the default "plain text" printer
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
type PlainPrinter struct {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    21
	Indent      string
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    22
	NoSubtitles bool
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    23
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    24
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    25
// NewPrinterPlain returns a plaintext ResourcePrinter
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    26
// For PlainPrinter, the option parameter contains the indent prefix.
83
57afac822019 Use a map for ResourcePrinter options
Mikael Berthe <mikael@lilotux.net>
parents: 77
diff changeset
    27
func NewPrinterPlain(options Options) (*PlainPrinter, error) {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    28
	indentInc := "  "
83
57afac822019 Use a map for ResourcePrinter options
Mikael Berthe <mikael@lilotux.net>
parents: 77
diff changeset
    29
	if i, ok := options["indent"]; ok {
57afac822019 Use a map for ResourcePrinter options
Mikael Berthe <mikael@lilotux.net>
parents: 77
diff changeset
    30
		indentInc = i
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
	return &PlainPrinter{Indent: indentInc}, nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
// PrintObj sends the object as text to the writer
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    36
// If the writer w is nil, standard output will be used.
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    37
// For PlainPrinter, the option parameter contains the initial indent.
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    38
func (p *PlainPrinter) PrintObj(obj interface{}, w io.Writer, initialIndent string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    39
	if w == nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    40
		w = os.Stdout
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    41
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    42
	switch o := obj.(type) {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    43
	case []madon.Account, []madon.Attachment, []madon.Card, []madon.Context,
192
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    44
		[]madon.Emoji, []madon.Instance, []madon.InstancePeer,
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    45
		[]madon.List, []madon.Mention, []madon.Notification,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    46
		[]madon.Relationship, []madon.Report, []madon.Results,
192
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    47
		[]madon.Status, []madon.StreamEvent, []madon.Tag,
210
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
    48
		[]madon.WeekActivity, []madon.DomainName:
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    49
		return p.plainForeach(o, w, initialIndent)
152
4397b8c740e5 PlainPrinter: support for madon.DomainName
Mikael Berthe <mikael@lilotux.net>
parents: 150
diff changeset
    50
	case *madon.DomainName:
4397b8c740e5 PlainPrinter: support for madon.DomainName
Mikael Berthe <mikael@lilotux.net>
parents: 150
diff changeset
    51
		return p.plainPrintDomainName(o, w, initialIndent)
4397b8c740e5 PlainPrinter: support for madon.DomainName
Mikael Berthe <mikael@lilotux.net>
parents: 150
diff changeset
    52
	case madon.DomainName:
4397b8c740e5 PlainPrinter: support for madon.DomainName
Mikael Berthe <mikael@lilotux.net>
parents: 150
diff changeset
    53
		return p.plainPrintDomainName(&o, w, initialIndent)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    54
	case *madon.Account:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    55
		return p.plainPrintAccount(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    56
	case madon.Account:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    57
		return p.plainPrintAccount(&o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    58
	case *madon.Attachment:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    59
		return p.plainPrintAttachment(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    60
	case madon.Attachment:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    61
		return p.plainPrintAttachment(&o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    62
	case *madon.Card:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    63
		return p.plainPrintCard(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    64
	case madon.Card:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    65
		return p.plainPrintCard(&o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    66
	case *madon.Context:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    67
		return p.plainPrintContext(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    68
	case madon.Context:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    69
		return p.plainPrintContext(&o, w, initialIndent)
192
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    70
	case *madon.Emoji:
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    71
		return p.plainPrintEmoji(o, w, initialIndent)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    72
	case madon.Emoji:
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    73
		return p.plainPrintEmoji(&o, w, initialIndent)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    74
	case *madon.Instance:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    75
		return p.plainPrintInstance(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    76
	case madon.Instance:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    77
		return p.plainPrintInstance(&o, w, initialIndent)
192
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    78
	case *madon.InstancePeer:
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    79
		return p.plainPrintInstancePeer(o, w, initialIndent)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    80
	case madon.InstancePeer:
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    81
		return p.plainPrintInstancePeer(&o, w, initialIndent)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    82
	case *madon.List:
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    83
		return p.plainPrintList(o, w, initialIndent)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    84
	case madon.List:
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    85
		return p.plainPrintList(&o, w, initialIndent)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    86
	case *madon.Notification:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    87
		return p.plainPrintNotification(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    88
	case madon.Notification:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    89
		return p.plainPrintNotification(&o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    90
	case *madon.Relationship:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    91
		return p.plainPrintRelationship(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    92
	case madon.Relationship:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    93
		return p.plainPrintRelationship(&o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    94
	case *madon.Report:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    95
		return p.plainPrintReport(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    96
	case madon.Report:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    97
		return p.plainPrintReport(&o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    98
	case *madon.Results:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    99
		return p.plainPrintResults(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   100
	case madon.Results:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   101
		return p.plainPrintResults(&o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   102
	case *madon.Status:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   103
		return p.plainPrintStatus(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   104
	case madon.Status:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   105
		return p.plainPrintStatus(&o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   106
	case *madon.UserToken:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   107
		return p.plainPrintUserToken(o, w, initialIndent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   108
	case madon.UserToken:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   109
		return p.plainPrintUserToken(&o, w, initialIndent)
210
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   110
	case *madon.WeekActivity:
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   111
		return p.plainPrintWeekActivity(o, w, initialIndent)
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   112
	case madon.WeekActivity:
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   113
		return p.plainPrintWeekActivity(&o, w, initialIndent)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   114
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   115
	// TODO: Mention
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   116
	// TODO: StreamEvent
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   117
	// TODO: Tag
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   118
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   119
	return fmt.Errorf("PlainPrinter not yet implemented for %T (try json or yaml...)", obj)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   120
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   121
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   122
func (p *PlainPrinter) plainForeach(ol interface{}, w io.Writer, ii string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   123
	switch reflect.TypeOf(ol).Kind() {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   124
	case reflect.Slice:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   125
		s := reflect.ValueOf(ol)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   126
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   127
		for i := 0; i < s.Len(); i++ {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   128
			o := s.Index(i).Interface()
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   129
			if err := p.PrintObj(o, w, ii); err != nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   130
				return err
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   131
			}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   132
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   133
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   134
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   135
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   136
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   137
func html2string(h string) string {
126
7d712d2bde73 Much improved html2text (fromhtml)
Mikael Berthe <mikael@lilotux.net>
parents: 121
diff changeset
   138
	t, err := html2text.Textify(h)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   139
	if err == nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   140
		return t
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   141
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   142
	return h // Failed: return initial string
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   143
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   144
120
54b6f2a4098b Add template command tolocal; update templates and documentation
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   145
// unix2time convert a UNIX timestamp to a time.Time
54b6f2a4098b Add template command tolocal; update templates and documentation
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   146
func unix2time(ts interface{}) (time.Time, error) {
41
909c3ddd83f6 Add fromunix filter to templates (converts date from UNIX timestamp)
Mikael Berthe <mikael@lilotux.net>
parents: 38
diff changeset
   147
	switch t := ts.(type) {
909c3ddd83f6 Add fromunix filter to templates (converts date from UNIX timestamp)
Mikael Berthe <mikael@lilotux.net>
parents: 38
diff changeset
   148
	case int64:
120
54b6f2a4098b Add template command tolocal; update templates and documentation
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   149
		return time.Unix(t, 0), nil
41
909c3ddd83f6 Add fromunix filter to templates (converts date from UNIX timestamp)
Mikael Berthe <mikael@lilotux.net>
parents: 38
diff changeset
   150
	case int:
120
54b6f2a4098b Add template command tolocal; update templates and documentation
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   151
		return time.Unix(int64(t), 0), nil
41
909c3ddd83f6 Add fromunix filter to templates (converts date from UNIX timestamp)
Mikael Berthe <mikael@lilotux.net>
parents: 38
diff changeset
   152
	case float64:
120
54b6f2a4098b Add template command tolocal; update templates and documentation
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   153
		return time.Unix(int64(t), 0), nil
41
909c3ddd83f6 Add fromunix filter to templates (converts date from UNIX timestamp)
Mikael Berthe <mikael@lilotux.net>
parents: 38
diff changeset
   154
	}
120
54b6f2a4098b Add template command tolocal; update templates and documentation
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   155
	return time.Time{}, fmt.Errorf("invalid timestamp type")
41
909c3ddd83f6 Add fromunix filter to templates (converts date from UNIX timestamp)
Mikael Berthe <mikael@lilotux.net>
parents: 38
diff changeset
   156
}
909c3ddd83f6 Add fromunix filter to templates (converts date from UNIX timestamp)
Mikael Berthe <mikael@lilotux.net>
parents: 38
diff changeset
   157
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   158
func indentedPrint(w io.Writer, indent string, title, skipIfEmpty bool, label string, format string, args ...interface{}) {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   159
	prefix := indent
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   160
	if title {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   161
		prefix += "- "
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   162
	} else {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   163
		prefix += "  "
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   164
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   165
	value := fmt.Sprintf(format, args...)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   166
	if !title && skipIfEmpty && len(value) == 0 {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   167
		return
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   168
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   169
	fmt.Fprintf(w, "%s%s: %s\n", prefix, label, value)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   170
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   171
152
4397b8c740e5 PlainPrinter: support for madon.DomainName
Mikael Berthe <mikael@lilotux.net>
parents: 150
diff changeset
   172
func (p *PlainPrinter) plainPrintDomainName(d *madon.DomainName, w io.Writer, indent string) error {
4397b8c740e5 PlainPrinter: support for madon.DomainName
Mikael Berthe <mikael@lilotux.net>
parents: 150
diff changeset
   173
	indentedPrint(w, indent, true, false, "Domain Name", "%s", string(*d))
4397b8c740e5 PlainPrinter: support for madon.DomainName
Mikael Berthe <mikael@lilotux.net>
parents: 150
diff changeset
   174
	return nil
4397b8c740e5 PlainPrinter: support for madon.DomainName
Mikael Berthe <mikael@lilotux.net>
parents: 150
diff changeset
   175
}
4397b8c740e5 PlainPrinter: support for madon.DomainName
Mikael Berthe <mikael@lilotux.net>
parents: 150
diff changeset
   176
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   177
func (p *PlainPrinter) plainPrintAccount(a *madon.Account, w io.Writer, indent string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   178
	indentedPrint(w, indent, true, false, "Account ID", "%d (%s)", a.ID, a.Username)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   179
	indentedPrint(w, indent, false, false, "User ID", "%s", a.Acct)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   180
	indentedPrint(w, indent, false, false, "Display name", "%s", a.DisplayName)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   181
	indentedPrint(w, indent, false, false, "Creation date", "%v", a.CreatedAt.Local())
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   182
	indentedPrint(w, indent, false, false, "URL", "%s", a.URL)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   183
	indentedPrint(w, indent, false, false, "Statuses count", "%d", a.StatusesCount)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   184
	indentedPrint(w, indent, false, false, "Followers count", "%d", a.FollowersCount)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   185
	indentedPrint(w, indent, false, false, "Following count", "%d", a.FollowingCount)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   186
	if a.Locked {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   187
		indentedPrint(w, indent, false, false, "Locked", "%v", a.Locked)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   188
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   189
	indentedPrint(w, indent, false, true, "User note", "%s", html2string(a.Note)) // XXX too long?
207
56afbe03a7d4 Printers: Display moved accounts (PlainPrinter + templates)
Mikael Berthe <mikael@lilotux.net>
parents: 206
diff changeset
   190
	if a.Moved != nil {
56afbe03a7d4 Printers: Display moved accounts (PlainPrinter + templates)
Mikael Berthe <mikael@lilotux.net>
parents: 206
diff changeset
   191
		m := a.Moved
56afbe03a7d4 Printers: Display moved accounts (PlainPrinter + templates)
Mikael Berthe <mikael@lilotux.net>
parents: 206
diff changeset
   192
		indentedPrint(w, indent+p.Indent, true, false, "Moved to account ID", "%d (%s)", m.ID, m.Username)
56afbe03a7d4 Printers: Display moved accounts (PlainPrinter + templates)
Mikael Berthe <mikael@lilotux.net>
parents: 206
diff changeset
   193
		indentedPrint(w, indent+p.Indent, false, false, "New user ID", "%s", m.Acct)
56afbe03a7d4 Printers: Display moved accounts (PlainPrinter + templates)
Mikael Berthe <mikael@lilotux.net>
parents: 206
diff changeset
   194
		indentedPrint(w, indent+p.Indent, false, false, "New display name", "%s", m.DisplayName)
56afbe03a7d4 Printers: Display moved accounts (PlainPrinter + templates)
Mikael Berthe <mikael@lilotux.net>
parents: 206
diff changeset
   195
	}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   196
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   197
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   198
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   199
func (p *PlainPrinter) plainPrintAttachment(a *madon.Attachment, w io.Writer, indent string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   200
	indentedPrint(w, indent, true, false, "Attachment ID", "%d", a.ID)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   201
	indentedPrint(w, indent, false, false, "Type", "%s", a.Type)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   202
	indentedPrint(w, indent, false, false, "Local URL", "%s", a.URL)
203
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   203
	if a.RemoteURL != nil {
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   204
		indentedPrint(w, indent, false, true, "Remote URL", "%s", *a.RemoteURL)
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   205
	}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   206
	indentedPrint(w, indent, false, true, "Preview URL", "%s", a.PreviewURL)
203
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   207
	if a.TextURL != nil {
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   208
		indentedPrint(w, indent, false, true, "Text URL", "%s", *a.TextURL)
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   209
	}
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   210
	if a.Description != nil {
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   211
		indentedPrint(w, indent, false, true, "Description", "%s", *a.Description)
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   212
	}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   213
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   214
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   215
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   216
func (p *PlainPrinter) plainPrintCard(c *madon.Card, w io.Writer, indent string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   217
	indentedPrint(w, indent, true, false, "Card title", "%s", c.Title)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   218
	indentedPrint(w, indent, false, true, "Description", "%s", c.Description)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   219
	indentedPrint(w, indent, false, true, "URL", "%s", c.URL)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   220
	indentedPrint(w, indent, false, true, "Image", "%s", c.Image)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   221
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   222
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   223
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   224
func (p *PlainPrinter) plainPrintContext(c *madon.Context, w io.Writer, indent string) error {
67
c72b15bec8d9 Fix status context (sync with Madon 1.4.3)
Mikael Berthe <mikael@lilotux.net>
parents: 58
diff changeset
   225
	indentedPrint(w, indent, true, false, "Context", "%d relative(s)", len(c.Ancestors)+len(c.Descendants))
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   226
	if len(c.Ancestors) > 0 {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   227
		indentedPrint(w, indent, false, false, "Ancestors", "")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   228
		p.PrintObj(c.Ancestors, w, indent+p.Indent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   229
	}
67
c72b15bec8d9 Fix status context (sync with Madon 1.4.3)
Mikael Berthe <mikael@lilotux.net>
parents: 58
diff changeset
   230
	if len(c.Descendants) > 0 {
c72b15bec8d9 Fix status context (sync with Madon 1.4.3)
Mikael Berthe <mikael@lilotux.net>
parents: 58
diff changeset
   231
		indentedPrint(w, indent, false, false, "Descendants", "")
c72b15bec8d9 Fix status context (sync with Madon 1.4.3)
Mikael Berthe <mikael@lilotux.net>
parents: 58
diff changeset
   232
		p.PrintObj(c.Descendants, w, indent+p.Indent)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   233
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   234
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   235
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   236
192
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   237
func (p *PlainPrinter) plainPrintEmoji(e *madon.Emoji, w io.Writer, indent string) error {
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   238
	indentedPrint(w, indent, true, false, "Emoji shortcode", "%s", e.ShortCode)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   239
	indentedPrint(w, indent, false, false, "URL", "%s", e.URL)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   240
	return nil
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   241
}
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   242
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   243
func (p *PlainPrinter) plainPrintInstance(i *madon.Instance, w io.Writer, indent string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   244
	indentedPrint(w, indent, true, false, "Instance title", "%s", i.Title)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   245
	indentedPrint(w, indent, false, true, "Description", "%s", html2string(i.Description))
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   246
	indentedPrint(w, indent, false, true, "URL", "%s", i.URI)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   247
	indentedPrint(w, indent, false, true, "Email", "%s", i.Email)
18
7a4b57b3e66a Display instance version, if field is set
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   248
	indentedPrint(w, indent, false, true, "Version", "%s", i.Version)
192
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   249
	if i.ContactAccount != nil {
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   250
		c := i.ContactAccount
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   251
		indentedPrint(w, indent+p.Indent, true, false, "Contact account ID", "%d (%s)", c.ID, c.Username)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   252
		indentedPrint(w, indent+p.Indent, false, false, "Contact user ID", "%s", c.Acct)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   253
		indentedPrint(w, indent+p.Indent, false, false, "Contact display name", "%s", c.DisplayName)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   254
	}
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   255
	return nil
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   256
}
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   257
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   258
func (p *PlainPrinter) plainPrintInstancePeer(i *madon.InstancePeer, w io.Writer, indent string) error {
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   259
	indentedPrint(w, indent, true, false, "Peer", "%s", *i)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   260
	return nil
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   261
}
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   262
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   263
func (p *PlainPrinter) plainPrintList(l *madon.List, w io.Writer, indent string) error {
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   264
	indentedPrint(w, indent, true, false, "List ID", "%d", l.ID)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   265
	indentedPrint(w, indent, false, false, "Title", "%s", l.Title)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   266
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   267
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   268
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   269
func (p *PlainPrinter) plainPrintNotification(n *madon.Notification, w io.Writer, indent string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   270
	indentedPrint(w, indent, true, false, "Notification ID", "%d", n.ID)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   271
	indentedPrint(w, indent, false, false, "Type", "%s", n.Type)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   272
	indentedPrint(w, indent, false, false, "Timestamp", "%v", n.CreatedAt.Local())
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   273
	if n.Account != nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   274
		indentedPrint(w, indent+p.Indent, true, false, "Account", "(%d) @%s - %s",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   275
			n.Account.ID, n.Account.Acct, n.Account.DisplayName)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   276
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   277
	if n.Status != nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   278
		p.plainPrintStatus(n.Status, w, indent+p.Indent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   279
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   280
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   281
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   282
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   283
func (p *PlainPrinter) plainPrintRelationship(r *madon.Relationship, w io.Writer, indent string) error {
145
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 126
diff changeset
   284
	indentedPrint(w, indent, true, false, "Account ID", "%d", r.ID)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   285
	indentedPrint(w, indent, false, false, "Following", "%v", r.Following)
206
102b34bb2c28 Printers: Add Relationship.showing_reblogs
Mikael Berthe <mikael@lilotux.net>
parents: 203
diff changeset
   286
	//indentedPrint(w, indent, false, false, "Showing reblogs", "%v", r.ShowingReblogs)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   287
	indentedPrint(w, indent, false, false, "Followed-by", "%v", r.FollowedBy)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   288
	indentedPrint(w, indent, false, false, "Blocking", "%v", r.Blocking)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   289
	indentedPrint(w, indent, false, false, "Muting", "%v", r.Muting)
192
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   290
	indentedPrint(w, indent, false, false, "Muting notifications", "%v", r.MutingNotifications)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   291
	indentedPrint(w, indent, false, false, "Requested", "%v", r.Requested)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   292
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   293
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   294
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   295
func (p *PlainPrinter) plainPrintReport(r *madon.Report, w io.Writer, indent string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   296
	indentedPrint(w, indent, true, false, "Report ID", "%d", r.ID)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   297
	indentedPrint(w, indent, false, false, "Action taken", "%s", r.ActionTaken)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   298
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   299
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   300
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   301
func (p *PlainPrinter) plainPrintResults(r *madon.Results, w io.Writer, indent string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   302
	indentedPrint(w, indent, true, false, "Results", "%d account(s), %d status(es), %d hashtag(s)",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   303
		len(r.Accounts), len(r.Statuses), len(r.Hashtags))
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   304
	if len(r.Accounts) > 0 {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   305
		indentedPrint(w, indent, false, false, "Accounts", "")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   306
		p.PrintObj(r.Accounts, w, indent+p.Indent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   307
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   308
	if len(r.Statuses) > 0 {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   309
		indentedPrint(w, indent, false, false, "Statuses", "")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   310
		p.PrintObj(r.Statuses, w, indent+p.Indent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   311
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   312
	if len(r.Hashtags) > 0 {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   313
		indentedPrint(w, indent, false, false, "Hashtags", "")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   314
		for _, tag := range r.Hashtags {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   315
			indentedPrint(w, indent+p.Indent, true, false, "Tag", "%s", tag)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   316
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   317
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   318
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   319
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   320
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   321
func (p *PlainPrinter) plainPrintStatus(s *madon.Status, w io.Writer, indent string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   322
	indentedPrint(w, indent, true, false, "Status ID", "%d", s.ID)
121
10453a1c5698 PlainPrinter: Display username of a status author
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
   323
	if s.Account != nil {
10453a1c5698 PlainPrinter: Display username of a status author
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
   324
		author := s.Account.Acct
10453a1c5698 PlainPrinter: Display username of a status author
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
   325
		if s.Account.DisplayName != "" {
10453a1c5698 PlainPrinter: Display username of a status author
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
   326
			author += " (" + s.Account.DisplayName + ")"
10453a1c5698 PlainPrinter: Display username of a status author
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
   327
		}
10453a1c5698 PlainPrinter: Display username of a status author
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
   328
		indentedPrint(w, indent, false, false, "From", "%s", author)
10453a1c5698 PlainPrinter: Display username of a status author
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
   329
	}
192
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   330
	if s.Pinned {
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   331
		indentedPrint(w, indent, false, false, "Pinned", "%v", s.Pinned)
be28c23ace0e Update PlainPrinter
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   332
	}
162
3118ab97c8df PlainPrinter: Display when a message is private
Mikael Berthe <mikael@lilotux.net>
parents: 152
diff changeset
   333
	if s.Visibility == "private" {
3118ab97c8df PlainPrinter: Display when a message is private
Mikael Berthe <mikael@lilotux.net>
parents: 152
diff changeset
   334
		indentedPrint(w, indent, false, false, "Private", "true")
3118ab97c8df PlainPrinter: Display when a message is private
Mikael Berthe <mikael@lilotux.net>
parents: 152
diff changeset
   335
	}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   336
	indentedPrint(w, indent, false, false, "Timestamp", "%v", s.CreatedAt.Local())
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   337
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   338
	if s.Reblog != nil {
121
10453a1c5698 PlainPrinter: Display username of a status author
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
   339
		if s.Reblog.Account != nil {
10453a1c5698 PlainPrinter: Display username of a status author
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
   340
			indentedPrint(w, indent, false, false, "Reblogged from", "%s", s.Reblog.Account.Username)
10453a1c5698 PlainPrinter: Display username of a status author
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
   341
		}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   342
		return p.plainPrintStatus(s.Reblog, w, indent+p.Indent)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   343
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   344
77
23b2b6c5643e PlainPrinter: Display when 'sensitive' (aka NSFW) is set
Mikael Berthe <mikael@lilotux.net>
parents: 67
diff changeset
   345
	if s.Sensitive {
23b2b6c5643e PlainPrinter: Display when 'sensitive' (aka NSFW) is set
Mikael Berthe <mikael@lilotux.net>
parents: 67
diff changeset
   346
		indentedPrint(w, indent, false, false, "Sensitive (NSFW)", "%v", s.Sensitive)
23b2b6c5643e PlainPrinter: Display when 'sensitive' (aka NSFW) is set
Mikael Berthe <mikael@lilotux.net>
parents: 67
diff changeset
   347
	}
23b2b6c5643e PlainPrinter: Display when 'sensitive' (aka NSFW) is set
Mikael Berthe <mikael@lilotux.net>
parents: 67
diff changeset
   348
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   349
	indentedPrint(w, indent, false, false, "Contents", "%s", html2string(s.Content))
172
0d651f070319 Update types to reflect Mastodon 2.0.0 API changes
Mikael Berthe <mikael@lilotux.net>
parents: 162
diff changeset
   350
	if s.InReplyToID != nil && *s.InReplyToID > 0 {
0d651f070319 Update types to reflect Mastodon 2.0.0 API changes
Mikael Berthe <mikael@lilotux.net>
parents: 162
diff changeset
   351
		indentedPrint(w, indent, false, false, "In-Reply-To", "%d", *s.InReplyToID)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   352
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   353
	if s.Reblogged {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   354
		indentedPrint(w, indent, false, false, "Reblogged", "%v", s.Reblogged)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   355
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   356
	indentedPrint(w, indent, false, false, "URL", "%s", s.URL)
58
5a0cb1e65e65 PlainPrinter: Display attachment URLs in statuses
Mikael Berthe <mikael@lilotux.net>
parents: 41
diff changeset
   357
	// Display minimum details of attachments
5a0cb1e65e65 PlainPrinter: Display attachment URLs in statuses
Mikael Berthe <mikael@lilotux.net>
parents: 41
diff changeset
   358
	//return p.PrintObj(s.MediaAttachments, w, indent+p.Indent)
5a0cb1e65e65 PlainPrinter: Display attachment URLs in statuses
Mikael Berthe <mikael@lilotux.net>
parents: 41
diff changeset
   359
	for _, a := range s.MediaAttachments {
5a0cb1e65e65 PlainPrinter: Display attachment URLs in statuses
Mikael Berthe <mikael@lilotux.net>
parents: 41
diff changeset
   360
		indentedPrint(w, indent+p.Indent, true, false, "Attachment ID", "%d", a.ID)
150
7f46bcaf240c Sync with Madon library update
Mikael Berthe <mikael@lilotux.net>
parents: 148
diff changeset
   361
		if a.TextURL != nil && *a.TextURL != "" {
7f46bcaf240c Sync with Madon library update
Mikael Berthe <mikael@lilotux.net>
parents: 148
diff changeset
   362
			indentedPrint(w, indent+p.Indent, true, false, "Text URL", "%s", *a.TextURL)
58
5a0cb1e65e65 PlainPrinter: Display attachment URLs in statuses
Mikael Berthe <mikael@lilotux.net>
parents: 41
diff changeset
   363
		} else if a.URL != "" {
5a0cb1e65e65 PlainPrinter: Display attachment URLs in statuses
Mikael Berthe <mikael@lilotux.net>
parents: 41
diff changeset
   364
			indentedPrint(w, indent+p.Indent, false, false, "URL", "%s", a.URL)
150
7f46bcaf240c Sync with Madon library update
Mikael Berthe <mikael@lilotux.net>
parents: 148
diff changeset
   365
		} else if a.RemoteURL != nil {
7f46bcaf240c Sync with Madon library update
Mikael Berthe <mikael@lilotux.net>
parents: 148
diff changeset
   366
			indentedPrint(w, indent+p.Indent, false, false, "Remote URL", "%s", *a.RemoteURL)
58
5a0cb1e65e65 PlainPrinter: Display attachment URLs in statuses
Mikael Berthe <mikael@lilotux.net>
parents: 41
diff changeset
   367
		}
203
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   368
		if a.Description != nil && *a.Description != "" {
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   369
			indentedPrint(w, indent+p.Indent, false, true, "Description", "%s", a.Description)
71455784278b PlainPrinter: Fix attachment output
Mikael Berthe <mikael@lilotux.net>
parents: 194
diff changeset
   370
		}
58
5a0cb1e65e65 PlainPrinter: Display attachment URLs in statuses
Mikael Berthe <mikael@lilotux.net>
parents: 41
diff changeset
   371
	}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   372
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   373
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   374
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   375
func (p *PlainPrinter) plainPrintUserToken(s *madon.UserToken, w io.Writer, indent string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   376
	indentedPrint(w, indent, true, false, "User token", "%s", s.AccessToken)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   377
	indentedPrint(w, indent, false, true, "Type", "%s", s.TokenType)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   378
	if s.CreatedAt != 0 {
120
54b6f2a4098b Add template command tolocal; update templates and documentation
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   379
		indentedPrint(w, indent, false, true, "Timestamp", "%v", time.Unix(s.CreatedAt, 0))
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   380
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   381
	indentedPrint(w, indent, false, true, "Scope", "%s", s.Scope)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   382
	return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   383
}
210
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   384
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   385
func (p *PlainPrinter) plainPrintWeekActivity(a *madon.WeekActivity, w io.Writer, indent string) error {
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   386
	indentedPrint(w, indent, true, false, "Activity week", "%v", a.Week.Format("2006-01-02"))
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   387
	indentedPrint(w, indent, false, true, "Weekly logins", "%d", a.Logins)
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   388
	indentedPrint(w, indent, false, true, "Weekly statuses", "%d", a.Statuses)
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   389
	indentedPrint(w, indent, false, true, "Weekly registrations", "%d", a.Registrations)
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   390
	return nil
94be15243195 PlainPrinter: Add WeekActivity format
Mikael Berthe <mikael@lilotux.net>
parents: 207
diff changeset
   391
}