load "xmltoken.rb" load "xmlre.rb" # ------------------------------ def tokenizeXml(s) s.scan($xmlTokenRE).map do |x| mkToken(x) end.flatten end def mkToken(t) case # comment when t[0..2] == "" n = t.split[0] n[0..0] = "" XmlEmptyElem.from_s(t) # begin tag when t[0..0] == "<" && t[-1..-1] == ">" XmlBeginTag.from_s(t) # text else XmlText.from_s(t) end end # ------------------------------ def tokenizeAttrl(s) al = {} s.scan($attrListRE).map do |av| k = av[0] v = av[1].chop v[0..0] = "" al[k] = v end al end # ------------------------------