String Handling
His Dad [09-01-18 - 04:27]
diff --git a/HistOfflineBeta.lua b/HistOfflineBeta.lua
index 74a6670..501824b 100644
--- a/HistOfflineBeta.lua
+++ b/HistOfflineBeta.lua
@@ -49,6 +49,7 @@ dofile "./data/WB.lua"
dofile "./data/Trials.lua"
dofile "./data/Special.lua" -- Record of non standard Achievement ID's we need to keep.
dofile "./data/utility.lua" -- utility functions
+dofile "./data/Strings.lua" -- String Handling
--generate_id () -- Generate the file the addon uses to filter Achievement ID's
-- This is used by the in game part history.lua to only record achievements that are used.
diff --git a/data/Strings.lua b/data/Strings.lua
new file mode 100644
index 0000000..7f4fed8
--- /dev/null
+++ b/data/Strings.lua
@@ -0,0 +1,112 @@
+--Functions relating to Strings
+
+
+-- take a string and break by spaces to an array
+split_w = function (astring) -- String sentence
+ if (astring == nil) then
+ print("split_w nil")
+ return {}
+ end
+
+ local words = {}
+ for w in string.gmatch(astring, "%S+") do
+ table.insert(words,w)
+ end
+ return words --array of the words
+end
+split_s = function(astring)
+ local sentences = {}
+ local sofar = ""
+ local words = split_w(astring)
+ if #words < 2 then return(words) end
+
+ for i,s in ipairs(words) do
+ if (sofar == "") then --no leading blank
+ sofar = tostring(s)
+ else
+ sofar = sofar .." " .. tostring(s)
+ end
+
+
+ if (i == #words) then
+ -- add last word unconditionally and return
+ table.insert(sentences,sofar)
+ return sentences
+ end
+
+ if string.find(s,"%.") then
+ table.insert(sentences,sofar)
+ sofar = ""
+ end
+ end
+ print("Should never get here")
+end
+test = "In Veteran White-Gold Tower, become completely engulfed in flame by the Planar Inhibitor's Heat Stroke attack before it completes its Daedric Catastrophe attack. Then stay alive until the Planar Inhibitor is defeated."
+--split = split_w(test)
+--print("returned a table of " .. #split .. " words.")
+
+
+flow_s = function( words_t, max_length )
+--[[ given an array of words { [1]="TENTENTEN0", [2] = "FOUR", [3]="THREE"}
+ return an array of array of words so that the length is not greater than max_length
+with max_length 10
+ { [1] = {[1]="TENTENTEN0"}, --array of 1 value
+ [2] = {[1]="FOUR", [2]="THREE"} --array of 2 value
+ }
+--]]
+ if words_t == nil then
+ print("words_t is nil")
+ return nil
+ end
+
+ if type(max_length) ~= "number" then
+ print("max_length is not a number")
+ return nil
+ end
+
+
+
+ result = {}
+ line_t = {}
+ line_len = 0
+ for i, word in ipairs (words_t) do
+ -- print (word)
+ if (string.len(word) + line_len) > max_length then
+ table.insert(result,line_t)
+ line_t = {}
+ line_len = 0
+ end
+ table.insert(line_t, word)
+ if line_len > 0 then
+ line_len = line_len + string.len(word) +1 --Allow for Spaces
+ else
+ line_len = line_len + string.len(word)
+ end
+ end
+ table.insert(result,line_t)
+ return result
+end
+
+
+ join_s = function (words_tt)
+--given an array of array of words (output from flow_s) Produce a string with \n
+ if words_t == nil then
+ print("parameter nil in join_s")
+ return nil
+ end
+
+ local result = ""
+ for _,words_t in ipairs (words_tt) do
+
+ for _,word in ipairs (words_t) do
+
+
+ end
+
+ end
+
+
+end
+
+print(join_w(split_w(test)))
+