| 8498 | // Character types for codepoints 0x600 to 0x6ff |
| 8499 | var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm"; |
| 8500 | function charType(code) { |
| 8501 | if (code <= 0xf7) return lowTypes.charAt(code); |
| 8502 | else if (0x590 <= code && code <= 0x5f4) return "R"; |
| 8503 | else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600); |
| 8504 | else if (0x6ee <= code && code <= 0x8ac) return "r"; |
| 8505 | else if (0x2000 <= code && code <= 0x200b) return "w"; |
| 8506 | else if (code == 0x200c) return "b"; |
| 8507 | else return "L"; |
| 8508 | } |
| 8509 | |
| 8510 | var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; |
| 8511 | var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; |