initial release
This commit is contained in:
49
cosmic rage/lua/getstyle.lua
Normal file
49
cosmic rage/lua/getstyle.lua
Normal file
@@ -0,0 +1,49 @@
|
||||
-- getstyle.lua
|
||||
--
|
||||
|
||||
--[[
|
||||
|
||||
See forum thread: http://www.gammon.com.au/forum/?id=7818
|
||||
|
||||
GetStyle:
|
||||
Finds a style run corresponding to a given column
|
||||
|
||||
Returns nil if style run not found (eg. column out of range)
|
||||
|
||||
If style run found returns:
|
||||
* the style table (see below)
|
||||
* the character at that column
|
||||
* the style run number (eg. style 3)
|
||||
|
||||
The style table should contain the following:
|
||||
|
||||
t.text --> text of that (entire) style run
|
||||
t.length --> length of the (entire) style run
|
||||
t.textcolour --> text colour (RGB number)
|
||||
t.backcolour --> background colour (RGB number)
|
||||
t.style --> style bits (1=bold, 2=underline, 4=italic)
|
||||
|
||||
--]]
|
||||
|
||||
function GetStyle (styleRuns, wantedColumn)
|
||||
local currentColumn = 1
|
||||
|
||||
-- check arguments
|
||||
assert (type (styleRuns) == "table",
|
||||
"First argument to GetStyle must be table of style runs")
|
||||
|
||||
assert (type (wantedColumn) == "number" and wantedColumn >= 1,
|
||||
"Second argument to GetStyle must be column number to find")
|
||||
|
||||
-- go through each style
|
||||
for item, style in ipairs (styleRuns) do
|
||||
local position = wantedColumn - currentColumn + 1 -- where letter is in style
|
||||
currentColumn = currentColumn + style.length -- next style starts here
|
||||
if currentColumn > wantedColumn then -- if we are within this style
|
||||
return style, string.sub (style.text, position, position), item -- done
|
||||
end -- if found column
|
||||
end -- for each style
|
||||
|
||||
-- if not found: result is nil
|
||||
|
||||
end -- function GetStyle
|
||||
Reference in New Issue
Block a user