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
1 month ago
by
Semyon Krestyaninov
Browse files
Options
Downloads
Patches
Plain Diff
fix
parent
18fb53a8
Branches
Branches containing commit
Tags
Tags containing commit
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 (
...
@@ -13,13 +13,12 @@ import (
"git.perx.ru/perxis/perxis-go/pkg/spaces"
"git.perx.ru/perxis/perxis-go/pkg/spaces"
)
)
type
Executor
[
T
any
]
interface
{
type
Template
interface
{
Parse
(
text
string
)
(
T
,
error
)
Execute
(
w
io
.
Writer
,
data
any
)
error
Execute
(
w
io
.
Writer
,
data
any
)
error
}
}
type
Builder
[
T
Executor
[
T
]]
struct
{
type
Builder
struct
{
template
func
(
string
)
T
parseFunc
func
(
text
string
)
(
Template
,
error
)
ctx
context
.
Context
ctx
context
.
Context
cnt
*
content
.
Content
cnt
*
content
.
Content
...
@@ -34,48 +33,48 @@ type Builder[T Executor[T]] struct {
...
@@ -34,48 +33,48 @@ type Builder[T Executor[T]] struct {
collection
*
collections
.
Collection
collection
*
collections
.
Collection
}
}
func
NewBuilder
(
cnt
*
content
.
Content
,
space
,
env
,
col
string
)
Builder
[
*
templtext
.
Template
]
{
func
NewBuilder
(
cnt
*
content
.
Content
,
space
,
env
,
col
string
)
Builder
{
b
:=
Builder
[
*
templtext
.
Template
]
{
b
:=
Builder
{
ctx
:
context
.
Background
(),
ctx
:
context
.
Background
(),
cnt
:
cnt
,
cnt
:
cnt
,
SpaceID
:
space
,
SpaceID
:
space
,
EnvID
:
env
,
EnvID
:
env
,
CollID
:
col
,
CollID
:
col
,
}
}
b
.
template
=
func
(
name
string
)
*
templtext
.
Template
{
b
.
parseFunc
=
func
(
text
string
)
(
Template
,
error
)
{
return
templtext
.
New
(
name
)
.
Funcs
(
b
.
getFuncs
())
return
templtext
.
New
(
"main_text"
)
.
Funcs
(
b
.
getFuncs
())
.
Parse
(
text
)
}
}
return
b
return
b
}
}
func
NewHTMLBuilder
(
cnt
*
content
.
Content
,
space
,
env
,
col
string
)
Builder
[
*
templhtml
.
Template
]
{
func
NewHTMLBuilder
(
cnt
*
content
.
Content
,
space
,
env
,
col
string
)
Builder
{
b
:=
Builder
[
*
templhtml
.
Template
]
{
b
:=
Builder
{
ctx
:
context
.
Background
(),
ctx
:
context
.
Background
(),
cnt
:
cnt
,
cnt
:
cnt
,
SpaceID
:
space
,
SpaceID
:
space
,
EnvID
:
env
,
EnvID
:
env
,
CollID
:
col
,
CollID
:
col
,
}
}
b
.
template
=
func
(
name
string
)
*
templhtml
.
Template
{
b
.
parseFunc
=
func
(
text
string
)
(
Template
,
error
)
{
return
templhtml
.
New
(
name
)
.
Funcs
(
b
.
getFuncs
())
return
templhtml
.
New
(
"main_html"
)
.
Funcs
(
b
.
getFuncs
())
.
Parse
(
text
)
}
}
return
b
return
b
}
}
func
(
b
*
Builder
[
T
]
)
getFuncs
()
map
[
string
]
any
{
func
(
b
*
Builder
)
getFuncs
()
map
[
string
]
any
{
return
map
[
string
]
any
{
return
map
[
string
]
any
{
"lookup"
:
getLookup
(
b
),
"lookup"
:
getLookup
(
b
),
"system"
:
getSystem
(
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
:=
*
b
bld
.
data
=
data
bld
.
data
=
data
return
&
bld
return
&
bld
}
}
func
(
b
*
Builder
[
T
]
)
WithKV
(
kv
...
any
)
*
Builder
[
T
]
{
func
(
b
*
Builder
)
WithKV
(
kv
...
any
)
*
Builder
{
bld
:=
*
b
bld
:=
*
b
if
bld
.
data
==
nil
{
if
bld
.
data
==
nil
{
bld
.
data
=
make
(
map
[
string
]
interface
{},
10
)
bld
.
data
=
make
(
map
[
string
]
interface
{},
10
)
...
@@ -90,31 +89,30 @@ func (b *Builder[T]) WithKV(kv ...any) *Builder[T] {
...
@@ -90,31 +89,30 @@ func (b *Builder[T]) WithKV(kv ...any) *Builder[T] {
return
&
bld
return
&
bld
}
}
func
(
b
*
Builder
[
T
]
)
GetData
()
map
[
string
]
interface
{}
{
func
(
b
*
Builder
)
GetData
()
map
[
string
]
interface
{}
{
return
b
.
data
return
b
.
data
}
}
func
(
b
*
Builder
[
T
]
)
WithSpace
(
space
,
env
string
)
*
Builder
[
T
]
{
func
(
b
*
Builder
)
WithSpace
(
space
,
env
string
)
*
Builder
{
bld
:=
*
b
bld
:=
*
b
bld
.
SpaceID
=
space
bld
.
SpaceID
=
space
bld
.
EnvID
=
env
bld
.
EnvID
=
env
return
&
bld
return
&
bld
}
}
func
(
b
*
Builder
[
T
]
)
WithContext
(
ctx
context
.
Context
)
*
Builder
[
T
]
{
func
(
b
*
Builder
)
WithContext
(
ctx
context
.
Context
)
*
Builder
{
bld
:=
*
b
bld
:=
*
b
bld
.
ctx
=
ctx
bld
.
ctx
=
ctx
return
&
bld
return
&
bld
}
}
func
(
b
*
Builder
[
T
]
)
Context
()
context
.
Context
{
func
(
b
*
Builder
)
Context
()
context
.
Context
{
return
b
.
ctx
return
b
.
ctx
}
}
func
(
b
*
Builder
[
T
])
Execute
(
str
string
,
data
...
any
)
(
string
,
error
)
{
func
(
b
*
Builder
)
Execute
(
str
string
,
data
...
any
)
(
string
,
error
)
{
t
:=
b
.
template
(
"main"
)
buf
:=
new
(
bytes
.
Buffer
)
buf
:=
new
(
bytes
.
Buffer
)
t
,
err
:=
t
.
P
arse
(
str
)
t
,
err
:=
b
.
p
arse
Func
(
str
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
...
@@ -124,15 +122,14 @@ func (b *Builder[T]) Execute(str string, data ...any) (string, error) {
...
@@ -124,15 +122,14 @@ func (b *Builder[T]) Execute(str string, data ...any) (string, error) {
return
buf
.
String
(),
nil
return
buf
.
String
(),
nil
}
}
func
(
b
*
Builder
[
T
])
ExecuteList
(
str
[]
string
,
data
...
any
)
([]
string
,
error
)
{
func
(
b
*
Builder
)
ExecuteList
(
str
[]
string
,
data
...
any
)
([]
string
,
error
)
{
t
:=
b
.
template
(
"main"
)
result
:=
make
([]
string
,
len
(
str
))
result
:=
make
([]
string
,
len
(
str
))
buffer
:=
new
(
bytes
.
Buffer
)
buffer
:=
new
(
bytes
.
Buffer
)
for
i
,
tmpl
:=
range
str
{
for
i
,
tmpl
:=
range
str
{
if
tmpl
==
""
{
if
tmpl
==
""
{
continue
continue
}
}
t
,
err
:=
t
.
P
arse
(
tmpl
)
t
,
err
:=
b
.
p
arse
Func
(
tmpl
)
if
err
!=
nil
{
if
err
!=
nil
{
return
[]
string
{},
err
return
[]
string
{},
err
}
}
...
@@ -145,7 +142,7 @@ func (b *Builder[T]) ExecuteList(str []string, data ...any) ([]string, error) {
...
@@ -145,7 +142,7 @@ func (b *Builder[T]) ExecuteList(str []string, data ...any) ([]string, error) {
return
result
,
nil
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
))
result
:=
make
(
map
[
string
]
interface
{},
len
(
str
))
for
k
,
v
:=
range
str
{
for
k
,
v
:=
range
str
{
switch
t
:=
v
.
(
type
)
{
switch
t
:=
v
.
(
type
)
{
...
@@ -173,7 +170,7 @@ func (b *Builder[T]) ExecuteMap(str map[string]interface{}, data ...any) (map[st
...
@@ -173,7 +170,7 @@ func (b *Builder[T]) ExecuteMap(str map[string]interface{}, data ...any) (map[st
return
result
,
nil
return
result
,
nil
}
}
func
(
b
*
Builder
[
T
]
)
getData
(
data
...
any
)
any
{
func
(
b
*
Builder
)
getData
(
data
...
any
)
any
{
if
len
(
data
)
==
0
{
if
len
(
data
)
==
0
{
return
b
.
data
return
b
.
data
}
}
...
...
This diff is collapsed.
Click to expand it.
template/system.go
+
8
−
8
View file @
9c938143
...
@@ -6,23 +6,23 @@ import (
...
@@ -6,23 +6,23 @@ import (
"git.perx.ru/perxis/perxis-go/pkg/spaces"
"git.perx.ru/perxis/perxis-go/pkg/spaces"
)
)
type
System
[
T
Executor
[
T
]]
struct
{
type
System
struct
{
builder
*
Builder
[
T
]
builder
*
Builder
}
}
func
(
s
*
System
[
T
]
)
SpaceID
()
string
{
func
(
s
*
System
)
SpaceID
()
string
{
return
s
.
builder
.
SpaceID
return
s
.
builder
.
SpaceID
}
}
func
(
s
*
System
[
T
]
)
EnvID
()
string
{
func
(
s
*
System
)
EnvID
()
string
{
return
s
.
builder
.
EnvID
return
s
.
builder
.
EnvID
}
}
func
(
s
*
System
[
T
]
)
CollectionID
()
string
{
func
(
s
*
System
)
CollectionID
()
string
{
return
s
.
builder
.
CollID
return
s
.
builder
.
CollID
}
}
func
(
s
*
System
[
T
]
)
Space
()
(
*
spaces
.
Space
,
error
)
{
func
(
s
*
System
)
Space
()
(
*
spaces
.
Space
,
error
)
{
if
s
.
builder
.
space
!=
nil
{
if
s
.
builder
.
space
!=
nil
{
return
s
.
builder
.
space
,
nil
return
s
.
builder
.
space
,
nil
}
}
...
@@ -32,7 +32,7 @@ func (s *System[T]) Space() (*spaces.Space, error) {
...
@@ -32,7 +32,7 @@ func (s *System[T]) Space() (*spaces.Space, error) {
return
s
.
builder
.
space
,
err
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
{
if
s
.
builder
.
environment
!=
nil
{
return
s
.
builder
.
environment
,
nil
return
s
.
builder
.
environment
,
nil
}
}
...
@@ -42,7 +42,7 @@ func (s *System[T]) Environment() (*environments.Environment, error) {
...
@@ -42,7 +42,7 @@ func (s *System[T]) Environment() (*environments.Environment, error) {
return
s
.
builder
.
environment
,
err
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
{
if
s
.
builder
.
collection
!=
nil
{
return
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