I don't think you deserved the way she treated you, in any way, shape or form. If there was a misunderstanding about lunch and she'd meant that she would rather just decide it at the time instead of planning it, she could have as easily said that to you as snapped at you. And, it's not like her rudeness is a one time thing anyway.
I think there are two separate things going on here and it's better to keep them separate. The first thing is her treatment of you. It is undeserved, abusive and repeated. You've already given her plenty of chances. Therefore, I think you should cut her off. You sound like a kind, understanding, tolerant friend and you deserve the same type of friends in return.
The second issue is her possible mental state. That is interesting to consider but is not under your control to fix anyway, and your putting up with her nastiness helps no one. Therefore, I don't think it should figure in on your decision of what to do about her.
Perhaps you can try again with her in a few months and see if she's gotten over whatever her problem is, as long as you don't get your hopes up.
I had a good friend of many years turn on me and start that kind of crap. Suddenly, everything I did or said was wrong and usually idiotic as well, apparently. She'd always had a rather negative outlook on life and somewhat entitled attitude, I'd say, but then she turned it all on me. I tried to overlook it, and backed off from her a few times. Nothing changed though, so I cut ties with her.
I cringe to even say this because I generally roll my eyes when anyone else says someone is jealous of them, but it's honestly all I can think of so that's my best guess in my situation. My life has turned out pretty well so far and hers hasn't. And she'd make snide little comments about how I was "lucky," etc. as if trying to establish that I had nothing to do with my successes. Anyway, maybe just another possibility there is that perhaps she feels the need to take you down a peg as a way of "levelling."