Ramblings
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
news=true
|
||||
quote=true
|
||||
ramblings=true
|
||||
# Section toggels
|
||||
news=true # enables the news section
|
||||
quote=true # enables the quotes section
|
||||
ramblings=false #enables the ramblings section
|
||||
|
||||
# set the path where wire looks for ramblings, this is mostly for server use.
|
||||
ramblings_path=${XDG_DOCUMENTS_DIR}/wire/
|
||||
|
||||
article_path="https://rss.nytimes.com/services/xml/rss/nyt/US.xml"
|
||||
|
||||
@@ -18,14 +18,15 @@ var wrapper string
|
||||
type Config struct {
|
||||
News bool `json:"news"`
|
||||
Quotes bool `json:"quote"`
|
||||
Ramblings bool `json:"ramblings"`
|
||||
Ramble bool `json:"ramblings"`
|
||||
Ramblings_Path string `json:"ramblings_path"`
|
||||
Articles_Path string `json:"article_path"`
|
||||
}
|
||||
|
||||
func NewConfig() (c Config) {
|
||||
c.News = true
|
||||
c.Quotes = true
|
||||
c.Ramblings = true
|
||||
c.Ramble = true
|
||||
ramblingsDir := os.Getenv("XDG_DOCUMENTS_DIR")
|
||||
if ramblingsDir == "" {
|
||||
ramblingsDir = filepath.Join(os.Getenv("HOME"), "Documents")
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/bin/sh
|
||||
. $1
|
||||
printf '{"news":%s,"quote":%s,"ramblings":%s,"ramblings_path":"%s"}\n' "$news" "$quote" "$ramblings" "$ramblings_path"
|
||||
printf '{"news":%s,"quote":%s,"ramblings":%s,"ramblings_path":"%s","article_path":"%s"}\n' "$news" "$quote" "$ramblings" "$ramblings_path" "$article_path"
|
||||
|
||||
74
internal/ramblings/ramblings.go
Normal file
74
internal/ramblings/ramblings.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package ramblings
|
||||
|
||||
import (
|
||||
"html/template"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/text/cases"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
type Ramblings []Rambles
|
||||
|
||||
type Rambles struct {
|
||||
Title string
|
||||
Link string
|
||||
Content template.HTML
|
||||
}
|
||||
|
||||
type RamblingsParser struct {
|
||||
path string
|
||||
}
|
||||
|
||||
func NewParser(path string) *RamblingsParser {
|
||||
rp := RamblingsParser{
|
||||
path: path,
|
||||
}
|
||||
return &rp
|
||||
}
|
||||
|
||||
func (rp *RamblingsParser) GetRamblings() (rs Ramblings) {
|
||||
entries, err := os.ReadDir(rp.path)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
for _, ent := range entries {
|
||||
if ent.IsDir() {
|
||||
continue
|
||||
}
|
||||
|
||||
title := ent.Name()
|
||||
title = strings.ReplaceAll(title, "_", " ")
|
||||
title = strings.ReplaceAll(title, "-", " ")
|
||||
ext := filepath.Ext(ent.Name())
|
||||
title = strings.TrimSuffix(title ,ext)
|
||||
|
||||
caser := cases.Title(language.AmericanEnglish)
|
||||
title = caser.String(title)
|
||||
|
||||
fp := filepath.Join(rp.path, ent.Name())
|
||||
contents, err := os.ReadFile(fp)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
rs = append(rs, Rambles{
|
||||
Title: title,
|
||||
Link: template.HTMLEscapeString(ent.Name()),
|
||||
Content: template.HTML(string(contents)),
|
||||
})
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func NewHandler(ramble Rambles) func(w http.ResponseWriter, r *http.Request) {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte(ramble.Content))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user