optimize lib.nas

This commit is contained in:
ValKmjolnir
2023-12-06 20:10:07 +08:00
parent 7c5f222364
commit 6adf573f3f
51 changed files with 162 additions and 81 deletions
+3 -1
View File
@@ -1,5 +1,7 @@
# lib csv.nas
# ValKmjolnir 2022/10/15
use std.io;
var read = func(path, delimeter=",", endline="\n") {
var context = io.readfile(path);
context = split(endline, context);
@@ -13,4 +15,4 @@ var read = func(path, delimeter=",", endline="\n") {
property: context[0],
data: context[1:]
};
}
}
+3
View File
@@ -2,6 +2,9 @@
# 2023 by ValKmjolnir
# dylib is the core hashmap for developers to load their own library.
# for safe using dynamic library, you could use 'module' in stl/module.nas
use std.os;
use std.io;
use std.unix;
# open dynamic lib. return a hash including dl pointer and function pointers
var dlopen = func(libname) {
+1
View File
@@ -2,6 +2,7 @@
# ValKmjolnir 2022
use std.runtime;
use std.coroutine;
use std.os;
println("-------------------------------------------------------------");
println(" FlightGear simulated-env for developers project, since 2019");
+2
View File
@@ -1,5 +1,7 @@
# lib file.nas
# ValKmjolnir 2022/3/6
use std.io;
use std.unix;
var SEEK_SET = io.SEEK_SET;
+18
View File
@@ -72,3 +72,21 @@ var stdin = func() { return __stdin; }();
var stdout = func() { return __stdout;}();
var stderr = func() { return __stderr; }();
# get file status. using data from stat
var fstat = func(filename) {
var s = stat(filename);
return {
st_dev: s[0],
st_ino: s[1],
st_mode: s[2],
st_nlink: s[3],
st_uid: s[4],
st_gid: s[5],
st_rdev: s[6],
st_size: s[7],
st_atime: s[8],
st_mtime: s[9],
st_ctime: s[10]
};
}
-21
View File
@@ -1,9 +1,6 @@
# lib.nas
# 2019 ValKmjolnir
use std.math;
use std.io;
use std.os;
use std.unix;
# print is used to print all things in nasal, try and see how it works.
# this function uses std::cout to output logs.
@@ -349,24 +346,6 @@ var md5 = func(str) {
return __md5(str);
}
# get file status. using data from io.stat
var fstat = func(filename) {
var s = io.stat(filename);
return {
st_dev: s[0],
st_ino: s[1],
st_mode: s[2],
st_nlink: s[3],
st_uid: s[4],
st_gid: s[5],
st_rdev: s[6],
st_size: s[7],
st_atime: s[8],
st_mtime: s[9],
st_ctime: s[10]
};
}
# important global constants
var D2R = math.pi / 180; # degree to radian
var R2D = 180 / math.pi; # radian to degree
+2
View File
@@ -1,5 +1,7 @@
# log.nas
# ValKmjolnir 2022/6/14
use std.os;
var log = func() {
var (log_date,log_time,prefix)=(1,1,"");
var os_time="";
+2
View File
@@ -5,6 +5,8 @@
use module.libsock;
use std.json;
use std.os;
use std.unix;
var _raw_str = func(s) {
var v = split("", s);
+54 -52
View File
@@ -1,6 +1,8 @@
# process_bar.nas
# ValKmjolnir 2022/6/14
# this file is inspired by a Python lib: alive_progress
use std.os;
use std.unix;
var bar = func() {
var bar = {
@@ -240,96 +242,96 @@ var default_bar = func(name = "classic", length = 20) {
if (typeof(name)!="str")
name="classic";
if (name=="classic")
return process_bar.bar("sharp","point","bracket",length);
return bar("sharp","point","bracket",length);
elsif (name=="classic2")
return process_bar.bar("equal","point","bracket",length);
return bar("equal","point","bracket",length);
elsif (name=="classic3")
return process_bar.bar("sharp","point","line",length);
return bar("sharp","point","line",length);
elsif (name=="classic4")
return process_bar.bar("equal","point","line",length);
return bar("equal","point","line",length);
elsif (name=="triangle")
return process_bar.bar("solid_triangle_right","hollow_triangle_right","angle_bracket",length);
return bar("solid_triangle_right","hollow_triangle_right","angle_bracket",length);
elsif (name=="dots")
return process_bar.bar("solid_circle","hollow_circle","curve",length);
return bar("solid_circle","hollow_circle","curve",length);
elsif (name=="ticks")
return process_bar.bar("tick","space","line",length);
return bar("tick","space","line",length);
elsif (name=="deep_shadow")
return process_bar.bar("deep_shadow","light_shadow","line",length);
return bar("deep_shadow","light_shadow","line",length);
elsif (name=="block")
return process_bar.bar("block","light_shadow","line",length);
return bar("block","light_shadow","line",length);
elsif (name=="oneline")
return process_bar.bar("line","space","space",length);
return bar("line","space","space",length);
else
return process_bar.bar("sharp","point","bracket",length);
return bar("sharp","point","bracket",length);
}
var default_spinner = func(name = "classic", repeat = 1) {
if (typeof(name)!="str")
name="classic";
if (name=="rise")
return process_bar.spinner("rise",repeat);
return spinner("rise",repeat);
elsif (name=="vertical")
return process_bar.spinner("vertical",repeat);
return spinner("vertical",repeat);
elsif (name=="dot")
return process_bar.spinner("dot",repeat);
return spinner("dot",repeat);
elsif (name=="dots")
return process_bar.spinner("dots",repeat);
return spinner("dots",repeat);
elsif (name=="arrow")
return process_bar.spinner("arrow",repeat);
return spinner("arrow",repeat);
elsif (name=="classic")
return process_bar.spinner("classic",repeat);
return spinner("classic",repeat);
elsif (name=="balls")
return process_bar.spinner("balls",repeat);
return spinner("balls",repeat);
elsif (name=="dots_wave")
return process_bar.spinner("dots_wave",repeat);
return spinner("dots_wave",repeat);
elsif (name=="pulse")
return process_bar.spinner("pulse",repeat);
return spinner("pulse",repeat);
elsif (name=="wave")
return process_bar.spinner("wave",repeat);
return spinner("wave",repeat);
elsif (name=="short_wave")
return process_bar.spinner("short_wave",repeat);
return spinner("short_wave",repeat);
elsif (name=="fish")
return process_bar.spinner("fish",repeat);
return spinner("fish",repeat);
elsif (name=="happy")
return process_bar.spinner("happy",repeat);
return spinner("happy",repeat);
elsif (name=="wait")
return process_bar.spinner("wait",repeat);
return spinner("wait",repeat);
elsif (name=="stars")
return process_bar.spinner("stars",repeat);
return spinner("stars",repeat);
else
return process_bar.spinner("classic",repeat);
return spinner("classic",repeat);
}
var show = func() {
print("\ec");
var bars={
"classic ":process_bar.default_bar("classic",40),
"classic2 ":process_bar.default_bar("classic2",40),
"classic3 ":process_bar.default_bar("classic3",40),
"classic4 ":process_bar.default_bar("classic4",40),
"triangle ":process_bar.default_bar("triangle",40),
"dots ":process_bar.default_bar("dots",40),
"ticks ":process_bar.default_bar("ticks",40),
"deep_shadow":process_bar.default_bar("deep_shadow",40),
"block ":process_bar.default_bar("block",40),
"oneline ":process_bar.default_bar("oneline",40)
"classic ":default_bar("classic",40),
"classic2 ":default_bar("classic2",40),
"classic3 ":default_bar("classic3",40),
"classic4 ":default_bar("classic4",40),
"triangle ":default_bar("triangle",40),
"dots ":default_bar("dots",40),
"ticks ":default_bar("ticks",40),
"deep_shadow":default_bar("deep_shadow",40),
"block ":default_bar("block",40),
"oneline ":default_bar("oneline",40)
};
var spinners={
"rise ":process_bar.default_spinner("rise",16),
"vertical ":process_bar.default_spinner("vertical",16),
"dot ":process_bar.default_spinner("dot",16),
"dots ":process_bar.default_spinner("dots",16),
"arrow ":process_bar.default_spinner("arrow",16),
"classic ":process_bar.default_spinner("classic",16),
"balls ":process_bar.default_spinner("balls",4),
"dots_wave ":process_bar.default_spinner("dots_wave",2),
"pulse ":process_bar.default_spinner("pulse",1),
"wave ":process_bar.default_spinner("wave",2),
"short_wave ":process_bar.default_spinner("short_wave",4),
"fish ":process_bar.default_spinner("fish",1),
"happy ":process_bar.default_spinner("happy",1),
"wait ":process_bar.default_spinner("wait",1),
"stars ":process_bar.default_spinner("stars",1)
"rise ":default_spinner("rise",16),
"vertical ":default_spinner("vertical",16),
"dot ":default_spinner("dot",16),
"dots ":default_spinner("dots",16),
"arrow ":default_spinner("arrow",16),
"classic ":default_spinner("classic",16),
"balls ":default_spinner("balls",4),
"dots_wave ":default_spinner("dots_wave",2),
"pulse ":default_spinner("pulse",1),
"wave ":default_spinner("wave",2),
"short_wave ":default_spinner("short_wave",4),
"fish ":default_spinner("fish",1),
"happy ":default_spinner("happy",1),
"wait ":default_spinner("wait",1),
"stars ":default_spinner("stars",1)
};
var bar_key=keys(bars);
var spin_key=keys(spinners);
+2
View File
@@ -1,4 +1,6 @@
use module.libsock;
use std.os;
use std.unix;
var udp_server = func(hostname, port, retry_delay = 5) {
var socket = libsock.socket;
+3 -1
View File
@@ -1,6 +1,8 @@
# unix.nas
# 2023 by ValKmjolnir
use std.bits;
use std.os;
use std.io;
var _S_IFDIR = 0x4000;
var _S_IFREG = 0x8000;
@@ -70,5 +72,5 @@ var getenv = func(envvar) {
}
var getpath = func() {
return split(os.platform()=="windows"? ";":":", unix.getenv("PATH"));
return split(os.platform()=="windows"? ";":":", getenv("PATH"));
}