util/hex.lua
author Kim Alvefur <zash@zash.se>
Sun, 24 Mar 2024 20:39:42 +0100
changeset 13466 720aed1f5cf2
parent 12359 a0ff5c438e9d
permissions -rw-r--r--
util.startup: Check root after detecting platform and reading config (thanks SigmaTel71) Ensures that startup.detect_platform() runs so know whether to use the POSIX method of checking the current user or something else. Also after reading the config so we know whether the root override setting is set.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6375
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     1
local s_char = string.char;
6548
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     2
local s_format = string.format;
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     3
local s_gsub = string.gsub;
6805
442019e955dc util.hex: Normalize hex to lowercase and discard non-hex input
Kim Alvefur <zash@zash.se>
parents: 6548
diff changeset
     4
local s_lower = string.lower;
6548
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     5
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     6
local char_to_hex = {};
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     7
local hex_to_char = {};
6375
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     8
6548
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     9
do
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    10
	local char, hex;
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    11
	for i = 0,255 do
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    12
		char, hex = s_char(i), s_format("%02x", i);
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    13
		char_to_hex[char] = hex;
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    14
		hex_to_char[hex] = char;
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    15
	end
6375
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    16
end
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    17
6384
3f4809d01783 util.hex: Use locals!
Kim Alvefur <zash@zash.se>
parents: 6375
diff changeset
    18
local function to(s)
6548
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    19
	return (s_gsub(s, ".", char_to_hex));
6375
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    20
end
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    21
6384
3f4809d01783 util.hex: Use locals!
Kim Alvefur <zash@zash.se>
parents: 6375
diff changeset
    22
local function from(s)
6805
442019e955dc util.hex: Normalize hex to lowercase and discard non-hex input
Kim Alvefur <zash@zash.se>
parents: 6548
diff changeset
    23
	return (s_gsub(s_lower(s), "%X*(%x%x)%X*", hex_to_char));
6375
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    24
end
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    25
12359
a0ff5c438e9d util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents: 6805
diff changeset
    26
return {
a0ff5c438e9d util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents: 6805
diff changeset
    27
	encode = to, decode = from;
a0ff5c438e9d util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents: 6805
diff changeset
    28
	-- COMPAT w/pre-0.12:
a0ff5c438e9d util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents: 6805
diff changeset
    29
	to = to, from = from;
a0ff5c438e9d util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents: 6805
diff changeset
    30
};