[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: string buffer needs
- From: Asko Kauppi <asko.kauppi@...>
- Date: Wed, 15 Sep 2004 13:49:09 +0300
Referring to the recent discussion on a need for string buffer (general
data buffer, ranges et.al.) has anyone made a API-like list of how that
should really work? I mean, we could do it 'by hand' with Lua, awful
performance but the codeability aspects could be experimented with.
Here's a couple of funcs that I'd personally find a use for in the
remake of Lumikki:
** Find with a range **
int, int [capture_str [,...]]= buffer.findfrom( text_str, start_int,
pattern_str )
This is a variant of 'string.find()' with a starting place (probably,
range?) within a string. Allows me to look for HTML tags etc. within a
huge all-in-one string, without creating an awful lot of intermediate
substrings.
Current implementation: using 'string.find' and 'string.sub'
-----
-- [start_int, stop_int [,capture ...]]= string.findfrom( str,
start_int, pattern_str )
--
local function string_findfrom( str, start, pat )
--
local tbl= { string.find( string.sub(str,start), pat ) }
if not tbl[1] then
return nil
else
tbl[1]= tbl[1]+(start-1)
tbl[2]= tbl[2]+(start-1)
return unpack(tbl)
end
end
** In-place appending **
void= buffer.append( text_str, ... )
Ability to modify a string 'in place', without creating new entries all
over. This is basically the same as "str ..=" (C-like in-place
operator syntax) would be.
Usage: gathering strings together, big data. Perhaps there's a table
function for this, I'll see.. (yes, 'table.concat' but I still needed
to craft a temporary table to collect the strings first)
Current implementation: str= str..whatever
or: table.concat()
Question: does anyone know of the performance difference between
'table.concat' and regular appending?