Switch to edit mode.
Name(s): tag_explode_args1: "Returns the name, properties and arguments of a tag."
2: "eg: '<A HREF='/passwd' NOROBOTS TARGET='_new'>'"
3: "=> {'A', {'HREF','/passwd'}, 'NOROBOTS', {'TARGET','_new'}}"
4: tag = $su:trim(args[1])
5: if (length(tag) < 3 || tag[1] != "<" || tag[$] != ">")
6: raise(E_INVARG, "Invalid HTML tag", tag)
7: endif
8: tag = $su:trim(tag[2..$ - 1])
9: output = {}
10: state = 0
11: prop = value = div = ""
12: for x in [1..length(tag)]
13: char = tag[x]
14: if (state == 0)
15: if (char == "=")
16: prop || raise(E_INVARG, "Invalid HTML parameter", args[1])
17: state = 1
18: elseif (char == " " && prop)
19: output = {@output, prop}
20: prop = ""
21: elseif (char != " ")
22: prop = prop + char
23: endif
24: elseif (state == 1)
25: if (char == "\"" || char == "'")
26: div = char
27: else
28: div = " "
29: value = char
30: endif
31: state = 2
32: elseif (state == 2)
33: if (char == div)
34: state = 0
35: output = {@output, {prop, value}}
36: prop = value = ""
37: else
38: value = value + char
39: endif
40: endif
41: endfor
42: if (value)
43: output = {@output, {prop, value}}
44: elseif (prop)
45: output = {@output, prop}
46: endif
47: if (state)
48: prop || raise(E_INVARG, "Invalid final HTML parameter", args[1])
49: endif
50: return output
51: "Last modified by Cecil (#7407) on Tue Jul 23 15:17:58 2002 MDT."