mirror of
https://github.com/Theodor-Springmann-Stiftung/kgpz_web.git
synced 2025-10-29 09:05:30 +00:00
More CSS & sorting of T array by keys
This commit is contained in:
@@ -9,15 +9,25 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
var embed_cache sync.Map
|
type Embedder struct {
|
||||||
|
embed_cache sync.Map
|
||||||
|
fs fs.FS
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewEmbedder(fs fs.FS) *Embedder {
|
||||||
|
return &Embedder{
|
||||||
|
fs: fs,
|
||||||
|
embed_cache: sync.Map{},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// INFO: We initialize the cache in both functions, which is only valid if both of these get
|
// INFO: We initialize the cache in both functions, which is only valid if both of these get
|
||||||
// called in the same context, eg. when creating a template engine.
|
// called in the same context, eg. when creating a template engine.
|
||||||
func EmbedSafe(fs fs.FS) func(string) template.HTML {
|
func (e *Embedder) EmbedSafe() func(string) template.HTML {
|
||||||
return func(path string) template.HTML {
|
return func(path string) template.HTML {
|
||||||
path = strings.TrimSpace(path)
|
path = strings.TrimSpace(path)
|
||||||
path = filepath.Clean(path)
|
path = filepath.Clean(path)
|
||||||
val, err := getFileData(fs, path)
|
val, err := e.getFileData(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return template.HTML("")
|
return template.HTML("")
|
||||||
}
|
}
|
||||||
@@ -26,11 +36,11 @@ func EmbedSafe(fs fs.FS) func(string) template.HTML {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Embed(fs fs.FS) func(string) string {
|
func (e *Embedder) Embed() func(string) string {
|
||||||
return func(path string) string {
|
return func(path string) string {
|
||||||
path = strings.TrimSpace(path)
|
path = strings.TrimSpace(path)
|
||||||
path = filepath.Clean(path)
|
path = filepath.Clean(path)
|
||||||
val, err := getFileData(fs, path)
|
val, err := e.getFileData(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
@@ -39,16 +49,12 @@ func Embed(fs fs.FS) func(string) string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ClearEmbedCache() {
|
func (e *Embedder) getFileData(path string) ([]byte, error) {
|
||||||
embed_cache.Clear()
|
if val, ok := e.embed_cache.Load(path); ok {
|
||||||
}
|
|
||||||
|
|
||||||
func getFileData(fs fs.FS, path string) ([]byte, error) {
|
|
||||||
if val, ok := embed_cache.Load(path); ok {
|
|
||||||
return val.([]byte), nil
|
return val.([]byte), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err := fs.Open(path)
|
f, err := e.fs.Open(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -59,12 +65,11 @@ func getFileData(fs fs.FS, path string) ([]byte, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
embed_cache.Store(path, data)
|
e.embed_cache.Store(path, data)
|
||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func EmbedXSLT(fs fs.FS) func(string) template.HTML {
|
func (e *Embedder) EmbedXSLT() func(string) template.HTML {
|
||||||
embed_cache.Clear()
|
|
||||||
return func(path string) template.HTML {
|
return func(path string) template.HTML {
|
||||||
path = strings.TrimSpace(path)
|
path = strings.TrimSpace(path)
|
||||||
path = filepath.Clean(path)
|
path = filepath.Clean(path)
|
||||||
@@ -76,7 +81,7 @@ func EmbedXSLT(fs fs.FS) func(string) template.HTML {
|
|||||||
return template.HTML("[ERROR: " + "file is not an XSLT file" + "]")
|
return template.HTML("[ERROR: " + "file is not an XSLT file" + "]")
|
||||||
}
|
}
|
||||||
|
|
||||||
val, err := getFileData(fs, path)
|
val, err := e.getFileData(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return template.HTML("[ERROR: " + err.Error() + "]")
|
return template.HTML("[ERROR: " + err.Error() + "]")
|
||||||
}
|
}
|
||||||
|
|||||||
76
providers/xmlprovider/xmlitemarray.go
Normal file
76
providers/xmlprovider/xmlitemarray.go
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
package xmlprovider
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Sort[T XMLItem](i, j T) int {
|
||||||
|
|
||||||
|
keys_a := i.Keys()
|
||||||
|
keys_b := j.Keys()
|
||||||
|
|
||||||
|
if len(keys_a) == 0 && len(keys_b) == 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(keys_a) == 0 && len(keys_b) > 0 {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(keys_a) > 0 && len(keys_b) == 0 {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
sort_a := strings.Split(keys_a[0], "-")
|
||||||
|
sort_b := strings.Split(keys_b[0], "-")
|
||||||
|
|
||||||
|
for i, item := range sort_a {
|
||||||
|
if i >= len(sort_b) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// INFO: this is a bit lazy since
|
||||||
|
// - we are comparing bit values not unicode code points
|
||||||
|
// - the comparison is case sensitive
|
||||||
|
int_a, err := strconv.Atoi(item)
|
||||||
|
if err != nil {
|
||||||
|
if item < sort_b[i] {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
if item > sort_b[i] {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
int_b, err := strconv.Atoi(sort_b[i])
|
||||||
|
if err != nil {
|
||||||
|
if item < sort_b[i] {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
if item > sort_b[i] {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if int_a < int_b {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
if int_a > int_b {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(sort_b) > len(sort_a) {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
@@ -125,6 +125,8 @@ func (p *XMLProvider[T]) Cleanup(latest ParseMeta) {
|
|||||||
p.Array = append(p.Array, *item)
|
p.Array = append(p.Array, *item)
|
||||||
p.addResolvable(*item)
|
p.addResolvable(*item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
slices.SortFunc(p.Array, Sort)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *XMLProvider[T]) addResolvable(item T) {
|
func (p *XMLProvider[T]) addResolvable(item T) {
|
||||||
|
|||||||
@@ -57,12 +57,10 @@ func (e *Engine) funcs() error {
|
|||||||
e.AddFunc("Safe", functions.Safe)
|
e.AddFunc("Safe", functions.Safe)
|
||||||
|
|
||||||
// Embedding of file contents
|
// Embedding of file contents
|
||||||
functions.ClearEmbedCache()
|
embedder := functions.NewEmbedder(views.StaticFS)
|
||||||
e.AddFunc("EmbedSafe", functions.EmbedSafe(views.StaticFS))
|
e.AddFunc("EmbedSafe", embedder.EmbedSafe())
|
||||||
e.AddFunc("Embed", functions.Embed(views.StaticFS))
|
e.AddFunc("Embed", embedder.Embed())
|
||||||
|
e.AddFunc("EmbedXSLT", embedder.EmbedXSLT())
|
||||||
// Embedding of XSLT files
|
|
||||||
e.AddFunc("EmbedXSLT", functions.EmbedXSLT(views.StaticFS))
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -16,18 +16,20 @@
|
|||||||
|
|
||||||
<div class="grid grid-cols-11 gap-x-2 gap-y-4 pt-8">
|
<div class="grid grid-cols-11 gap-x-2 gap-y-4 pt-8">
|
||||||
{{ range $index, $month := .model.Issues }}
|
{{ range $index, $month := .model.Issues }}
|
||||||
<div class="col-span-1 text-right py-1 px-2.5">
|
|
||||||
<!-- Month Header -->
|
<!-- Month Header -->
|
||||||
|
<div class="col-span-1 text-right py-1 px-2.5">
|
||||||
{{ $first := index $month 0 }}
|
{{ $first := index $month 0 }}
|
||||||
<h2 class="text-lg">{{ (MonthName $first.Datum.When.Month) }}</h2>
|
<h2 class="text-lg">{{ (MonthName $first.Datum.When.Month) }}</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Issues -->
|
<!-- Issues -->
|
||||||
<div class="col-span-10 grid grid-cols-subgrid">
|
<div class="col-span-10 grid grid-cols-subgrid">
|
||||||
{{ range $issue := $month }}
|
{{ range $issue := $month }}
|
||||||
<div class="col-span-1 bg-slate-100 px-2 py-1.5">
|
<div class="col-span-1 bg-slate-100 px-2 py-1.5">
|
||||||
{{ $date := $issue.Datum.When }}
|
{{ $date := $issue.Datum.When }}
|
||||||
<a class="!no-underline" href="/{{ $y }}/{{ $issue.Number.No }}">
|
<a class="!no-underline" href="/{{ $y }}/{{ $issue.Number.No }}">
|
||||||
<div>
|
<div class="">
|
||||||
{{ $issue.Number.No }}
|
{{ $issue.Number.No }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,19 @@
|
|||||||
<a href="{{ $url.Address }}" target="_blank">{{ $url.Chardata }}</a>
|
<a href="{{ $url.Address }}" target="_blank">{{ $url.Chardata }}</a>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $pieces := LookupPieces $w.Item }}
|
||||||
|
{{ if len $pieces }}
|
||||||
|
<div>
|
||||||
|
{{ range $_, $p := $pieces }}
|
||||||
|
{{- range $_, $i := $p.Item.IssueRefs -}}
|
||||||
|
<div>
|
||||||
|
<a href="/{{ $i.When }}/{{ $i.Nr }}">{{ $i.Nr }}/{{ $i.When }}</a>
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
{{ $model := .model }}
|
{{ $model := .model }}
|
||||||
|
|
||||||
|
|
||||||
<div>Inhalt</div>
|
|
||||||
<div>
|
<div>
|
||||||
{{ range $page := $model.Pieces.Pages }}
|
{{ range $page := $model.Pieces.Pages }}
|
||||||
<div>
|
<div class="pt-4">
|
||||||
<div>Seite {{ $page }}</div>
|
<div class="">Seite {{ $page }}</div>
|
||||||
|
<ol class="list-disc" >
|
||||||
{{ range $piece := (index $model.Pieces.Items $page) }}
|
{{ range $piece := (index $model.Pieces.Items $page) }}
|
||||||
|
<li class="ml-0" >
|
||||||
{{ template "_inhaltsverzeichnis_eintrag" $piece }}
|
{{ template "_inhaltsverzeichnis_eintrag" $piece }}
|
||||||
|
|
||||||
|
|
||||||
<!-- Links zu anderen Teilen: -->
|
<!-- Links zu anderen Teilen: -->
|
||||||
{{ if gt (len $piece.IssueRefs) 1 }}
|
{{ if gt (len $piece.IssueRefs) 1 }}
|
||||||
<div>
|
<div>
|
||||||
@@ -33,9 +32,11 @@
|
|||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Pages end -->
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,20 +1,50 @@
|
|||||||
{{ $piece := . }}
|
{{ $piece := . }}
|
||||||
Eintrag!
|
|
||||||
|
|
||||||
<!-- Autor(en) -->
|
<!-- Autor(en) -->
|
||||||
{{ $authorset := false }}
|
{{ if $piece.AgentRefs }}
|
||||||
<div class="authors">
|
<div class="authors">
|
||||||
{{ range $agentref := $piece.AgentRefs }}
|
{{ range $agentref := $piece.AgentRefs }}
|
||||||
{{ if (or (eq $agentref.Category "") (eq $agentref.Category "autor")) }}
|
{{ if (or (eq $agentref.Category "") (eq $agentref.Category "autor")) }}
|
||||||
{{ $agent := GetAgent $agentref.Ref }}
|
{{ $agent := GetAgent $agentref.Ref }}
|
||||||
<!-- NOT IMPLEMENTED: Multiple agent names -->
|
|
||||||
{{- if gt (len $agent.Names) 0 -}}
|
{{- if gt (len $agent.Names) 0 -}}
|
||||||
<div class="author inline-block">{{- index $agent.Names 0 -}}</div>
|
<a href="/akteure/{{ $agentref.Ref }}" class="inline-block">
|
||||||
|
{{- index $agent.Names 0 -}}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Kategorien -->
|
||||||
|
<div class="">
|
||||||
|
<!-- Einzelkategorien -->
|
||||||
|
{{ if $piece.CategoryRefs }}
|
||||||
|
{{ range $catref := $piece.CategoryRefs }}
|
||||||
|
{{ $category := GetCategory $catref.Ref }}
|
||||||
|
{{- if gt (len $category.Names) 0 -}}
|
||||||
|
<div class="category inline-block">{{- index $category.Names 0 -}}</div>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Kategorie Werk -->
|
||||||
|
{{ if $piece.WorkRefs }}
|
||||||
|
{{ range $workref := $piece.WorkRefs }}
|
||||||
|
{{ $work := GetWork $workref.Ref }}
|
||||||
|
{{- if $work.PreferredTitle -}}
|
||||||
|
<div class="category inline-block">{{- index $work.PreferredTitle -}}</div>
|
||||||
|
{{- else if $work.Citation.Title -}}
|
||||||
|
<div class="category inline-block">{{- index $work.Citation.Title -}}</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Notizen -->
|
||||||
{{ range $annotation := $piece.AnnotationNote.Annotations }}
|
{{ range $annotation := $piece.AnnotationNote.Annotations }}
|
||||||
<div>
|
<div>
|
||||||
{{ $annotation.Inner.InnerXML }}
|
{{ $annotation.Inner.InnerXML }}
|
||||||
|
|||||||
@@ -67,16 +67,30 @@ func (p Piece) ReferencesIssue(y, no int) (*IssueRef, bool) {
|
|||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// INFO: we can't use a pointer reciever here, the interface won't allow it
|
||||||
func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
||||||
refs := make(xmlprovider.ResolvingMap[Piece])
|
refs := make(xmlprovider.ResolvingMap[Piece])
|
||||||
x := CategoryRef{}
|
x := CategoryRef{}
|
||||||
|
|
||||||
|
for _, ref := range p.CategoryRefs {
|
||||||
|
if ref.Category != "" {
|
||||||
|
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
|
Reference: ref.Category,
|
||||||
|
Cert: !ref.Unsicher,
|
||||||
|
Conjecture: false,
|
||||||
|
Comment: ref.Inner.InnerXML,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, ref := range p.IssueRefs {
|
for _, ref := range p.IssueRefs {
|
||||||
if ref.When.Year == 0 || ref.Nr == 0 {
|
if ref.When.Year == 0 || ref.Nr == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if ref.Category != "" {
|
if ref.Category != "" {
|
||||||
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
Reference: ref.Category,
|
Reference: ref.Category,
|
||||||
Cert: !ref.Unsicher,
|
Cert: !ref.Unsicher,
|
||||||
Conjecture: false,
|
Conjecture: false,
|
||||||
@@ -84,6 +98,7 @@ func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
refs[ref.Name()] = append(refs[ref.Name()], xmlprovider.Resolved[Piece]{
|
refs[ref.Name()] = append(refs[ref.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
Reference: strconv.Itoa(ref.When.Year) + "-" + strconv.Itoa(ref.Nr),
|
Reference: strconv.Itoa(ref.When.Year) + "-" + strconv.Itoa(ref.Nr),
|
||||||
Category: ref.Category,
|
Category: ref.Category,
|
||||||
Cert: !ref.Unsicher,
|
Cert: !ref.Unsicher,
|
||||||
@@ -96,6 +111,7 @@ func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
|||||||
for _, ref := range p.PlaceRefs {
|
for _, ref := range p.PlaceRefs {
|
||||||
if ref.Category != "" {
|
if ref.Category != "" {
|
||||||
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
Reference: ref.Category,
|
Reference: ref.Category,
|
||||||
Cert: !ref.Unsicher,
|
Cert: !ref.Unsicher,
|
||||||
Conjecture: false,
|
Conjecture: false,
|
||||||
@@ -103,6 +119,7 @@ func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
refs[ref.Name()] = append(refs[ref.Name()], xmlprovider.Resolved[Piece]{
|
refs[ref.Name()] = append(refs[ref.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
Reference: ref.Ref,
|
Reference: ref.Ref,
|
||||||
Category: ref.Category,
|
Category: ref.Category,
|
||||||
Cert: !ref.Unsicher,
|
Cert: !ref.Unsicher,
|
||||||
@@ -115,6 +132,7 @@ func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
|||||||
for _, ref := range p.AgentRefs {
|
for _, ref := range p.AgentRefs {
|
||||||
if ref.Category != "" {
|
if ref.Category != "" {
|
||||||
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
Reference: ref.Category,
|
Reference: ref.Category,
|
||||||
Cert: !ref.Unsicher,
|
Cert: !ref.Unsicher,
|
||||||
Conjecture: false,
|
Conjecture: false,
|
||||||
@@ -122,6 +140,7 @@ func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
refs[ref.Name()] = append(refs[ref.Name()], xmlprovider.Resolved[Piece]{
|
refs[ref.Name()] = append(refs[ref.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
Reference: ref.Ref,
|
Reference: ref.Ref,
|
||||||
Category: ref.Category,
|
Category: ref.Category,
|
||||||
Cert: !ref.Unsicher,
|
Cert: !ref.Unsicher,
|
||||||
@@ -134,6 +153,7 @@ func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
|||||||
for _, ref := range p.WorkRefs {
|
for _, ref := range p.WorkRefs {
|
||||||
if ref.Category != "" {
|
if ref.Category != "" {
|
||||||
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
Reference: ref.Category,
|
Reference: ref.Category,
|
||||||
Cert: !ref.Unsicher,
|
Cert: !ref.Unsicher,
|
||||||
Conjecture: false,
|
Conjecture: false,
|
||||||
@@ -141,6 +161,7 @@ func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
refs[ref.Name()] = append(refs[ref.Name()], xmlprovider.Resolved[Piece]{
|
refs[ref.Name()] = append(refs[ref.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
Reference: ref.Ref,
|
Reference: ref.Ref,
|
||||||
Category: ref.Category,
|
Category: ref.Category,
|
||||||
Cert: !ref.Unsicher,
|
Cert: !ref.Unsicher,
|
||||||
@@ -152,6 +173,7 @@ func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
|||||||
for _, ref := range p.PieceRefs {
|
for _, ref := range p.PieceRefs {
|
||||||
if ref.Category != "" {
|
if ref.Category != "" {
|
||||||
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
refs[x.Name()] = append(refs[x.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
Reference: ref.Category,
|
Reference: ref.Category,
|
||||||
Cert: !ref.Unsicher,
|
Cert: !ref.Unsicher,
|
||||||
Conjecture: false,
|
Conjecture: false,
|
||||||
@@ -160,6 +182,7 @@ func (p Piece) References() xmlprovider.ResolvingMap[Piece] {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
refs[ref.Name()] = append(refs[ref.Name()], xmlprovider.Resolved[Piece]{
|
refs[ref.Name()] = append(refs[ref.Name()], xmlprovider.Resolved[Piece]{
|
||||||
|
Item: &p,
|
||||||
Reference: ref.Ref,
|
Reference: ref.Ref,
|
||||||
Category: ref.Category,
|
Category: ref.Category,
|
||||||
Cert: !ref.Unsicher,
|
Cert: !ref.Unsicher,
|
||||||
|
|||||||
Reference in New Issue
Block a user