stsReadFromPList
|
|
stsReadFromPList(filePath,keyPath)
put stsReadFromPlist(pList,"NAT/Airport/NetworkName")
>> "PowerMac G4"
put stsReadFromPlist(pList,"NAT/SharingDevices") into tDevicesA
>> tDevicesA[1] = "en1"
This function lets you read from an OS X pList file (unencoded - Tiger has some pLists encoded) using a "path" of keys in the file. If the value of the data is a simple string, integer, etc., the value is returned. If the value is an array (shown by "<array>" directly under the key in the plist), an array is returned. Note: This does not work with embedded arrays (i.e. <array><array>).
- filePath is the path to the file being examined.
- keyPath is the XML path to the key being examined.
function stsReadFromPlist pFile,pKeyPath if there is a file pFile then put url ("file:" & pFile) into tData set the itemDel to "/" repeat for each item tItem in pKeyPath put offset("" & tItem & " ",tData) into tOffset if tOffset <> 0 then delete char 1 to (tOffset + length("" & tItem & " ")) of tData else return "STSError: Key not found at path '" & pKeyPath & "'" end if end repeat -- remove preceding chars repeat if char 1 of tData = "<" then exit repeat delete char 1 of tData end repeat if char 1 to 7 of tData ="" then -- return an array if matchText(tData,"(?si) (.*?)<\/array>",tElements) then put "" into tRetValA put 0 into tKeyNum repeat add 1 to tKeyNum get matchText(tElements,"(?si)<.*?>(.*?)<\/.*?>",tVal) if it is false then exit repeat else put tVal into tRetValA[tKeyNum] get matchChunk(tElements,"(?si)(<.*?>(.*?)<\/.*?>)",tStart,tEnd) delete char 1 to tEnd of tElements end if end repeat return tRetValA else return "STSError: Could not extract array from key path '" & pKeyPath & "'" end if else -- look for (like - this is used in loginwindow.plist) if matchText(tData,"(?si)<(.*?)\/>",tVal) then return tVal else -- look for Val ,Val , etc. if matchText(tData,"(?si)<.*?>(.*?)<\/.*?>",tVal) then return tVal end if end if return "STSError: Could not extract value from key path '" & pKeyPath & "'" end if else return "STSError: FIle not found." end if end stsReadFromPlist