1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/*
* Insert_Tag.bsh - a BeanShell macro script for the
* jEdit text editor - inserts opening and closing tags
* around selected text
* Copyright (C) 2001-2010
* John Gellene <jgellene@nyc.rr.com>, Vadim Voituk <vadim@voituk.com>
* http://community.jedit.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the jEdit program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id: Insert_Tag.bsh 23971 2015-08-08 19:37:35Z daleanson $
*/
// Localization
final static String EnterNameTagLabel = jEdit.getProperty("macro.rs.InsertTag.EnterNameTag.label", "Enter name of tag:");
final static String NotEditableMessage = jEdit.getProperty("macro.rs.general.ErrorNotEditableDialog.message", "Buffer is not editable");
// Process
Map tagsTemplate = new TreeMap() {{
put("br", "<br/>");
put("hr", "<hr/>");
put("input", "<input type=\"\" />");
put("img", "<img src=\"\" alt=\"\" />");
put("meta", "<meta http-equiv=\"\" content=\"\" />");
}};
void insertTag()
{
String tag = Macros.input(view, EnterNameTagLabel);
if( tag == null || tag.length() == 0) return;
String text = textArea.getSelectedText();
if(text == null) text = "";
int i;
String[] tags = tag.split("\\s+");
int caret = textArea.getCaretPosition();
StringBuilder buff = new StringBuilder();
for (i=0; i<tags.length; i++) {
String tpl = tagsTemplate.get(tags[i]);
if (tpl == null) {
buff.append('<').append(tags[i]).append('>');
caret += tags[i].length() + 2;
}
else {
buff.append(tpl);
caret += tpl.length();
}
}
buff.append(text);
for (i=tags.length-1; i>=0; i--) {
if (!tagsTemplate.containsKey(tags[i]))
buff.append("</").append(tags[i]).append('>');
}
textArea.setSelectedText(buff.toString());
//if no selected text, put the caret between the tags
if(text.length() == 0)
textArea.setCaretPosition(caret);
}
insertTag();
/*
Macro index data (in DocBook format)
<listitem>
<para><filename>Insert_Tag.bsh</filename></para>
<abstract><para>
Inserts a balanced pair of markup tags as supplied in a input dialog.
</para></abstract>
</listitem>
*/
// end Insert_Tag.bsh
|