Ran format on each file

This commit is contained in:
sloumdrone 2019-11-10 10:41:12 -08:00
parent 2038c9c4ac
commit e4f7147e4f
16 changed files with 94 additions and 129 deletions

View File

@ -12,12 +12,12 @@ import (
//--------------------------------------------------\\
type Bookmarks struct {
IsOpen bool
IsOpen bool
IsFocused bool
Position int
Length int
Titles []string
Links []string
Position int
Length int
Titles []string
Links []string
}
//------------------------------------------------\\
@ -89,7 +89,7 @@ func (b Bookmarks) Render(termwidth, termheight int) []string {
var walll, wallr, floor, ceil, tr, tl, br, bl string
if termwidth < 40 {
width = termwidth
}
}
if b.IsFocused {
walll = cui.Shapes["awalll"]
wallr = cui.Shapes["awallr"]
@ -115,11 +115,11 @@ func (b Bookmarks) Render(termwidth, termheight int) []string {
top := fmt.Sprintf("%s%s%s", tl, strings.Repeat(ceil, contentWidth), tr)
out = append(out, top)
marks := b.List()
for i := 0; i < termheight - 2; i++ {
if i + b.Position >= len(b.Titles) {
for i := 0; i < termheight-2; i++ {
if i+b.Position >= len(b.Titles) {
out = append(out, fmt.Sprintf("%s%-*.*s%s", walll, contentWidth, contentWidth, "", wallr))
} else {
out = append(out, fmt.Sprintf("%s%-*.*s%s", walll, contentWidth, contentWidth, marks[i + b.Position], wallr))
out = append(out, fmt.Sprintf("%s%-*.*s%s", walll, contentWidth, contentWidth, marks[i+b.Position], wallr))
}
}
@ -132,7 +132,6 @@ func (b Bookmarks) Render(termwidth, termheight int) []string {
// either here with a scroll up/down or in the client
// code for scroll
//------------------------------------------------\\
// + + + F U N C T I O N S + + + \\
//--------------------------------------------------\\
@ -140,4 +139,3 @@ func (b Bookmarks) Render(termwidth, termheight int) []string {
func MakeBookmarks() Bookmarks {
return Bookmarks{false, false, 0, 0, make([]string, 0), make([]string, 0)}
}

View File

@ -877,8 +877,7 @@ func (c *client) Visit(url string) {
}
}
// +++ Begin Protocol Handlers +++
// +++ Begin Protocol Handlers +++
func (c *client) handleGopher(u Url) {
if u.DownloadOnly {
@ -1022,15 +1021,15 @@ func (c *client) handleWeb(u Url) {
c.SetMessage("The file is non-text: writing to disk...", false)
c.DrawMessage()
var fn string
if i := strings.LastIndex(u.Full, "/"); i > 0 && i + 1 < len(u.Full) {
fn = u.Full[i + 1:]
if i := strings.LastIndex(u.Full, "/"); i > 0 && i+1 < len(u.Full) {
fn = u.Full[i+1:]
} else {
fn = "bombadillo.download"
}
c.saveFile(u, fn)
}
// Open in default web browser if available
// Open in default web browser if available
} else {
if strings.ToUpper(c.Options["terminalonly"]) == "TRUE" {
c.SetMessage("'terminalonly' is set to true and 'lynxmode' is not enabled, cannot open web link", false)
@ -1049,7 +1048,6 @@ func (c *client) handleWeb(u Url) {
}
}
//------------------------------------------------\\
// + + + F U N C T I O N S + + + \\
//--------------------------------------------------\\
@ -1061,12 +1059,12 @@ func MakeClient(name string) *client {
func findAvailableFileName(fpath, fname string) (string, error) {
savePath := filepath.Join(fpath, fname)
_, fileErr := os.Stat(savePath)
_, fileErr := os.Stat(savePath)
for suffix := 1; fileErr == nil; suffix++ {
fn := fmt.Sprintf("%s.%d", fname, suffix)
savePath = filepath.Join(fpath, fn)
_, fileErr = os.Stat(savePath)
_, fileErr = os.Stat(savePath)
if !os.IsNotExist(fileErr) && fileErr != nil {
return savePath, fileErr
@ -1075,4 +1073,3 @@ func findAvailableFileName(fpath, fname string) (string, error) {
return savePath, nil
}

View File

@ -68,10 +68,10 @@ func (s *scanner) scanText() Token {
capInput := strings.ToUpper(buf.String())
switch capInput {
case "D", "DELETE", "A", "ADD","W", "WRITE",
case "D", "DELETE", "A", "ADD", "W", "WRITE",
"S", "SET", "R", "RELOAD", "SEARCH",
"Q", "QUIT", "B", "BOOKMARKS", "H",
"HOME", "?", "HELP", "C", "CHECK",
"HOME", "?", "HELP", "C", "CHECK",
"P", "PURGE":
return Token{Action, capInput}
}

View File

@ -21,11 +21,11 @@ type Parser struct {
type Config struct {
// Bookmarks gopher.Bookmarks
Bookmarks struct {
Titles, Links []string
Bookmarks struct {
Titles, Links []string
}
Settings []KeyValue
Certs []KeyValue
Settings []KeyValue
Certs []KeyValue
}
type KeyValue struct {

View File

@ -1,5 +1 @@
package cui
import (
)

View File

@ -12,21 +12,20 @@ var defaultOptions = map[string]string{
// Edit these values before compile to have different default values
// ... though they can always be edited from within bombadillo as well
// it just may take more time/work.
//
// To change the default location for the config you can enter
// any valid path as a string, if you want an absolute, or
// concatenate with the main default: `userinfo.HomeDir` like so:
// "configlocation": userinfo.HomeDir + "/config/"
"homeurl": "gopher://bombadillo.colorfield.space:70/1/user-guide.map",
"savelocation": userinfo.HomeDir,
"searchengine": "gopher://gopher.floodgap.com:70/7/v2/vs",
"openhttp": "false",
"telnetcommand": "telnet",
//
// To change the default location for the config you can enter
// any valid path as a string, if you want an absolute, or
// concatenate with the main default: `userinfo.HomeDir` like so:
// "configlocation": userinfo.HomeDir + "/config/"
"homeurl": "gopher://bombadillo.colorfield.space:70/1/user-guide.map",
"savelocation": userinfo.HomeDir,
"searchengine": "gopher://gopher.floodgap.com:70/7/v2/vs",
"openhttp": "false",
"telnetcommand": "telnet",
"configlocation": userinfo.HomeDir,
"theme": "normal", // "normal", "inverted"
"terminalonly": "true",
"theme": "normal", // "normal", "inverted"
"terminalonly": "true",
"tlscertificate": "",
"tlskey": "",
"lynxmode": "false",
"tlskey": "",
"lynxmode": "false",
}

View File

@ -2,8 +2,8 @@ package finger
import (
"fmt"
"net"
"io/ioutil"
"net"
"time"
)

View File

@ -5,17 +5,15 @@ import (
"strconv"
)
//------------------------------------------------\\
// + + + T Y P E S + + + \\
//--------------------------------------------------\\
type Footbar struct {
PercentRead string
PageType string
PageType string
}
//------------------------------------------------\\
// + + + R E C E I V E R S + + + \\
//--------------------------------------------------\\
@ -34,15 +32,14 @@ func (f *Footbar) SetPageType(t string) {
}
func (f *Footbar) Render(termWidth, position int, theme string) string {
pre := fmt.Sprintf("HST: (%2.2d) - - - %4s Read ", position + 1, f.PercentRead)
pre := fmt.Sprintf("HST: (%2.2d) - - - %4s Read ", position+1, f.PercentRead)
out := "\033[0m%*.*s "
if theme == "inverse" {
out = "\033[7m%*.*s \033[0m"
}
return fmt.Sprintf(out, termWidth - 1, termWidth - 1, pre)
return fmt.Sprintf(out, termWidth-1, termWidth-1, pre)
}
//------------------------------------------------\\
// + + + F U N C T I O N S + + + \\
//--------------------------------------------------\\
@ -50,4 +47,3 @@ func (f *Footbar) Render(termWidth, position int, theme string) string {
func MakeFootbar() Footbar {
return Footbar{"---", "N/A"}
}

View File

@ -11,22 +11,19 @@ import (
"time"
)
type Capsule struct {
MimeMaj string
MimeMaj string
MimeMin string
Status int
Content string
Status int
Content string
Links []string
}
type TofuDigest struct {
certs map[string]string
ClientCert tls.Certificate
certs map[string]string
ClientCert tls.Certificate
}
//------------------------------------------------\\
// + + + R E C E I V E R S + + + \\
//--------------------------------------------------\\
@ -107,17 +104,17 @@ func (t *TofuDigest) newCert(host string, cState *tls.ConnectionState) error {
reasons.WriteString("; ")
}
if now.Before(cert.NotBefore) {
reasons.WriteString(fmt.Sprintf("Cert [%d] is not valid yet", index + 1))
reasons.WriteString(fmt.Sprintf("Cert [%d] is not valid yet", index+1))
continue
}
if now.After(cert.NotAfter) {
reasons.WriteString(fmt.Sprintf("Cert [%d] is expired", index + 1))
reasons.WriteString(fmt.Sprintf("Cert [%d] is expired", index+1))
continue
}
if err := cert.VerifyHostname(host); err != nil {
reasons.WriteString(fmt.Sprintf("Cert [%d] hostname does not match", index + 1))
reasons.WriteString(fmt.Sprintf("Cert [%d] hostname does not match", index+1))
continue
}
@ -143,8 +140,6 @@ func (t *TofuDigest) IniDump() string {
return out.String()
}
//------------------------------------------------\\
// + + + F U N C T I O N S + + + \\
//--------------------------------------------------\\
@ -157,7 +152,7 @@ func Retrieve(host, port, resource string, td *TofuDigest) (string, error) {
addr := host + ":" + port
conf := &tls.Config{
MinVersion: tls.VersionTLS12,
MinVersion: tls.VersionTLS12,
InsecureSkipVerify: true,
}
@ -183,7 +178,7 @@ func Retrieve(host, port, resource string, td *TofuDigest) (string, error) {
if td.Exists(host) {
// See if we have a matching cert
err := td.Match(host, &connState)
err := td.Match(host, &connState)
if err != nil && err.Error() != "EXP" {
// If there is no match and it isnt because of an expiration
// just return the error
@ -223,21 +218,21 @@ func Fetch(host, port, resource string, td *TofuDigest) ([]byte, error) {
rawResp, err := Retrieve(host, port, resource, td)
if err != nil {
return make([]byte, 0), err
}
}
resp := strings.SplitN(rawResp, "\r\n", 2)
if len(resp) != 2 {
if err != nil {
return make([]byte, 0), fmt.Errorf("Invalid response from server")
}
}
}
header := strings.SplitN(resp[0], " ", 2)
if len([]rune(header[0])) != 2 {
header = strings.SplitN(resp[0], "\t", 2)
if len([]rune(header[0])) != 2 {
return make([]byte,0), fmt.Errorf("Invalid response format from server")
}
}
return make([]byte, 0), fmt.Errorf("Invalid response format from server")
}
}
// Get status code single digit form
status, err := strconv.Atoi(string(header[0][0]))
@ -271,24 +266,24 @@ func Visit(host, port, resource string, td *TofuDigest) (Capsule, error) {
rawResp, err := Retrieve(host, port, resource, td)
if err != nil {
return capsule, err
}
}
resp := strings.SplitN(rawResp, "\r\n", 2)
if len(resp) != 2 {
if err != nil {
return capsule, fmt.Errorf("Invalid response from server")
}
}
}
header := strings.SplitN(resp[0], " ", 2)
if len([]rune(header[0])) != 2 {
header = strings.SplitN(resp[0], "\t", 2)
if len([]rune(header[0])) != 2 {
return capsule, fmt.Errorf("Invalid response format from server")
}
}
}
}
body := resp[1]
// Get status code single digit form
capsule.Status, err = strconv.Atoi(string(header[0][0]))
if err != nil {
@ -351,7 +346,7 @@ func parseGemini(b, rootUrl, currentUrl string) (string, []string) {
subLn := strings.Trim(ln[2:], "\r\n\t \a")
splitPoint := strings.IndexAny(subLn, " \t")
if splitPoint < 0 || len([]rune(subLn)) - 1 <= splitPoint {
if splitPoint < 0 || len([]rune(subLn))-1 <= splitPoint {
link = subLn
decorator = subLn
} else {
@ -359,7 +354,7 @@ func parseGemini(b, rootUrl, currentUrl string) (string, []string) {
decorator = strings.Trim(subLn[splitPoint:], "\t\n\r \a")
}
if strings.Index(link, "://") < 0 {
if strings.Index(link, "://") < 0 {
link = handleRelativeUrl(link, rootUrl, currentUrl)
}
@ -385,7 +380,7 @@ func handleRelativeUrl(u, root, current string) string {
return fmt.Sprintf("%s/%s", root, u)
}
current = current[:ind + 1]
current = current[:ind+1]
return fmt.Sprintf("%s%s", current, u)
}
@ -398,7 +393,6 @@ func hashCert(cert []byte) string {
return fmt.Sprintf("%s", string(bytes.Join(hex, []byte(":"))))
}
func MakeCapsule() Capsule {
return Capsule{"", "", 0, "", make([]string, 0, 5)}
}

View File

@ -83,8 +83,8 @@ func Visit(gophertype, host, port, resource string) (string, []string, error) {
resp, err := Retrieve(host, port, resource)
if err != nil {
return "", []string{}, err
}
}
text := string(resp)
links := []string{}
@ -92,7 +92,6 @@ func Visit(gophertype, host, port, resource string) (string, []string, error) {
return text, []string{}, nil
}
if gophertype == "1" {
text, links = parseMap(text)
}
@ -116,7 +115,7 @@ func isWebLink(resource string) (string, bool) {
return "", false
}
func parseMap(text string) (string, []string) {
func parseMap(text string) (string, []string) {
splitContent := strings.Split(text, "\n")
links := make([]string, 0, 10)
@ -135,7 +134,7 @@ func parseMap(text string) (string, []string) {
} else {
title = ""
}
if len(line) > 1 && len(line[0]) > 0 && string(line[0][0]) == "i" {
splitContent[i] = " " + string(title)
} else if len(line) >= 4 {

View File

@ -10,10 +10,9 @@ import (
type Headbar struct {
title string
url string
url string
}
//------------------------------------------------\\
// + + + R E C E I V E R S + + + \\
//--------------------------------------------------\\
@ -27,7 +26,6 @@ func (h *Headbar) Render(width int, theme string) string {
}
}
//------------------------------------------------\\
// + + + F U N C T I O N S + + + \\
//--------------------------------------------------\\
@ -35,4 +33,3 @@ func (h *Headbar) Render(width int, theme string) string {
func MakeHeadbar(title string) Headbar {
return Headbar{title, ""}
}

View File

@ -44,7 +44,7 @@ func IsTextFile(url string) bool {
}
// If we made it here, there is no content-type header.
// So in the event of the unknown, lets render to the
// So in the event of the unknown, lets render to the
// screen. This will allow redirects to get rendered
// as well.
return true
@ -89,4 +89,3 @@ func Fetch(url string) ([]byte, error) {
return bodyBytes, nil
}

View File

@ -18,7 +18,6 @@ func Open(address string) (string, error) {
}
defer file.Close()
if pathIsDir(address) {
fileList, err := file.Readdirnames(0)
if err != nil {
@ -40,21 +39,20 @@ func Open(address string) (string, error) {
return string(bytes), nil
}
func pathExists(p string) bool {
exists := true
if _, err := os.Stat(p); os.IsNotExist(err) {
exists = false
}
if _, err := os.Stat(p); os.IsNotExist(err) {
exists = false
}
return exists
return exists
}
func pathIsDir(p string) bool {
info, err := os.Stat(p)
info, err := os.Stat(p)
if err != nil {
return false
}
}
return info.IsDir()
}

13
page.go
View File

@ -10,9 +10,9 @@ import (
type Page struct {
WrappedContent []string
RawContent string
Links []string
Location Url
RawContent string
Links []string
Location Url
ScrollPosition int
}
@ -22,7 +22,7 @@ type Page struct {
func (p *Page) ScrollPositionRange(termHeight int) (int, int) {
termHeight -= 3
if len(p.WrappedContent) - p.ScrollPosition < termHeight {
if len(p.WrappedContent)-p.ScrollPosition < termHeight {
p.ScrollPosition = len(p.WrappedContent) - termHeight
}
if p.ScrollPosition < 0 {
@ -51,7 +51,7 @@ func (p *Page) WrapContent(width int) {
content.WriteRune(ch)
counter = 0
} else if ch == '\t' {
if counter + 4 < width {
if counter+4 < width {
content.WriteString(" ")
counter += 4
} else {
@ -69,7 +69,7 @@ func (p *Page) WrapContent(width int) {
content.WriteRune('\n')
counter = 0
if p.Location.Mime == "1" {
spacer := " "
spacer := " "
content.WriteString(spacer)
counter += len(spacer)
}
@ -89,4 +89,3 @@ func MakePage(url Url, content string, links []string) Page {
p := Page{make([]string, 0), content, links, url, 0}
return p
}

View File

@ -10,11 +10,10 @@ import (
type Pages struct {
Position int
Length int
History [20]Page
Length int
History [20]Page
}
//------------------------------------------------\\
// + + + R E C E I V E R S + + + \\
//--------------------------------------------------\\
@ -23,7 +22,7 @@ func (p *Pages) NavigateHistory(qty int) error {
newPosition := p.Position + qty
if newPosition < 0 {
return fmt.Errorf("You are already at the beginning of history")
} else if newPosition > p.Length - 1 {
} else if newPosition > p.Length-1 {
return fmt.Errorf("Your way is blocked by void, there is nothing forward")
}
@ -32,11 +31,11 @@ func (p *Pages) NavigateHistory(qty int) error {
}
func (p *Pages) Add(pg Page) {
if p.Position == p.Length - 1 && p.Length < len(p.History) {
if p.Position == p.Length-1 && p.Length < len(p.History) {
p.History[p.Length] = pg
p.Length++
p.Position++
} else if p.Position == p.Length - 1 && p.Length == 20 {
} else if p.Position == p.Length-1 && p.Length == 20 {
for x := 1; x < len(p.History); x++ {
p.History[x-1] = p.History[x]
}
@ -62,12 +61,12 @@ func (p *Pages) Render(termHeight, termWidth int) []string {
} else if prev < now {
diff := now - prev
pos = pos + diff
if pos > now - termHeight {
if pos > now-termHeight {
pos = now - termHeight
}
}
if pos < 0 || now < termHeight - 3 {
if pos < 0 || now < termHeight-3 {
pos = 0
}
@ -83,5 +82,3 @@ func (p *Pages) Render(termHeight, termWidth int) []string {
func MakePages() Pages {
return Pages{-1, 0, [20]Page{}}
}

18
url.go
View File

@ -13,12 +13,12 @@ import (
//--------------------------------------------------\\
type Url struct {
Scheme string
Host string
Port string
Resource string
Full string
Mime string
Scheme string
Host string
Port string
Resource string
Full string
Mime string
DownloadOnly bool
}
@ -28,12 +28,10 @@ type Url struct {
// There are currently no receivers for the Url struct
//------------------------------------------------\\
// + + + F U N C T I O N S + + + \\
//--------------------------------------------------\\
// MakeUrl is a Url constructor that takes in a string
// representation of a url and returns a Url struct and
// an error (or nil).
@ -152,7 +150,7 @@ func parseFinger(u string) (Url, error) {
if len(userPlusAddress) > 1 {
out.Resource = userPlusAddress[0]
u = userPlusAddress[1]
}
}
hostPort := strings.Split(u, ":")
if len(hostPort) < 2 {
out.Port = "79"
@ -167,5 +165,3 @@ func parseFinger(u string) (Url, error) {
out.Full = fmt.Sprintf("%s://%s%s:%s", out.Scheme, resource, out.Host, out.Port)
return out, nil
}