diff --git a/compiler/cc.v b/compiler/cc.v index 89284e100c..440fece492 100644 --- a/compiler/cc.v +++ b/compiler/cc.v @@ -65,11 +65,11 @@ fn (v mut V) cc() { if v.pref.build_mode == .build_module { // Create the modules & out directory if it's not there. mut out_dir := if v.dir.starts_with('vlib') { - '$v_modules_path${os.PathSeparator}cache${os.PathSeparator}$v.dir' + '$v_modules_path${os.path_separator}cache${os.path_separator}$v.dir' } else { - '$v_modules_path${os.PathSeparator}$v.dir' + '$v_modules_path${os.path_separator}$v.dir' } - pdir := out_dir.all_before_last(os.PathSeparator) + pdir := out_dir.all_before_last(os.path_separator) if !os.dir_exists(pdir) { os.mkdir_all(pdir) } @@ -118,25 +118,25 @@ fn (v mut V) cc() { } else if v.pref.is_cache { vexe := os.executable() - builtin_o_path := '$v_modules_path${os.PathSeparator}cache${os.PathSeparator}vlib${os.PathSeparator}builtin.o' + builtin_o_path := '$v_modules_path${os.path_separator}cache${os.path_separator}vlib${os.path_separator}builtin.o' if os.file_exists(builtin_o_path) { libs = builtin_o_path } else { println('$builtin_o_path not found... building module builtin') - os.system('$vexe build module vlib${os.PathSeparator}builtin') + os.system('$vexe build module vlib${os.path_separator}builtin') } for imp in v.table.imports { if imp.contains('vweb') { continue } // not working if imp == 'webview' { continue } - imp_path := imp.replace('.', os.PathSeparator) - path := '$v_modules_path${os.PathSeparator}cache${os.PathSeparator}vlib${os.PathSeparator}${imp_path}.o' + imp_path := imp.replace('.', os.path_separator) + path := '$v_modules_path${os.path_separator}cache${os.path_separator}vlib${os.path_separator}${imp_path}.o' //println('adding ${imp_path}.o') if os.file_exists(path) { libs += ' ' + path } else { println('$path not found... building module $imp') - os.system('$vexe build module vlib${os.PathSeparator}$imp_path') + os.system('$vexe build module vlib${os.path_separator}$imp_path') } } } diff --git a/compiler/cgen.v b/compiler/cgen.v index 6140906558..16da086c86 100644 --- a/compiler/cgen.v +++ b/compiler/cgen.v @@ -254,7 +254,7 @@ fn build_thirdparty_obj_file(path string, moduleflags []CFlag) { mut cfiles := '' for file in files { if file.ends_with('.c') { - cfiles += '"' + os.realpath( parent + os.PathSeparator + file ) + '" ' + cfiles += '"' + os.realpath( parent + os.path_separator + file ) + '" ' } } cc := find_c_compiler() diff --git a/compiler/main.v b/compiler/main.v index 96cf1c0fb8..19b071c7b2 100644 --- a/compiler/main.v +++ b/compiler/main.v @@ -610,7 +610,7 @@ fn (v &V) v_files_from_dir(dir string) []string { if file.ends_with('_c.v') && v.os == .js { continue } - res << '$dir${os.PathSeparator}$file' + res << '$dir${os.path_separator}$file' } return res } @@ -619,7 +619,7 @@ fn (v &V) v_files_from_dir(dir string) []string { fn (v mut V) add_v_files_to_compile() { mut builtin_files := v.get_builtin_files() // Builtin cache exists? Use it. - builtin_vh := '$v_modules_path${os.PathSeparator}vlib${os.PathSeparator}builtin.vh' + builtin_vh := '$v_modules_path${os.path_separator}vlib${os.path_separator}builtin.vh' if v.pref.is_cache && os.file_exists(builtin_vh) { v.cached_mods << 'builtin' builtin_files = [builtin_vh] @@ -638,7 +638,7 @@ fn (v mut V) add_v_files_to_compile() { mut p := v.new_parser_from_file(file) // set mod so we dont have to resolve submodule if v.pref.build_mode == .build_module && - file.contains(v.mod.replace('.', os.PathSeparator)) { + file.contains(v.mod.replace('.', os.path_separator)) { p.mod = v.mod } p.parse(.imports) @@ -662,8 +662,8 @@ fn (v mut V) add_v_files_to_compile() { // use cached built module if exists if v.pref.build_mode != .build_module && !mod.contains('vweb') { - mod_path := mod.replace('.', os.PathSeparator) - vh_path := '$v_modules_path${os.PathSeparator}vlib${os.PathSeparator}${mod_path}.vh' + mod_path := mod.replace('.', os.path_separator) + vh_path := '$v_modules_path${os.path_separator}vlib${os.path_separator}${mod_path}.vh' if v.pref.is_cache && os.file_exists(vh_path) { println('using cached module `$mod`: $vh_path') v.cached_mods << mod @@ -689,9 +689,9 @@ fn (v &V) get_builtin_files() []string { // .vh cache exists? Use it $if js { - return v.v_files_from_dir('$v.vroot${os.PathSeparator}vlib${os.PathSeparator}builtin${os.PathSeparator}js') + return v.v_files_from_dir('$v.vroot${os.path_separator}vlib${os.path_separator}builtin${os.path_separator}js') } - return v.v_files_from_dir('$v.vroot${os.PathSeparator}vlib${os.PathSeparator}builtin') + return v.v_files_from_dir('$v.vroot${os.path_separator}vlib${os.path_separator}builtin') } // get user files @@ -703,22 +703,22 @@ fn (v &V) get_user_files() []string { mut user_files := []string if v.pref.is_test && v.pref.is_stats { - user_files << [v.vroot, 'vlib', 'benchmark', 'tests', 'always_imported.v'].join( os.PathSeparator ) + user_files << [v.vroot, 'vlib', 'benchmark', 'tests', 'always_imported.v'].join( os.path_separator ) } // v volt/slack_test.v: compile all .v files to get the environment // I need to implement user packages! TODO is_test_with_imports := dir.ends_with('_test.v') && - (dir.contains('${os.PathSeparator}volt') || dir.contains('${os.PathSeparator}c2volt'))// TODO + (dir.contains('${os.path_separator}volt') || dir.contains('${os.path_separator}c2volt'))// TODO if is_test_with_imports { user_files << dir - pos := dir.last_index(os.PathSeparator) - dir = dir.left(pos) + os.PathSeparator// TODO WHY IS THIS .neEDED? + pos := dir.last_index(os.path_separator) + dir = dir.left(pos) + os.path_separator// TODO WHY IS THIS .neEDED? } if dir.ends_with('.v') { // Just compile one file and get parent dir user_files << dir - dir = dir.all_before('${os.PathSeparator}') + dir = dir.all_before('${os.path_separator}') } else { // Add .v files from the directory being compiled @@ -815,7 +815,7 @@ fn new_v(args[]string) &V { // Create modules dirs if they are missing if !os.dir_exists(v_modules_path) { os.mkdir(v_modules_path) - os.mkdir('$v_modules_path${os.PathSeparator}cache') + os.mkdir('$v_modules_path${os.path_separator}cache') } mut vgen_buf := strings.new_builder(1000) @@ -829,10 +829,10 @@ fn new_v(args[]string) &V { if 'run' in args { dir = get_param_after(joined_args, 'run', '') } - if dir.ends_with(os.PathSeparator) { - dir = dir.all_before_last(os.PathSeparator) + if dir.ends_with(os.path_separator) { + dir = dir.all_before_last(os.path_separator) } - if dir.starts_with('.$os.PathSeparator') { + if dir.starts_with('.$os.path_separator') { dir = dir.right(2) } if args.len < 2 { @@ -845,17 +845,17 @@ fn new_v(args[]string) &V { build_mode = .build_module // v build module ~/v/os => os.o mod_path := if dir.contains('vlib') { - dir.all_after('vlib'+os.PathSeparator) + dir.all_after('vlib'+os.path_separator) } else if dir.starts_with('.\\') || dir.starts_with('./') { dir.right(2) } - else if dir.starts_with(os.PathSeparator) { - dir.all_after(os.PathSeparator) + else if dir.starts_with(os.path_separator) { + dir.all_after(os.path_separator) } else { dir } - mod = mod_path.replace(os.PathSeparator, '.') + mod = mod_path.replace(os.path_separator, '.') println('Building module "${mod}" (dir="$dir")...') //out_name = '$TmpPath/vlib/${base}.o' out_name = mod @@ -881,7 +881,7 @@ fn new_v(args[]string) &V { } // if we are in `/foo` and run `v .`, the executable should be `foo` if dir == '.' && out_name == 'a.out' { - base := os.getwd().all_after(os.PathSeparator) + base := os.getwd().all_after(os.path_separator) out_name = base.trim_space() } mut _os := OS.mac @@ -976,7 +976,7 @@ fn new_v(args[]string) &V { println('C compiler=$pref.ccompiler') } if pref.is_so { - out_name_c = out_name.all_after(os.PathSeparator) + '_shared_lib.c' + out_name_c = out_name.all_after(os.path_separator) + '_shared_lib.c' } return &V{ os: _os diff --git a/compiler/module_header.v b/compiler/module_header.v index eee3424a92..bee7d6a9b7 100644 --- a/compiler/module_header.v +++ b/compiler/module_header.v @@ -106,14 +106,14 @@ fn v_type_str(typ_ string) string { fn (v &V) generate_vh() { println('\n\n\n\nGenerating a V header file for module `$v.mod`') - mod_path := v.mod.replace('.', os.PathSeparator) + mod_path := v.mod.replace('.', os.path_separator) dir := if v.dir.starts_with('vlib') { - '$v_modules_path${os.PathSeparator}$v.dir' + '$v_modules_path${os.path_separator}$v.dir' } else { - '$v_modules_path${os.PathSeparator}$mod_path' + '$v_modules_path${os.path_separator}$mod_path' } path := dir + '.vh' - pdir := dir.all_before_last(os.PathSeparator) + pdir := dir.all_before_last(os.path_separator) if !os.dir_exists(pdir) { os.mkdir_all(pdir) // os.mkdir(os.realpath(dir)) diff --git a/compiler/modules.v b/compiler/modules.v index f06e0e2bb3..5e1f272ae8 100644 --- a/compiler/modules.v +++ b/compiler/modules.v @@ -33,7 +33,7 @@ pub fn(graph &DepGraph) imports() []string { fn (v &V) module_path(mod string) string { // submodule support if mod.contains('.') { - return mod.replace('.', os.PathSeparator) + return mod.replace('.', os.path_separator) // return mod.replace('.', '/') } return mod @@ -45,15 +45,15 @@ fn (v &V) module_path(mod string) string { fn (v &V) find_module_path(mod string) ?string { mod_path := v.module_path(mod) // First check for local modules in the same directory - mut import_path := os.getwd() + '${os.PathSeparator}$mod_path' + mut import_path := os.getwd() + '${os.path_separator}$mod_path' // Now search in vlib/ if !os.dir_exists(import_path) { - import_path = '$v.lang_dir${os.PathSeparator}vlib${os.PathSeparator}$mod_path' + import_path = '$v.lang_dir${os.path_separator}vlib${os.path_separator}$mod_path' } //println('ip=$import_path') // Finally try modules installed with vpm (~/.vmodules) if !os.dir_exists(import_path) { - import_path = '$v_modules_path${os.PathSeparator}$mod_path' + import_path = '$v_modules_path${os.path_separator}$mod_path' if !os.dir_exists(import_path){ return error('module "$mod" not found') } @@ -67,4 +67,4 @@ fn mod_gen_name(mod string) string { fn mod_gen_name_rev(mod string) string { return mod.replace('_dot_', '.') -} \ No newline at end of file +} diff --git a/compiler/msvc.v b/compiler/msvc.v index f4693cbfa8..9cb41abeba 100644 --- a/compiler/msvc.v +++ b/compiler/msvc.v @@ -191,7 +191,7 @@ fn find_msvc() ?MsvcResult { } return MsvcResult { - full_cl_exe_path: os.realpath( vs.exe_path + os.PathSeparator + 'cl.exe' ) + full_cl_exe_path: os.realpath( vs.exe_path + os.path_separator + 'cl.exe' ) exe_path: vs.exe_path, um_lib_path: wk.um_lib_path, @@ -388,7 +388,7 @@ fn build_thirdparty_obj_file_with_msvc(path string, moduleflags []CFlag) { mut cfiles := '' for file in files { if file.ends_with('.c') { - cfiles += '"' + os.realpath( parent + os.PathSeparator + file ) + '" ' + cfiles += '"' + os.realpath( parent + os.path_separator + file ) + '" ' } } @@ -441,7 +441,7 @@ fn (cflags []CFlag) msvc_string_flags() MsvcStringFlags { } else if flag.name == '-L' { lib_paths << flag.value - lib_paths << flag.value + os.PathSeparator + 'msvc' + lib_paths << flag.value + os.path_separator + 'msvc' // The above allows putting msvc specific .lib files in a subfolder msvc/ , // where gcc will NOT find them, but cl will do... // NB: gcc is smart enough to not need .lib files at all in most cases, the .dll is enough. diff --git a/compiler/parser.v b/compiler/parser.v index 9a079a3b1e..0f1e7af697 100644 --- a/compiler/parser.v +++ b/compiler/parser.v @@ -122,7 +122,7 @@ fn (v mut V) new_parser_from_file(path string) Parser { mut p := v.new_parser(new_scanner_file(path), path) p = { p| file_path: path, - file_name: path.all_after(os.PathSeparator), + file_name: path.all_after(os.path_separator), file_platform: path_platform, file_pcguard: path_pcguard, is_script: (v.pref.is_script && os.realpath(path) == os.realpath(path)), @@ -518,8 +518,8 @@ fn (p mut Parser) const_decl() { continue } mut name := p.check_name() // `Age = 20` - if p.mod != 'os' && contains_capital(name) { - //p.warn('const names cannot contain uppercase letters, use snake_case instead') + if !p.pref.building_v && p.mod != 'os' && contains_capital(name) { + p.warn('const names cannot contain uppercase letters, use snake_case instead') } name = p.prepend_mod(name) mut typ := '' diff --git a/compiler/scanner.v b/compiler/scanner.v index d89265a46f..b0cddb223f 100644 --- a/compiler/scanner.v +++ b/compiler/scanner.v @@ -725,7 +725,7 @@ fn (s mut Scanner) debug_tokens() { s.started = false s.debug = true - fname := s.file_path.all_after(os.PathSeparator) + fname := s.file_path.all_after(os.path_separator) println('\n===DEBUG TOKENS $fname===') for { diff --git a/compiler/table.v b/compiler/table.v index 990d9992dd..5119bd53d1 100644 --- a/compiler/table.v +++ b/compiler/table.v @@ -778,14 +778,14 @@ fn (table &Table) cgen_name_type_pair(name, typ string) string { fn is_valid_int_const(val, typ string) bool { x := val.int() switch typ { - case 'byte': return 0 <= x && x <= math.MaxU8 - case 'u16': return 0 <= x && x <= math.MaxU16 + case 'byte': return 0 <= x && x <= math.max_u8 + case 'u16': return 0 <= x && x <= math.max_u16 //case 'u32': return 0 <= x && x <= math.MaxU32 //case 'u64': return 0 <= x && x <= math.MaxU64 ////////////// - case 'i8': return math.MinI8 <= x && x <= math.MaxI8 - case 'i16': return math.MinI16 <= x && x <= math.MaxI16 - case 'int': return math.MinI32 <= x && x <= math.MaxI32 + case 'i8': return math.min_i8 <= x && x <= math.max_i8 + case 'i16': return math.min_i16 <= x && x <= math.max_i16 + case 'int': return math.min_i32 <= x && x <= math.max_i32 //case 'i64': //x64 := val.i64() //return i64(-(1<<63)) <= x64 && x64 <= i64((1<<63)-1) @@ -870,7 +870,7 @@ fn (table &Table) qualify_module(mod string, file_path string) string { for m in table.imports { if m.contains('.') && m.contains(mod) { m_parts := m.split('.') - m_path := m_parts.join(os.PathSeparator) + m_path := m_parts.join(os.path_separator) if mod == m_parts[m_parts.len-1] && file_path.contains(m_path) { return m } diff --git a/compiler/tests/repl/runner/runner.v b/compiler/tests/repl/runner/runner.v index 8182966f8c..8f595b6736 100644 --- a/compiler/tests/repl/runner/runner.v +++ b/compiler/tests/repl/runner/runner.v @@ -11,12 +11,12 @@ pub: pub fn full_path_to_v() string { vname := if os.user_os() == 'windows' { 'v.exe' } else { 'v' } - vexec := os.dir(os.dir(os.dir(os.dir( os.executable() )))) + os.PathSeparator + vname + vexec := os.dir(os.dir(os.dir(os.dir( os.executable() )))) + os.path_separator + vname /* args := os.args vreal := os.realpath('v') myself := os.realpath( os.executable() ) - wd := os.getwd() + os.PathSeparator + wd := os.getwd() + os.path_separator println('args are: $args') println('vreal : $vreal') println('myself : $myself') @@ -76,7 +76,7 @@ $diff } pub fn new_options() RunnerOptions { - wd := os.getwd() + os.PathSeparator + wd := os.getwd() + os.path_separator vexec := full_path_to_v() mut files := []string if os.args.len > 1 { diff --git a/compiler/vtest.v b/compiler/vtest.v index ddd0fadd5a..82ec00b93e 100644 --- a/compiler/vtest.v +++ b/compiler/vtest.v @@ -56,7 +56,7 @@ fn test_v() { } if os.dir_exists(targ) { - ts.files << os.walk_ext( targ.trim_right(os.PathSeparator), '_test.v') + ts.files << os.walk_ext( targ.trim_right(os.path_separator), '_test.v') continue } println('Unrecognized test file $targ .') diff --git a/tools/performance_compare.v b/tools/performance_compare.v index 71529f427a..461bcc678c 100644 --- a/tools/performance_compare.v +++ b/tools/performance_compare.v @@ -172,7 +172,7 @@ fn (c Context) compare_v_performance( commands []string ) { for cmd in commands { hyperfine_commands_arguments << ' \'cd ${c.b:30s} ; ./$cmd \' ' } for cmd in commands { hyperfine_commands_arguments << ' \'cd ${c.a:30s} ; ./$cmd \' ' } /////////////////////////////////////////////////////////////////////////////// - cmd_stats_file := os.realpath([ c.workdir, 'v_performance_stats.json'].join(os.PathSeparator)) + cmd_stats_file := os.realpath([ c.workdir, 'v_performance_stats.json'].join(os.path_separator)) comparison_cmd := 'hyperfine $c.hyperfineopts '+ '--export-json ${cmd_stats_file} '+ '--time-unit millisecond '+ @@ -187,7 +187,7 @@ fn (c Context) compare_v_performance( commands []string ) { fn (c Context) normalized_workpath_for_commit( commit string ) string { nc := 'v_at_' + commit.replace('^','_').replace('-','_').replace('/','_') - return os.realpath( c.workdir + os.PathSeparator + nc ) + return os.realpath( c.workdir + os.path_separator + nc ) } fn validate_commit_exists( commit string ){ diff --git a/vlib/math/math.v b/vlib/math/math.v index 097e8f9303..6839b7db38 100644 --- a/vlib/math/math.v +++ b/vlib/math/math.v @@ -9,36 +9,36 @@ module math // All functions are sorted alphabetically. const ( - E = 2.71828182845904523536028747135266249775724709369995957496696763 - Pi = 3.14159265358979323846264338327950288419716939937510582097494459 - Phi = 1.61803398874989484820458683436563811772030917980576286213544862 - Tau = 6.28318530717958647692528676655900576839433879875021164194988918 + e = 2.71828182845904523536028747135266249775724709369995957496696763 + pi = 3.14159265358979323846264338327950288419716939937510582097494459 + phi = 1.61803398874989484820458683436563811772030917980576286213544862 + tau = 6.28318530717958647692528676655900576839433879875021164194988918 - Sqrt2 = 1.41421356237309504880168872420969807856967187537694807317667974 - SqrtE = 1.64872127070012814684865078781416357165377610071014801157507931 - SqrtPi = 1.77245385090551602729816748334114518279754945612238712821380779 - SqrtTau = 2.50662827463100050241576528481104525300698674060993831662992357 - SqrtPhi = 1.27201964951406896425242246173749149171560804184009624861664038 + sqrt2 = 1.41421356237309504880168872420969807856967187537694807317667974 + sqrt_e = 1.64872127070012814684865078781416357165377610071014801157507931 + sqrt_pi = 1.77245385090551602729816748334114518279754945612238712821380779 + sqrt_tau = 2.50662827463100050241576528481104525300698674060993831662992357 + sqrt_phi = 1.27201964951406896425242246173749149171560804184009624861664038 - Ln2 = 0.693147180559945309417232121458176568075500134360255254120680009 - Log2E = 1.0 / Ln2 - Ln10 = 2.30258509299404568401799145468436420760110148862877297603332790 - Log10E = 1.0 / Ln10 + ln2 = 0.693147180559945309417232121458176568075500134360255254120680009 + log2_e = 1.0 / ln2 + ln10 = 2.30258509299404568401799145468436420760110148862877297603332790 + log10_e = 1.0 / ln10 ) const ( - MaxI8 = 127 - MinI8 = -128 - MaxI16 = 32767 - MinI16 = -32768 - MaxI32 = 2147483647 - MinI32 = -2147483648 + max_i8 = 127 + min_i8 = -128 + max_i16 = 32767 + min_i16 = -32768 + max_i32 = 2147483647 + min_i32 = -2147483648 // MaxI64 = ((1<<63) - 1) // MinI64 = (-(1 << 63) ) - MaxU8 = 255 - MaxU16 = 65535 - MaxU32 = 4294967295 - MaxU64 = 18446744073709551615 + max_u8 = 255 + max_u16 = 65535 + max_u32 = 4294967295 + max_u64 = 18446744073709551615 ) // Returns the absolute value. @@ -93,7 +93,7 @@ pub fn cosh(a f64) f64 { // degrees convert from degrees to radians. pub fn degrees(radians f64) f64 { - return radians * (180.0 / Pi) + return radians * (180.0 / pi) } // exp calculates exponent of the number (math.pow(math.E, a)). @@ -277,7 +277,7 @@ pub fn pow(a, b f64) f64 { // radians convert from radians to degrees. pub fn radians(degrees f64) f64 { - return degrees * (Pi / 180.0) + return degrees * (pi / 180.0) } // round returns the integer nearest to the provided value. diff --git a/vlib/os/os.v b/vlib/os/os.v index 56c1d3f8c2..02cc1ed1ff 100644 --- a/vlib/os/os.v +++ b/vlib/os/os.v @@ -485,7 +485,7 @@ pub fn dir(path string) string { if path == '.' { return getwd() } - pos := path.last_index(PathSeparator) + pos := path.last_index(path_separator) if pos == -1 { return '.' } @@ -502,7 +502,7 @@ fn path_sans_ext(path string) string { pub fn basedir(path string) string { - pos := path.last_index(PathSeparator) + pos := path.last_index(path_separator) if pos == -1 { return path } @@ -510,7 +510,7 @@ pub fn basedir(path string) string { } pub fn filename(path string) string { - return path.all_after(PathSeparator) + return path.all_after(path_separator) } // get_line returns a one-line string from stdin @@ -626,7 +626,7 @@ pub fn home_dir() string { } home += homepath } - home += PathSeparator + home += path_separator return home } @@ -795,7 +795,7 @@ pub fn walk_ext(path, ext string) []string { if file.starts_with('.') { continue } - p := path + PathSeparator + file + p := path + path_separator + file if os.is_dir(p) { res << walk_ext(p, ext) } @@ -859,9 +859,9 @@ pub fn print_backtrace() { } pub fn mkdir_all(path string) { - mut p := if path.starts_with(os.PathSeparator) { os.PathSeparator } else { '' } - for subdir in path.split(os.PathSeparator) { - p += subdir + os.PathSeparator + mut p := if path.starts_with(os.path_separator) { os.path_separator } else { '' } + for subdir in path.split(os.path_separator) { + p += subdir + os.path_separator if !os.dir_exists(p) { os.mkdir(p) } diff --git a/vlib/os/os_nix.v b/vlib/os/os_nix.v index e2c5374418..3c1e597764 100644 --- a/vlib/os/os_nix.v +++ b/vlib/os/os_nix.v @@ -4,7 +4,6 @@ module os #include const ( - PathSeparator = '/' path_separator = '/' ) diff --git a/vlib/os/os_win.v b/vlib/os/os_win.v index 0da2514b1c..cadfebd0a6 100644 --- a/vlib/os/os_win.v +++ b/vlib/os/os_win.v @@ -4,7 +4,6 @@ module os #include const ( - PathSeparator = '\\' path_separator = '\\' ) diff --git a/vlib/time/time.v b/vlib/time/time.v index 3c4d888fe1..971dc9fb38 100644 --- a/vlib/time/time.v +++ b/vlib/time/time.v @@ -7,7 +7,7 @@ module time import rand const ( - MonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] ) #include @@ -60,17 +60,17 @@ const ( // The unsigned zero year for internal calculations. // Must be 1 mod 400, and times before it will not compute correctly, // but otherwise can be changed at will. - absoluteZeroYear = i64(-292277022399) + absolute_zero_year = i64(-292277022399) - secondsPerMinute = 60 - secondsPerHour = 60 * secondsPerMinute - secondsPerDay = 24 * secondsPerHour - secondsPerWeek = 7 * secondsPerDay - daysPer400Years = 365*400 + 97 - daysPer100Years = 365*100 + 24 - daysPer4Years = 365*4 + 1 + seconds_per_minute = 60 + seconds_per_hour = 60 * seconds_per_minute + seconds_per_day = 24 * seconds_per_hour + seconds_per_week = 7 * seconds_per_day + days_per_400_years = 365*400 + 97 + days_per_100_years = 365*100 + 24 + days_per_4_years = 365*4 + 1 - daysBefore = [ + days_before = [ 0, 31, 31 + 28, @@ -88,33 +88,38 @@ const ( ) +const ( + months_string = 'JanFebMarAprMayJunJulAugSepOctNovDec' + days_string = 'MonTueWedThuFriSatSun' +) + // Based on Go's time package. // Copyright 2009 The Go Authors. pub fn unix(abs int) Time { // Split into time and day. - mut d := abs / secondsPerDay + mut d := abs / seconds_per_day // Account for 400 year cycles. - mut n := d / daysPer400Years + mut n := d / days_per_400_years mut y := 400 * n - d -= daysPer400Years * n + d -= days_per_400_years * n // Cut off 100-year cycles. // The last cycle has one extra leap year, so on the last day - // of that year, day / daysPer100Years will be 4 instead of 3. + // of that year, day / days_per_100_years will be 4 instead of 3. // Cut it back down to 3 by subtracting n>>2. - n = d / daysPer100Years + n = d / days_per_100_years n -= n >> 2 y += 100 * n - d -= daysPer100Years * n + d -= days_per_100_years * n // Cut off 4-year cycles. // The last cycle has a missing leap year, which does not // affect the computation. - n = d / daysPer4Years + n = d / days_per_4_years y += 4 * n - d -= daysPer4Years * n + d -= days_per_4_years * n // Cut off years within a 4-year cycle. // The last year is a leap year, so on the last day of that year, @@ -128,10 +133,10 @@ pub fn unix(abs int) Time { yday := int(d) mut day := yday - year := abs / int(3.154e+7) + 1970 //int(i64(y) + absoluteZeroYear) - hour := int(abs%secondsPerDay) / secondsPerHour - minute := int(abs % secondsPerHour) / secondsPerMinute - second := int(abs % secondsPerMinute) + year := abs / int(3.154e+7) + 1970 //int(i64(y) + absolute_zero_year) + hour := int(abs%seconds_per_day) / seconds_per_hour + minute := int(abs % seconds_per_hour) / seconds_per_minute + second := int(abs % seconds_per_minute) if is_leap_year(year) { // Leap year @@ -149,12 +154,12 @@ pub fn unix(abs int) Time { // The estimate may be too low by at most one month, so adjust. mut month := day / 31 mut begin := 0 - end := int(daysBefore[month+1]) + end := int(days_before[month+1]) if day >= end { month++ begin = end } else { - begin = int(daysBefore[month]) + begin = int(days_before[month]) } month++ // because January is 1 @@ -182,14 +187,10 @@ pub fn (t Time) format() string { return '${t.year}-${t.month:02d}-${t.day:02d} ${t.hour:02d}:${t.minute:02d}' } -const ( - Months = 'JanFebMarAprMayJunJulAugSepOctNovDec' - Days = 'MonTueWedThuFriSatSun' -) pub fn (t Time) smonth() string { i := t.month - 1 - return Months.substr(i * 3, (i + 1) * 3) + return months_string.substr(i * 3, (i + 1) * 3) } // 21:04 @@ -386,7 +387,7 @@ pub fn (t Time) day_of_week() int { // weekday_str() returns the current day in string (upto 3 characters) pub fn (t Time) weekday_str() string { i := t.day_of_week() - 1 - return Days.substr(i * 3, (i + 1) * 3) + return days_string.substr(i * 3, (i + 1) * 3) } struct C.timeval { @@ -450,6 +451,6 @@ pub fn days_in_month(month, year int) ?int { return error('Invalid month: $month') } extra := if month == 2 && is_leap_year(year) {1} else {0} - res := MonthDays[month-1] + extra + res := month_days[month-1] + extra return res }