Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
perxis-go
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Package registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
perxis
perxis-go
Commits
9c938143
Commit
9c938143
authored
4 months ago
by
Semyon Krestyaninov
Browse files
Options
Downloads
Patches
Plain Diff
fix
parent
18fb53a8
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
template/builder.go
+24
-27
24 additions, 27 deletions
template/builder.go
template/system.go
+8
-8
8 additions, 8 deletions
template/system.go
with
32 additions
and
35 deletions
template/builder.go
+
24
−
27
View file @
9c938143
...
...
@@ -13,13 +13,12 @@ import (
"git.perx.ru/perxis/perxis-go/pkg/spaces"
)
type
Executor
[
T
any
]
interface
{
Parse
(
text
string
)
(
T
,
error
)
type
Template
interface
{
Execute
(
w
io
.
Writer
,
data
any
)
error
}
type
Builder
[
T
Executor
[
T
]]
struct
{
template
func
(
string
)
T
type
Builder
struct
{
parseFunc
func
(
text
string
)
(
Template
,
error
)
ctx
context
.
Context
cnt
*
content
.
Content
...
...
@@ -34,48 +33,48 @@ type Builder[T Executor[T]] struct {
collection
*
collections
.
Collection
}
func
NewBuilder
(
cnt
*
content
.
Content
,
space
,
env
,
col
string
)
Builder
[
*
templtext
.
Template
]
{
b
:=
Builder
[
*
templtext
.
Template
]
{
func
NewBuilder
(
cnt
*
content
.
Content
,
space
,
env
,
col
string
)
Builder
{
b
:=
Builder
{
ctx
:
context
.
Background
(),
cnt
:
cnt
,
SpaceID
:
space
,
EnvID
:
env
,
CollID
:
col
,
}
b
.
template
=
func
(
name
string
)
*
templtext
.
Template
{
return
templtext
.
New
(
name
)
.
Funcs
(
b
.
getFuncs
())
b
.
parseFunc
=
func
(
text
string
)
(
Template
,
error
)
{
return
templtext
.
New
(
"main_text"
)
.
Funcs
(
b
.
getFuncs
())
.
Parse
(
text
)
}
return
b
}
func
NewHTMLBuilder
(
cnt
*
content
.
Content
,
space
,
env
,
col
string
)
Builder
[
*
templhtml
.
Template
]
{
b
:=
Builder
[
*
templhtml
.
Template
]
{
func
NewHTMLBuilder
(
cnt
*
content
.
Content
,
space
,
env
,
col
string
)
Builder
{
b
:=
Builder
{
ctx
:
context
.
Background
(),
cnt
:
cnt
,
SpaceID
:
space
,
EnvID
:
env
,
CollID
:
col
,
}
b
.
template
=
func
(
name
string
)
*
templhtml
.
Template
{
return
templhtml
.
New
(
name
)
.
Funcs
(
b
.
getFuncs
())
b
.
parseFunc
=
func
(
text
string
)
(
Template
,
error
)
{
return
templhtml
.
New
(
"main_html"
)
.
Funcs
(
b
.
getFuncs
())
.
Parse
(
text
)
}
return
b
}
func
(
b
*
Builder
[
T
]
)
getFuncs
()
map
[
string
]
any
{
func
(
b
*
Builder
)
getFuncs
()
map
[
string
]
any
{
return
map
[
string
]
any
{
"lookup"
:
getLookup
(
b
),
"system"
:
getSystem
(
b
),
}
}
func
(
b
*
Builder
[
T
]
)
WithData
(
data
map
[
string
]
interface
{})
*
Builder
[
T
]
{
func
(
b
*
Builder
)
WithData
(
data
map
[
string
]
interface
{})
*
Builder
{
bld
:=
*
b
bld
.
data
=
data
return
&
bld
}
func
(
b
*
Builder
[
T
]
)
WithKV
(
kv
...
any
)
*
Builder
[
T
]
{
func
(
b
*
Builder
)
WithKV
(
kv
...
any
)
*
Builder
{
bld
:=
*
b
if
bld
.
data
==
nil
{
bld
.
data
=
make
(
map
[
string
]
interface
{},
10
)
...
...
@@ -90,31 +89,30 @@ func (b *Builder[T]) WithKV(kv ...any) *Builder[T] {
return
&
bld
}
func
(
b
*
Builder
[
T
]
)
GetData
()
map
[
string
]
interface
{}
{
func
(
b
*
Builder
)
GetData
()
map
[
string
]
interface
{}
{
return
b
.
data
}
func
(
b
*
Builder
[
T
]
)
WithSpace
(
space
,
env
string
)
*
Builder
[
T
]
{
func
(
b
*
Builder
)
WithSpace
(
space
,
env
string
)
*
Builder
{
bld
:=
*
b
bld
.
SpaceID
=
space
bld
.
EnvID
=
env
return
&
bld
}
func
(
b
*
Builder
[
T
]
)
WithContext
(
ctx
context
.
Context
)
*
Builder
[
T
]
{
func
(
b
*
Builder
)
WithContext
(
ctx
context
.
Context
)
*
Builder
{
bld
:=
*
b
bld
.
ctx
=
ctx
return
&
bld
}
func
(
b
*
Builder
[
T
]
)
Context
()
context
.
Context
{
func
(
b
*
Builder
)
Context
()
context
.
Context
{
return
b
.
ctx
}
func
(
b
*
Builder
[
T
])
Execute
(
str
string
,
data
...
any
)
(
string
,
error
)
{
t
:=
b
.
template
(
"main"
)
func
(
b
*
Builder
)
Execute
(
str
string
,
data
...
any
)
(
string
,
error
)
{
buf
:=
new
(
bytes
.
Buffer
)
t
,
err
:=
t
.
P
arse
(
str
)
t
,
err
:=
b
.
p
arse
Func
(
str
)
if
err
!=
nil
{
return
""
,
err
}
...
...
@@ -124,15 +122,14 @@ func (b *Builder[T]) Execute(str string, data ...any) (string, error) {
return
buf
.
String
(),
nil
}
func
(
b
*
Builder
[
T
])
ExecuteList
(
str
[]
string
,
data
...
any
)
([]
string
,
error
)
{
t
:=
b
.
template
(
"main"
)
func
(
b
*
Builder
)
ExecuteList
(
str
[]
string
,
data
...
any
)
([]
string
,
error
)
{
result
:=
make
([]
string
,
len
(
str
))
buffer
:=
new
(
bytes
.
Buffer
)
for
i
,
tmpl
:=
range
str
{
if
tmpl
==
""
{
continue
}
t
,
err
:=
t
.
P
arse
(
tmpl
)
t
,
err
:=
b
.
p
arse
Func
(
tmpl
)
if
err
!=
nil
{
return
[]
string
{},
err
}
...
...
@@ -145,7 +142,7 @@ func (b *Builder[T]) ExecuteList(str []string, data ...any) ([]string, error) {
return
result
,
nil
}
func
(
b
*
Builder
[
T
]
)
ExecuteMap
(
str
map
[
string
]
interface
{},
data
...
any
)
(
map
[
string
]
interface
{},
error
)
{
func
(
b
*
Builder
)
ExecuteMap
(
str
map
[
string
]
interface
{},
data
...
any
)
(
map
[
string
]
interface
{},
error
)
{
result
:=
make
(
map
[
string
]
interface
{},
len
(
str
))
for
k
,
v
:=
range
str
{
switch
t
:=
v
.
(
type
)
{
...
...
@@ -173,7 +170,7 @@ func (b *Builder[T]) ExecuteMap(str map[string]interface{}, data ...any) (map[st
return
result
,
nil
}
func
(
b
*
Builder
[
T
]
)
getData
(
data
...
any
)
any
{
func
(
b
*
Builder
)
getData
(
data
...
any
)
any
{
if
len
(
data
)
==
0
{
return
b
.
data
}
...
...
This diff is collapsed.
Click to expand it.
template/system.go
+
8
−
8
View file @
9c938143
...
...
@@ -6,23 +6,23 @@ import (
"git.perx.ru/perxis/perxis-go/pkg/spaces"
)
type
System
[
T
Executor
[
T
]]
struct
{
builder
*
Builder
[
T
]
type
System
struct
{
builder
*
Builder
}
func
(
s
*
System
[
T
]
)
SpaceID
()
string
{
func
(
s
*
System
)
SpaceID
()
string
{
return
s
.
builder
.
SpaceID
}
func
(
s
*
System
[
T
]
)
EnvID
()
string
{
func
(
s
*
System
)
EnvID
()
string
{
return
s
.
builder
.
EnvID
}
func
(
s
*
System
[
T
]
)
CollectionID
()
string
{
func
(
s
*
System
)
CollectionID
()
string
{
return
s
.
builder
.
CollID
}
func
(
s
*
System
[
T
]
)
Space
()
(
*
spaces
.
Space
,
error
)
{
func
(
s
*
System
)
Space
()
(
*
spaces
.
Space
,
error
)
{
if
s
.
builder
.
space
!=
nil
{
return
s
.
builder
.
space
,
nil
}
...
...
@@ -32,7 +32,7 @@ func (s *System[T]) Space() (*spaces.Space, error) {
return
s
.
builder
.
space
,
err
}
func
(
s
*
System
[
T
]
)
Environment
()
(
*
environments
.
Environment
,
error
)
{
func
(
s
*
System
)
Environment
()
(
*
environments
.
Environment
,
error
)
{
if
s
.
builder
.
environment
!=
nil
{
return
s
.
builder
.
environment
,
nil
}
...
...
@@ -42,7 +42,7 @@ func (s *System[T]) Environment() (*environments.Environment, error) {
return
s
.
builder
.
environment
,
err
}
func
(
s
*
System
[
T
]
)
Collection
()
(
*
collections
.
Collection
,
error
)
{
func
(
s
*
System
)
Collection
()
(
*
collections
.
Collection
,
error
)
{
if
s
.
builder
.
collection
!=
nil
{
return
s
.
builder
.
collection
,
nil
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment