aboutsummaryrefslogtreecommitdiff
path: root/html2md_cliDef.go
blob: 8afc467da7565c56b199cfa1292e1c8da12230ff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
////////////////////////////////////////////////////////////////////////////
// Program: html2md
// Purpose: HTML to Markdown
// Authors: Tong Sun (c) 2020, All rights reserved
////////////////////////////////////////////////////////////////////////////

package main

import (
	//  	"fmt"
	//  	"os"

	"github.com/mkideal/cli"
	//  	"github.com/mkideal/cli/clis"
	clix "github.com/mkideal/cli/ext"
)

////////////////////////////////////////////////////////////////////////////
// Constant and data type/structure definitions

//==========================================================================
// html2md

type rootT struct {
	cli.Helper
	Filei                       *clix.Reader `cli:"*i,in" usage:"The html/xml file to read from (or stdin)"`
	Sel                         string       `cli:"s,sel" usage:"CSS/goquery selectors\n"`
	OptHeadingStyle             string       `cli:"opt-heading-style" usage:"Option HeadingStyle"`
	OptHorizontalRule           string       `cli:"opt-horizontal-rule" usage:"Option HorizontalRule"`
	OptBulletListMarker         string       `cli:"opt-bullet-list-marker" usage:"Option BulletListMarker"`
	OptCodeBlockStyle           string       `cli:"opt-code-block-style" usage:"Option CodeBlockStyle"`
	OptFence                    string       `cli:"opt-fence" usage:"Option Fence"`
	OptEmDelimiter              string       `cli:"opt-em-delimiter" usage:"Option EmDelimiter"`
	OptStrongDelimiter          string       `cli:"opt-strong-delimiter" usage:"Option StrongDelimiter"`
	OptLinkStyle                string       `cli:"opt-link-style" usage:"Option LinkStyle"`
	OptLinkReferenceStyle       string       `cli:"opt-link-reference-style" usage:"Option LinkReferenceStyle\n"`
	PluginConfluenceAttachments bool         `cli:"plugin-conf-attachment" usage:"Plugin ConfluenceAttachments"`
	PluginConfluenceCodeBlock   bool         `cli:"plugin-conf-code" usage:"Plugin ConfluenceCodeBlock"`
	PluginFrontMatter           bool         `cli:"plugin-frontmatter" usage:"Plugin FrontMatter"`
	PluginGitHubFlavored        bool         `cli:"plugin-gfm" usage:"Plugin GitHubFlavored"`
	PluginStrikethrough         bool         `cli:"plugin-strikethrough" usage:"Plugin Strikethrough"`
	PluginTable                 bool         `cli:"plugin-table" usage:"Plugin Table"`
	PluginTaskListItems         bool         `cli:"plugin-task-list" usage:"Plugin TaskListItems"`
	PluginVimeoEmbed            bool         `cli:"plugin-vimeo" usage:"Plugin VimeoEmbed"`
	PluginYoutubeEmbed          bool         `cli:"plugin-youtube" usage:"Plugin YoutubeEmbed"`
}

var root = &cli.Command{
	Name: "html2md",
	Desc: "HTML to Markdown\nVersion " + version + " built on " + date +
		"\nCopyright (C) 2020, Tong Sun",
	Text: "HTML to Markdown converter on command line" +
		"\n\nUsage:\n  html2md [Options...]",
	Argv: func() interface{} { return new(rootT) },
	Fn:   html2md,

	NumOption: cli.AtLeast(1),
}

// Template for main starts here
////////////////////////////////////////////////////////////////////////////
// Constant and data type/structure definitions

// The OptsT type defines all the configurable options from cli.
//  type OptsT struct {
//  	Filei	*clix.Reader
//  	Sel	string
//  	OptHeadingStyle	string
//  	OptHorizontalRule	string
//  	OptBulletListMarker	string
//  	OptCodeBlockStyle	string
//  	OptFence	string
//  	OptEmDelimiter	string
//  	OptStrongDelimiter	string
//  	OptLinkStyle	string
//  	OptLinkReferenceStyle	string
//  	PluginConfluenceAttachments	bool
//  	PluginConfluenceCodeBlock	bool
//  	PluginFrontMatter	bool
//  	PluginGitHubFlavored	bool
//  	PluginStrikethrough	bool
//  	PluginTable	bool
//  	PluginTaskListItems	bool
//  	PluginVimeoEmbed	bool
//  	PluginYoutubeEmbed	bool
//  	Verbose int
//  }

////////////////////////////////////////////////////////////////////////////
// Global variables definitions

//  var (
//          progname  = "html2md"
//          version   = "0.1.0"
//          date = "2020-07-25"

//  	rootArgv *rootT
//  	// Opts store all the configurable options
//  	Opts OptsT
//  )

////////////////////////////////////////////////////////////////////////////
// Function definitions

// Function main
//  func main() {
//  	cli.SetUsageStyle(cli.DenseNormalStyle) // left-right, for up-down, use ManualStyle
//  	//NOTE: You can set any writer implements io.Writer
//  	// default writer is os.Stdout
//  	if err := cli.Root(root,).Run(os.Args[1:]); err != nil {
//  		fmt.Fprintln(os.Stderr, err)
//  		os.Exit(1)
//  	}
//  	fmt.Println("")
//  }

// Template for main dispatcher starts here
//==========================================================================
// Dumb root handler

//  func html2md(ctx *cli.Context) error {
//  	ctx.JSON(ctx.RootArgv())
//  	ctx.JSON(ctx.Argv())
//  	fmt.Println()

//  	return nil
//  }

// Template for CLI handling starts here