mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
examples: add a template example, update the regex examples (#8829)
This commit is contained in:

committed by
GitHub

parent
6e262b5d84
commit
3f3bec45fa
197
examples/templates/data.json
Normal file
197
examples/templates/data.json
Normal file
@ -0,0 +1,197 @@
|
||||
[
|
||||
{
|
||||
"name": "www_threefold_io",
|
||||
"url": "https://github.com/threefoldfoundation/www_threefold_io",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 2,
|
||||
"alias": "tf",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/www_threefold_io",
|
||||
"domains": [
|
||||
"www.threefold.io",
|
||||
"www.threefold.me"
|
||||
],
|
||||
"descr": "is our entry point for everyone, redirect to the detailed websites underneith."
|
||||
},
|
||||
{
|
||||
"name": "www_threefold_cloud",
|
||||
"url": "https://github.com/threefoldfoundation/www_threefold_cloud",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 2,
|
||||
"alias": "cloud",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/www_threefold_cloud",
|
||||
"domains": [
|
||||
"cloud.threefold.io",
|
||||
"cloud.threefold.me"
|
||||
],
|
||||
"descr": "for people looking to deploy solutions on top of a cloud, alternative to e.g. digital ocean"
|
||||
},
|
||||
{
|
||||
"name": "www_threefold_farming",
|
||||
"url": "https://github.com/threefoldfoundation/www_threefold_farming",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 2,
|
||||
"alias": "farming",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/www_threefold_farming",
|
||||
"domains": [
|
||||
"farming.threefold.io",
|
||||
"farming.threefold.me"
|
||||
],
|
||||
"descr": "crypto & minining enthusiasts, be the internet, know about farming & tokens."
|
||||
},
|
||||
{
|
||||
"name": "www_threefold_twin",
|
||||
"url": "https://github.com/threefoldfoundation/www_threefold_twin",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 2,
|
||||
"alias": "twin",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/www_threefold_twin",
|
||||
"domains": [
|
||||
"twin.threefold.io",
|
||||
"twin.threefold.me"
|
||||
],
|
||||
"descr": "you digital life"
|
||||
},
|
||||
{
|
||||
"name": "www_threefold_marketplace",
|
||||
"url": "https://github.com/threefoldfoundation/www_threefold_marketplace",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 2,
|
||||
"alias": "marketplace",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/www_threefold_marketplace",
|
||||
"domains": [
|
||||
"now.threefold.io",
|
||||
"marketplace.threefold.io",
|
||||
"now.threefold.me",
|
||||
"marketplace.threefold.me"
|
||||
],
|
||||
"descr": "apps for community builders, runs on top of evdc"
|
||||
},
|
||||
{
|
||||
"name": "www_conscious_internet",
|
||||
"url": "https://github.com/threefoldfoundation/www_conscious_internet",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 2,
|
||||
"alias": "conscious_internet",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/www_conscious_internet",
|
||||
"domains": [
|
||||
"www.consciousinternet.org",
|
||||
"eco.threefold.io",
|
||||
"community.threefold.io",
|
||||
"eco.threefold.me",
|
||||
"community.threefold.me"
|
||||
],
|
||||
"descr": "community around threefold, partners, friends, ..."
|
||||
},
|
||||
{
|
||||
"name": "www_threefold_tech",
|
||||
"url": "https://github.com/threefoldtech/www_threefold_tech",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 2,
|
||||
"alias": "tech",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldtech/www_threefold_tech",
|
||||
"domains": [
|
||||
"www.threefold.tech"
|
||||
],
|
||||
"descr": "cyberpandemic, use the tech to build your own solutions with, certification for TFGrid"
|
||||
},
|
||||
{
|
||||
"name": "www_examplesite",
|
||||
"url": "https://github.com/threefoldfoundation/www_examplesite",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 2,
|
||||
"alias": "example",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/www_examplesite",
|
||||
"domains": [
|
||||
"example.threefold.io"
|
||||
],
|
||||
"descr": ""
|
||||
},
|
||||
{
|
||||
"name": "info_threefold",
|
||||
"url": "https://github.com/threefoldfoundation/info_foundation_archive",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 0,
|
||||
"alias": "threefold",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/info_foundation_archive",
|
||||
"domains": [
|
||||
"info.threefold.io"
|
||||
],
|
||||
"descr": "wiki for foundation, collaborate, what if farmings, tokens"
|
||||
},
|
||||
{
|
||||
"name": "info_sdk",
|
||||
"url": "https://github.com/threefoldfoundation/info_sdk",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 0,
|
||||
"alias": "sdk",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/info_sdk",
|
||||
"domains": [
|
||||
"sdk.threefold.io",
|
||||
"sdk_info.threefold.io"
|
||||
],
|
||||
"descr": "for IAC, devops, how to do Infrastruture As Code, 3bot, Ansible, tfgrid-sdk, ..."
|
||||
},
|
||||
{
|
||||
"name": "info_legal",
|
||||
"url": "https://github.com/threefoldfoundation/info_legal",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 0,
|
||||
"alias": "legal",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/info_legal",
|
||||
"domains": [
|
||||
"legal.threefold.io",
|
||||
"legal_info.threefold.io"
|
||||
],
|
||||
"descr": ""
|
||||
},
|
||||
{
|
||||
"name": "info_cloud",
|
||||
"url": "https://github.com/threefoldfoundation/info_cloud",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 0,
|
||||
"alias": "cloud",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/info_cloud",
|
||||
"domains": [
|
||||
"cloud_info.threefold.io"
|
||||
],
|
||||
"descr": "how to use the cloud for deploying apps: evdc, kubernetes, planetary fs, ... + marketplace solutions "
|
||||
},
|
||||
{
|
||||
"name": "info_tftech",
|
||||
"url": "https://github.com/threefoldtech/info_tftech",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 0,
|
||||
"alias": "tftech",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldtech/info_tftech",
|
||||
"domains": [
|
||||
"info.threefold.tech"
|
||||
],
|
||||
"descr": ""
|
||||
},
|
||||
{
|
||||
"name": "info_digitaltwin",
|
||||
"url": "https://github.com/threefoldfoundation/info_digitaltwin.git",
|
||||
"branch": "default",
|
||||
"pull": false,
|
||||
"cat": 0,
|
||||
"alias": "twin",
|
||||
"path_code": "/Users/despiegk/codewww/github/threefoldfoundation/info_digitaltwin",
|
||||
"domains": [
|
||||
"twin_info.threefold.io"
|
||||
],
|
||||
"descr": ""
|
||||
}
|
||||
]
|
14
examples/templates/readme.md
Normal file
14
examples/templates/readme.md
Normal file
@ -0,0 +1,14 @@
|
||||
# example how to work with templates
|
||||
|
||||
- templates support
|
||||
- if
|
||||
- for loops
|
||||
- even nesting of for loops
|
||||
- syntax checking
|
||||
- embed the template into the binary
|
||||
|
||||
Its a very cool way how to do also do e.g. system administration, fill in
|
||||
config files, etc...
|
||||
|
||||
The example there is also a good demonstration of how to use json on a more
|
||||
complex object and read/write to file.
|
101
examples/templates/result.md
Normal file
101
examples/templates/result.md
Normal file
@ -0,0 +1,101 @@
|
||||
# WIKIs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## info.threefold.io80
|
||||
|
||||
- [errors]("//info.threefold.io80/errors")
|
||||
|
||||
### domains
|
||||
|
||||
|
||||
- info.threefold.io
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## sdk.threefold.io80
|
||||
|
||||
- [errors]("//sdk.threefold.io80/errors")
|
||||
|
||||
### domains
|
||||
|
||||
|
||||
- sdk.threefold.io
|
||||
|
||||
- sdk_info.threefold.io
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## legal.threefold.io80
|
||||
|
||||
- [errors]("//legal.threefold.io80/errors")
|
||||
|
||||
### domains
|
||||
|
||||
|
||||
- legal.threefold.io
|
||||
|
||||
- legal_info.threefold.io
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## cloud_info.threefold.io80
|
||||
|
||||
- [errors]("//cloud_info.threefold.io80/errors")
|
||||
|
||||
### domains
|
||||
|
||||
|
||||
- cloud_info.threefold.io
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## info.threefold.tech80
|
||||
|
||||
- [errors]("//info.threefold.tech80/errors")
|
||||
|
||||
### domains
|
||||
|
||||
|
||||
- info.threefold.tech
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## twin_info.threefold.io80
|
||||
|
||||
- [errors]("//twin_info.threefold.io80/errors")
|
||||
|
||||
### domains
|
||||
|
||||
|
||||
- twin_info.threefold.io
|
||||
|
||||
|
||||
|
16
examples/templates/template.md
Normal file
16
examples/templates/template.md
Normal file
@ -0,0 +1,16 @@
|
||||
# WIKIs
|
||||
|
||||
@for site in sites
|
||||
@if site.cat == .wiki
|
||||
|
||||
## @{site.domains[0]}@port_str
|
||||
|
||||
- [errors]("//@{site.domains[0]}@port_str/errors")
|
||||
|
||||
### domains
|
||||
|
||||
@for dom in site.domains
|
||||
- @dom
|
||||
@end
|
||||
@end
|
||||
@end
|
196
examples/templates/templates.v
Normal file
196
examples/templates/templates.v
Normal file
@ -0,0 +1,196 @@
|
||||
module main
|
||||
|
||||
import os
|
||||
import json
|
||||
|
||||
pub struct SiteConfig {
|
||||
pub mut:
|
||||
name string
|
||||
url string
|
||||
branch string = 'default' // means is the default branch
|
||||
pull bool
|
||||
cat SiteCat
|
||||
alias string
|
||||
path_code string
|
||||
domains []string
|
||||
descr string
|
||||
}
|
||||
|
||||
pub enum SiteCat {
|
||||
wiki
|
||||
data
|
||||
web
|
||||
}
|
||||
|
||||
fn data_get() []SiteConfig {
|
||||
data := [SiteConfig{
|
||||
name: 'www_threefold_io'
|
||||
url: 'https://github.com/threefoldfoundation/www_threefold_io'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .web
|
||||
alias: 'tf'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/www_threefold_io'
|
||||
domains: ['www.threefold.io', 'www.threefold.me']
|
||||
descr: 'is our entry point for everyone, redirect to the detailed websites underneith.'
|
||||
}, SiteConfig{
|
||||
name: 'www_threefold_cloud'
|
||||
url: 'https://github.com/threefoldfoundation/www_threefold_cloud'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .web
|
||||
alias: 'cloud'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/www_threefold_cloud'
|
||||
domains: ['cloud.threefold.io', 'cloud.threefold.me']
|
||||
descr: 'for people looking to deploy solutions on top of a cloud, alternative to e.g. digital ocean'
|
||||
}, SiteConfig{
|
||||
name: 'www_threefold_farming'
|
||||
url: 'https://github.com/threefoldfoundation/www_threefold_farming'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .web
|
||||
alias: 'farming'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/www_threefold_farming'
|
||||
domains: ['farming.threefold.io', 'farming.threefold.me']
|
||||
descr: 'crypto & minining enthusiasts, be the internet, know about farming & tokens.'
|
||||
}, SiteConfig{
|
||||
name: 'www_threefold_twin'
|
||||
url: 'https://github.com/threefoldfoundation/www_threefold_twin'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .web
|
||||
alias: 'twin'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/www_threefold_twin'
|
||||
domains: ['twin.threefold.io', 'twin.threefold.me']
|
||||
descr: 'you digital life'
|
||||
}, SiteConfig{
|
||||
name: 'www_threefold_marketplace'
|
||||
url: 'https://github.com/threefoldfoundation/www_threefold_marketplace'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .web
|
||||
alias: 'marketplace'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/www_threefold_marketplace'
|
||||
domains: ['now.threefold.io', 'marketplace.threefold.io', 'now.threefold.me', 'marketplace.threefold.me']
|
||||
descr: 'apps for community builders, runs on top of evdc'
|
||||
}, SiteConfig{
|
||||
name: 'www_conscious_internet'
|
||||
url: 'https://github.com/threefoldfoundation/www_conscious_internet'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .web
|
||||
alias: 'conscious_internet'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/www_conscious_internet'
|
||||
domains: ['www.consciousinternet.org', 'eco.threefold.io', 'community.threefold.io', 'eco.threefold.me',
|
||||
'community.threefold.me',
|
||||
]
|
||||
descr: 'community around threefold, partners, friends, ...'
|
||||
}, SiteConfig{
|
||||
name: 'www_threefold_tech'
|
||||
url: 'https://github.com/threefoldtech/www_threefold_tech'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .web
|
||||
alias: 'tech'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldtech/www_threefold_tech'
|
||||
domains: ['www.threefold.tech']
|
||||
descr: 'cyberpandemic, use the tech to build your own solutions with, certification for TFGrid'
|
||||
}, SiteConfig{
|
||||
name: 'www_examplesite'
|
||||
url: 'https://github.com/threefoldfoundation/www_examplesite'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .web
|
||||
alias: 'example'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/www_examplesite'
|
||||
domains: ['example.threefold.io']
|
||||
descr: ''
|
||||
}, SiteConfig{
|
||||
name: 'info_threefold'
|
||||
url: 'https://github.com/threefoldfoundation/info_foundation_archive'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .wiki
|
||||
alias: 'threefold'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/info_foundation_archive'
|
||||
domains: ['info.threefold.io']
|
||||
descr: 'wiki for foundation, collaborate, what if farmings, tokens'
|
||||
}, SiteConfig{
|
||||
name: 'info_sdk'
|
||||
url: 'https://github.com/threefoldfoundation/info_sdk'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .wiki
|
||||
alias: 'sdk'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/info_sdk'
|
||||
domains: ['sdk.threefold.io', 'sdk_info.threefold.io']
|
||||
descr: 'for IAC, devops, how to do Infrastruture As Code, 3bot, Ansible, tfgrid-sdk, ...'
|
||||
}, SiteConfig{
|
||||
name: 'info_legal'
|
||||
url: 'https://github.com/threefoldfoundation/info_legal'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .wiki
|
||||
alias: 'legal'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/info_legal'
|
||||
domains: ['legal.threefold.io', 'legal_info.threefold.io']
|
||||
descr: ''
|
||||
}, SiteConfig{
|
||||
name: 'info_cloud'
|
||||
url: 'https://github.com/threefoldfoundation/info_cloud'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .wiki
|
||||
alias: 'cloud'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/info_cloud'
|
||||
domains: ['cloud_info.threefold.io']
|
||||
descr: 'how to use the cloud for deploying apps: evdc, kubernetes, planetary fs, ... + marketplace solutions '
|
||||
}, SiteConfig{
|
||||
name: 'info_tftech'
|
||||
url: 'https://github.com/threefoldtech/info_tftech'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .wiki
|
||||
alias: 'tftech'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldtech/info_tftech'
|
||||
domains: ['info.threefold.tech']
|
||||
descr: ''
|
||||
}, SiteConfig{
|
||||
name: 'info_digitaltwin'
|
||||
url: 'https://github.com/threefoldfoundation/info_digitaltwin.git'
|
||||
branch: 'default'
|
||||
pull: false
|
||||
cat: .wiki
|
||||
alias: 'twin'
|
||||
path_code: '/Users/despiegk/codewww/github/threefoldfoundation/info_digitaltwin'
|
||||
domains: ['twin_info.threefold.io']
|
||||
descr: ''
|
||||
}]
|
||||
return data
|
||||
}
|
||||
|
||||
fn data_dump(data []SiteConfig) {
|
||||
a := json.encode_pretty(data)
|
||||
os.write_file('data.json', a) or { panic(err) }
|
||||
}
|
||||
|
||||
fn data_load() []SiteConfig {
|
||||
data := os.read_file('data.json') or { panic(err) }
|
||||
a := json.decode([]SiteConfig, data) or { panic(err) }
|
||||
return a
|
||||
}
|
||||
|
||||
fn filled_in_template() string {
|
||||
port_str := '80'
|
||||
sites := data_load()
|
||||
return $tmpl('template.md')
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// A NICE test how to work with the json module
|
||||
// data := data_get()
|
||||
// data_dump(data)
|
||||
b := filled_in_template()
|
||||
println(b)
|
||||
os.write_file('result.md', b) or { panic(err) }
|
||||
}
|
Reference in New Issue
Block a user