First commit
This commit is contained in:
commit
0192479c73
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"info": {
|
||||||
|
"type": "console"
|
||||||
|
},
|
||||||
|
"name": "cross",
|
||||||
|
"version": "1.0.0.0-prod"
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 45 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
||||||
|
var count = 0;
|
||||||
|
func Components.Counter()
|
||||||
|
{
|
||||||
|
return <p>Count is {++count}</p>;
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
func Components.Shell(title,pages,body)
|
||||||
|
{
|
||||||
|
return <!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>cross - {title}</title>
|
||||||
|
<link rel="stylesheet" href="./css/simple.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>cross</h1>
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
<each(var item : pages)>
|
||||||
|
<li>
|
||||||
|
<if(item.active)>
|
||||||
|
<true>
|
||||||
|
<a aria-current="page" href={item.route}>{item.text}</a>
|
||||||
|
</true>
|
||||||
|
<false>
|
||||||
|
<a aria-current="page" href={item.route}>{item.text}</a>
|
||||||
|
</false>
|
||||||
|
</if>
|
||||||
|
</li>
|
||||||
|
</each>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
<h1>{title}</h1>
|
||||||
|
<raw(body)>
|
||||||
|
<footer>
|
||||||
|
<p>Created using <a href="https://crosslang.tesseslanguage.com/">CrossLang</a> and <a href="https://simplecss.org/">SimpleCSS</a></p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>;
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
func Pages.About()
|
||||||
|
{
|
||||||
|
var pages = [
|
||||||
|
{
|
||||||
|
active = false,
|
||||||
|
route = "/",
|
||||||
|
text = "Home"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
active = false,
|
||||||
|
route = "/counter",
|
||||||
|
text = "Counter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
active = true,
|
||||||
|
route = "/about",
|
||||||
|
text = "About"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
return Components.Shell(
|
||||||
|
"About Me",
|
||||||
|
pages,
|
||||||
|
<null><img src="./image.png"><p>{ipsum}</p></null>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
var ipsum="";
|
|
@ -0,0 +1,25 @@
|
||||||
|
func Pages.Counter()
|
||||||
|
{
|
||||||
|
var pages = [
|
||||||
|
{
|
||||||
|
active = false,
|
||||||
|
route = "/",
|
||||||
|
text = "Home"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
active = true,
|
||||||
|
route = "/counter",
|
||||||
|
text = "Counter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
active = false,
|
||||||
|
route = "/about",
|
||||||
|
text = "About"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
return Components.Shell(
|
||||||
|
"Counter",
|
||||||
|
pages,
|
||||||
|
<null><h1>This is a counter</h1><raw(Components.Counter())></null>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
func Pages.Echo(text)
|
||||||
|
{
|
||||||
|
var pages = [
|
||||||
|
{
|
||||||
|
active = false,
|
||||||
|
route = "/",
|
||||||
|
text = "Home"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
active = false,
|
||||||
|
route = "/counter",
|
||||||
|
text = "Counter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
active = false,
|
||||||
|
route = "/about",
|
||||||
|
text = "About"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
return Components.Shell(
|
||||||
|
"Echo",
|
||||||
|
pages,
|
||||||
|
<if(text != null)>
|
||||||
|
<true>
|
||||||
|
<p>{text}</p>
|
||||||
|
</true>
|
||||||
|
<false>
|
||||||
|
<p>No text available</p>
|
||||||
|
</false>
|
||||||
|
</if>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
func Pages.Index()
|
||||||
|
{
|
||||||
|
var pages = [
|
||||||
|
{
|
||||||
|
active = true,
|
||||||
|
route = "/",
|
||||||
|
text = "Home"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
active = false,
|
||||||
|
route = "/counter",
|
||||||
|
text = "Counter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
active = false,
|
||||||
|
route = "/about",
|
||||||
|
text = "About"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
return Components.Shell("Main Page",pages,<section>
|
||||||
|
<form action="./echo" method="GET">
|
||||||
|
<input type="text" name="text" placeholder="Text to echo">
|
||||||
|
<input type="submit" value="Echo it">
|
||||||
|
</form>
|
||||||
|
<p>1 John 4:4: You, dear children, are from God and have overcome them, because the one who is in you is greater than the one who is in the world.</p>
|
||||||
|
</section>);
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
var count = 0;
|
||||||
|
func main(args)
|
||||||
|
{
|
||||||
|
Net.Http.ListenSimpleWithLoop((ctx)=>{
|
||||||
|
if(ctx.Path == "/")
|
||||||
|
{
|
||||||
|
ctx.WithMimeType("text/html").SendText(Pages.Index());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if(ctx.Path == "/counter")
|
||||||
|
{
|
||||||
|
ctx.WithMimeType("text/html").SendText(Pages.Counter());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if(ctx.Path == "/about")
|
||||||
|
{
|
||||||
|
ctx.WithMimeType("text/html").SendText(Pages.Index());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if(ctx.Path == "/echo")
|
||||||
|
{
|
||||||
|
ctx.WithMimeType("text/html").SendText(Pages.Echo(ctx.QueryParams.TryGetFirst("text")));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if(ctx.Path == "/image.png")
|
||||||
|
{
|
||||||
|
ctx.WithMimeType("image/png").SendBytes(embed("image.png"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if(ctx.Path == "/css/simple.min.css")
|
||||||
|
{
|
||||||
|
ctx.WithMimeType("text/css").SendBytes(embed("simple.min.css"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if(ctx.Path == "/favicon.ico")
|
||||||
|
{
|
||||||
|
ctx.WithMimeType("image/x-icon").SendBytes(embed("favicon.ico"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},4206);
|
||||||
|
}
|
Loading…
Reference in New Issue