main #

Description

This is an example of a an .md file, used for adding more rich text documentation in a project or module.

This is a link to the main V site.

This is a bold text.

This is a script console.log('hi from README.md'); .

Examples

Processing command line args

import os

fn main() {
dump(os.args)
dump(os.args.len)
assert os.args.len > 0
}

A JWT example (test syntax highlighting)

import crypto.hmac
import crypto.sha256
import encoding.base64
import json
import time

struct JwtHeader {
alg string
typ string
}

struct JwtPayload {
sub  string
name string
iat  int
}

fn main() {
sw := time.new_stopwatch()
secret := 'your-256-bit-secret'
token := make_token(secret)
ok := auth_verify(secret, token)
dt := sw.elapsed().microseconds()
println('token: ${token}')
println('auth_verify(secret, token): ${ok}')
println('Elapsed time: ${dt} uS')
}

fn make_token(secret string) string {
header := base64.url_encode(json.encode(JwtHeader{'HS256', 'JWT'}).bytes())
payload := base64.url_encode(json.encode(JwtPayload{'1234567890', 'John Doe', 1516239022}).bytes())
signature := base64.url_encode(hmac.new(secret.bytes(),'${header}.${payload}'.bytes(),
sha256.sum, sha256.block_size))
jwt :='${header}.${payload}.${signature}'
return jwt
}

fn auth_verify(secret string, token string) bool {
token_split := token.split('.')
signature_mirror := hmac.new(secret.bytes(),'${token_split[0]}.${token_split[1]}'.bytes(),
sha256.sum, sha256.block_size)
signature_from_token := base64.url_decode(token_split[2])
return hmac.equal(signature_from_token, signature_mirror)
}

Constants #

const omega = 3 // should be first
const alpha = 5 // should be in the middle
const beta = 2 // should be at the end

fn abc #

fn abc()

abc - should be last

fn def #

fn def()

def - should be first

fn xyz #

fn xyz()

xyz - should be in the middle a small script bold text bold end underlined text underline end a link main v repo

fn MyXMLDocument.abc #

fn MyXMLDocument.abc(text string) ?(string, int)

MyXMLDocument.abc does something too... I just do not know what.

fn MyXMLDocument.from_file #

fn MyXMLDocument.from_file(path string) !MyXMLDocument

MyXMLDocument.from_text processes the file path, and returns an error

fn MyXMLDocument.from_text #

fn MyXMLDocument.from_text(text string) ?MyXMLDocument

MyXMLDocument.from_text processes text and produces none

struct MyXMLDocument #

struct MyXMLDocument {
	path string
}

MyXMLDocument is here just to test the different combinations of methods/output types

fn (MyXMLDocument) instance_from_file #

fn (x &MyXMLDocument) instance_from_file(path string) !MyXMLDocument

instance_from_file does stuff with path

fn (MyXMLDocument) instance_from_text #

fn (x &MyXMLDocument) instance_from_text(text string) ?MyXMLDocument

instance_from_text does stuff with text

fn (MyXMLDocument) instance_abc #

fn (x &MyXMLDocument) instance_abc(text string) ?(string, int)

instance_abc does stuff too

fn (MyXMLDocument) instance_void #

fn (x &MyXMLDocument) instance_void()

instance_void does stuff too

fn (MyXMLDocument) instance_int #

fn (x &MyXMLDocument) instance_int() int

instance_int does stuff too

fn (MyXMLDocument) instance_result #

fn (x &MyXMLDocument) instance_result() !

instance_error does stuff too

fn (MyXMLDocument) instance_option #

fn (x &MyXMLDocument) instance_option() ?

instance_option does stuff too