| | 130 | const REPLACE_TABLE = { |
| | 131 | get TITLE () buffer.title, |
| | 132 | get URL () buffer.URL, |
| | 133 | get SEL () { |
| | 134 | if (sel) |
| | 135 | return sel; |
| | 136 | else if (selection.rangeCount < 1) |
| | 137 | return ''; |
| | 138 | |
| | 139 | for (var i=0, c=selection.rangeCount; i<c; i++){ |
| | 140 | sel += selection.getRangeAt(i).toString(); |
| | 141 | } |
| | 142 | return sel; |
| | 143 | }, |
| | 144 | get HTMLSEL () { |
| | 145 | if (htmlsel) |
| | 146 | return sel; |
| | 147 | else if (selection.rangeCount < 1) |
| | 148 | return ''; |
| | 149 | |
| | 150 | var serializer = new XMLSerializer(); |
| | 151 | for (var i=0, c=selection.rangeCount; i<c; i++){ |
| | 152 | htmlsel += serializer.serializeToString(selection.getRangeAt(i).cloneContents()); |
| | 153 | } |
| | 154 | return htmlsel; |
| | 155 | } |
| | 156 | }; |
| | 157 | 'hostname pathname host port protocol search hash'.split(' ').forEach(function (name){ |
| | 158 | REPLACE_TABLE[name.toUpperCase()] = function () content.location && content.location[name]; |
| | 159 | }); |
| | 160 | |
| 159 | | function replacer(value){ //{{{ |
| 160 | | switch(value){ |
| 161 | | case '%TITLE%': |
| 162 | | return buffer.title; |
| 163 | | case '%URL%': |
| 164 | | return buffer.URL; |
| 165 | | case '%SEL%': |
| 166 | | if (sel) |
| 167 | | return sel; |
| 168 | | else if (selection.rangeCount < 1) |
| 169 | | return ''; |
| 170 | | |
| 171 | | for (var i=0, c=selection.rangeCount; i<c; i++){ |
| 172 | | sel += selection.getRangeAt(i).toString(); |
| 173 | | } |
| 174 | | return sel; |
| 175 | | case '%HTMLSEL%': |
| 176 | | if (htmlsel) |
| 177 | | return sel; |
| 178 | | else if (selection.rangeCount < 1) |
| 179 | | return ''; |
| 180 | | |
| 181 | | var serializer = new XMLSerializer(); |
| 182 | | for (var i=0, c=selection.rangeCount; i<c; i++){ |
| 183 | | htmlsel += serializer.serializeToString(selection.getRangeAt(i).cloneContents()); |
| 184 | | } |
| 185 | | return htmlsel; |
| 186 | | } |
| 187 | | return ''; |
| | 204 | function replacer(orig, name){ //{{{ |
| | 205 | if (name == '') |
| | 206 | return '%'; |
| | 207 | if (!REPLACE_TABLE.hasOwnProperty(name)) |
| | 208 | return orig; |
| | 209 | let value = REPLACE_TABLE[name]; |
| | 210 | if (typeof value == 'function') |
| | 211 | return value(); |
| | 212 | else |
| | 213 | return value.toString(); |
| | 214 | return orig; |