| 764 | // using escapeChar. Any other characters escaped by escapeChar |
| 765 | // will be included as usual (including escapeChar itself). |
| 766 | function splitWithEscape(value, splitChar, escapeChar) { |
| 767 | var results = []; |
| 768 | var escapeMode = false; |
| 769 | var currentResult = ""; |
| 770 | for (var pos = 0; pos < value.length; pos++) { |
| 771 | if (!escapeMode) { |
| 772 | if (value[pos] === splitChar) { |
| 773 | results.push(currentResult); |
| 774 | currentResult = ""; |
| 775 | } else if (value[pos] === escapeChar) { |
| 776 | escapeMode = true; |
| 777 | } else { |
| 778 | currentResult += value[pos]; |
| 779 | } |
| 780 | } else { |
| 781 | currentResult += value[pos]; |
| 782 | escapeMode = false; |
| 783 | } |
| 784 | } |
| 785 | if (currentResult !== "") { |
| 786 | results.push(currentResult); |
| 787 | } |
| 788 | return results; |
| 789 | } |
| 790 | // Function authored by Yihui/JJ Allaire |
| 791 | window.HTMLWidgets.evaluateStringMember = function(o, member) { |
| 792 | var parts = splitWithEscape(member, '.', '\\'); |