-
Notifications
You must be signed in to change notification settings - Fork 0
/
pagetng.go
84 lines (68 loc) · 1.41 KB
/
pagetng.go
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
package main
import (
"bufio"
"flag"
"fmt"
"io"
"os"
"github.com/iand/gordf"
)
var (
o = flag.String("o", "html", "output format, one of md or html")
meta = flag.String("m", "", "filename of additonal front material to include verbatim")
)
func main() {
flag.Parse()
if len(flag.Args()) < 2 {
fmt.Fprintln(os.Stderr, "Usage: pagetng <file> <uri>")
os.Exit(1)
return
}
filename := flag.Arg(0)
uri := flag.Arg(1)
var input io.Reader
if filename == "-" {
input = os.Stdin
} else {
ntfile, err := os.Open(filename)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
os.Exit(1)
}
defer ntfile.Close()
input = ntfile
}
g := &Graph{}
err := g.LoadQuads(input)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
os.Exit(1)
}
spl := SimplePropertyLabeller{}
spl.Process(g)
sin := SimpleInferencer{}
sin.Process(g)
c := &Context{
Term: rdf.IRI(uri),
Graph: g,
Done: map[rdf.Term]bool{},
}
w := bufio.NewWriter(os.Stdout)
if *o == "md" {
w.WriteString("title: " + c.Label(true, true) + "\n")
w.WriteString("uri: " + uri + "\n")
if *meta != "" {
frontmaterial, err := os.ReadFile(*meta)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
os.Exit(1)
}
if len(frontmaterial) != 0 {
w.WriteString(string(frontmaterial))
}
}
w.WriteString("----\n")
}
render(w, c, false, false, 1)
w.Flush()
}