From 57ecd9837e017dd4634f7e81a23794fa9b5bd00b Mon Sep 17 00:00:00 2001 From: drewmutt Date: Fri, 2 Jun 2017 17:13:13 -0700 Subject: [PATCH] Well. well. well. Mostly some small syntax changes, half hearted attempt at find usages. --- gen/com/mwplugin/MediaWikiLexer.java | 281 +++++++++--------- gen/com/mwplugin/parser/MediaWikiParser.java | 222 ++++++++++---- gen/com/mwplugin/psi/MediaWikiTypes.java | 12 +- gen/com/mwplugin/psi/MediaWikiVisitor.java | 8 + out/production/wikimedia/META-INF/plugin.xml | 5 +- .../com/mwplugin/MediaWikiLexer.class | Bin 13155 -> 13146 bytes .../wikimedia/com/mwplugin/mediawiki.bnf | 25 +- .../com/mwplugin/parser/MediaWikiParser.class | Bin 119922 -> 121968 bytes .../mwplugin/psi/MediaWikiTypes$Factory.class | Bin 23519 -> 23786 bytes .../com/mwplugin/psi/MediaWikiTypes.class | Bin 23772 -> 24028 bytes .../com/mwplugin/psi/MediaWikiVisitor.class | Bin 51185 -> 51748 bytes resources/META-INF/plugin.xml | 1 - src/com/mwplugin/MediaWikiAnnotator.java | 9 + .../mwplugin/MediaWikiFindUsagesProvider.java | 30 +- src/com/mwplugin/_MediaWikiLexer.flex | 5 +- src/com/mwplugin/mediawiki.bnf | 25 +- .../ConvertInlineLinkToReferenceQuickFix.java | 35 +++ .../ConvertUrlToCitationQuickFix.java | 9 +- 18 files changed, 421 insertions(+), 246 deletions(-) create mode 100644 src/com/mwplugin/quickfix/ConvertInlineLinkToReferenceQuickFix.java diff --git a/gen/com/mwplugin/MediaWikiLexer.java b/gen/com/mwplugin/MediaWikiLexer.java index d393c1a..f30f257 100644 --- a/gen/com/mwplugin/MediaWikiLexer.java +++ b/gen/com/mwplugin/MediaWikiLexer.java @@ -36,7 +36,7 @@ public class MediaWikiLexer implements FlexLexer { /** * Translates characters to character classes * Chosen bits are [11, 6, 4] - * Total runtime size is 13632 bytes + * Total runtime size is 13600 bytes */ public static int ZZ_CMAP(int ch) { return ZZ_CMAP_A[(ZZ_CMAP_Y[(ZZ_CMAP_Z[ch>>10]<<6)|((ch>>4)&0x3f)]<<4)|(ch&0xf)]; @@ -52,102 +52,102 @@ public static int ZZ_CMAP(int ch) { /* The ZZ_CMAP_Y table has 2752 entries */ static final char ZZ_CMAP_Y[] = zzUnpackCMap( - "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\2\1\1\10\1\11\1\12\1\13\1\12\1\14\34\12\1"+ - "\15\1\16\1\17\10\1\1\20\1\21\1\12\1\22\4\12\1\23\10\12\1\24\12\12\1\25\1\12"+ - "\1\26\1\25\1\12\1\27\4\1\1\12\1\30\1\31\2\1\2\12\1\30\1\1\1\32\1\25\5\12\1"+ - "\33\1\34\1\35\1\1\1\36\1\12\1\1\1\37\5\12\1\40\1\41\1\42\1\12\1\30\1\43\1"+ - "\12\1\44\1\45\1\1\1\12\1\46\4\1\1\12\1\47\4\1\1\50\2\12\1\51\1\1\1\52\1\16"+ - "\1\25\1\53\1\54\1\55\1\56\1\57\1\60\2\16\1\61\1\54\1\55\1\62\1\1\1\63\1\1"+ - "\1\64\1\65\1\22\1\55\1\66\1\1\1\67\1\16\1\70\1\71\1\54\1\55\1\66\1\1\1\60"+ - "\1\16\1\41\1\72\1\73\1\74\1\75\1\1\1\67\2\1\1\76\1\36\1\55\1\51\1\1\1\77\1"+ - "\16\1\1\1\76\1\36\1\55\1\100\1\1\1\57\1\16\1\101\1\76\1\36\1\12\1\102\1\57"+ - "\1\103\1\16\1\42\1\104\1\105\1\12\1\106\1\107\3\1\1\25\2\12\1\110\1\107\3"+ - "\1\1\111\1\112\1\113\1\114\1\115\1\116\2\1\1\67\3\1\1\117\1\12\1\120\1\1\1"+ - "\121\7\1\2\12\1\30\1\103\1\1\1\122\1\123\1\124\1\125\1\1\2\12\1\126\2\12\1"+ - "\127\24\12\1\130\1\131\2\12\1\130\2\12\1\132\1\133\1\14\3\12\1\133\3\12\1"+ - "\30\2\1\1\12\1\1\5\12\1\134\1\25\45\12\1\135\1\12\1\25\1\30\4\12\1\30\1\136"+ - "\1\137\1\16\1\12\1\16\1\12\1\16\1\137\1\67\3\12\1\140\1\1\1\141\4\1\5\12\1"+ - "\27\2\12\1\142\4\12\1\40\1\12\1\143\3\1\1\12\1\144\1\47\2\12\1\145\1\12\1"+ - "\75\3\1\1\12\1\107\3\12\1\47\4\1\1\146\5\1\1\104\2\12\1\140\1\147\3\1\1\150"+ - "\1\12\1\151\1\42\2\12\1\40\1\1\2\12\1\140\1\1\1\37\1\42\1\12\1\144\6\1\1\152"+ - "\1\153\14\12\4\1\21\12\1\134\2\12\1\134\1\154\1\12\1\144\3\12\1\155\1\156"+ - "\1\157\1\120\1\156\1\1\1\160\1\161\4\1\1\162\1\1\1\120\6\1\1\163\1\164\1\165"+ - "\1\166\1\167\3\1\1\170\10\1\1\171\136\1\2\12\1\143\2\12\1\143\10\12\1\172"+ - "\1\173\2\12\1\126\3\12\1\174\1\1\1\12\1\107\4\175\4\1\1\103\35\1\1\176\2\1"+ - "\1\177\1\25\4\12\1\200\1\25\4\12\1\127\1\104\1\12\1\144\1\25\4\12\1\143\1"+ - "\1\1\12\1\30\3\1\1\12\40\1\133\12\1\40\4\1\135\12\1\40\2\1\10\12\1\120\4\1"+ - "\2\12\1\144\20\12\1\120\1\12\1\201\1\1\2\12\1\143\1\103\1\12\1\144\4\12\1"+ - "\40\2\1\1\202\1\203\5\12\1\204\1\12\1\144\1\27\3\1\1\202\1\205\1\12\1\31\1"+ - "\1\3\12\1\140\1\203\2\12\1\140\3\1\1\206\1\42\1\12\1\40\1\12\1\107\1\1\1\12"+ - "\1\120\1\50\2\12\1\31\1\103\1\1\1\207\1\210\2\12\1\46\1\1\1\211\1\1\1\12\1"+ - "\212\3\12\1\213\1\214\1\215\1\30\1\64\1\216\1\217\1\175\2\12\1\127\1\40\7"+ - "\12\1\31\1\1\72\12\1\140\1\12\1\220\2\12\1\145\20\1\26\12\1\144\6\12\1\75"+ - "\2\1\1\107\1\221\1\55\1\222\1\223\6\12\1\16\1\1\1\150\25\12\1\144\1\1\4\12"+ - "\1\203\2\12\1\27\2\1\1\145\7\1\1\207\7\12\1\120\2\1\1\25\1\30\1\25\1\30\1"+ - "\224\4\12\1\143\1\225\1\226\2\1\1\227\1\12\1\14\1\230\2\144\2\1\7\12\1\30"+ - "\30\1\1\12\1\120\3\12\1\67\2\1\2\12\1\1\1\12\1\231\2\12\1\40\1\12\1\144\2"+ - "\12\1\232\3\1\11\12\1\144\6\1\2\12\1\27\3\12\1\140\11\1\23\12\1\107\1\12\1"+ - "\40\1\27\11\1\1\233\2\12\1\234\1\12\1\40\1\12\1\107\1\12\1\143\4\1\1\12\1"+ - "\235\1\12\1\40\1\12\1\75\4\1\3\12\1\236\4\1\1\67\1\237\1\12\1\140\2\1\1\12"+ - "\1\120\1\12\1\120\2\1\1\117\1\12\1\47\1\1\3\12\1\40\1\12\1\40\1\12\1\31\1"+ - "\12\1\16\6\1\4\12\1\46\3\1\3\12\1\31\3\12\1\31\60\1\1\150\2\12\1\27\4\1\1"+ - "\150\2\12\2\1\1\12\1\46\1\1\1\150\1\12\1\107\2\1\2\12\1\240\1\150\2\12\1\31"+ - "\1\241\1\242\2\1\1\12\1\22\1\145\5\1\1\243\1\244\1\46\2\12\1\143\2\1\1\71"+ - "\1\54\1\55\1\66\1\1\1\245\1\16\21\1\3\12\1\1\1\246\13\1\2\12\1\143\2\1\1\247"+ - "\2\1\3\12\1\1\1\250\3\1\2\12\1\30\5\1\1\12\1\75\30\1\4\12\1\1\1\103\34\1\3"+ - "\12\1\46\20\1\71\12\1\75\16\1\14\12\1\140\53\1\2\12\1\143\75\1\44\12\1\107"+ - "\33\1\43\12\1\46\1\12\1\143\7\1\1\12\1\144\1\1\3\12\1\1\1\140\1\1\1\150\1"+ - "\251\1\12\67\1\4\12\1\47\1\67\3\1\1\150\6\1\1\16\77\1\6\12\1\30\1\120\1\46"+ - "\1\75\66\1\5\12\1\207\3\12\1\137\1\252\1\253\1\254\3\12\1\255\1\256\1\12\1"+ - "\257\1\260\1\36\24\12\1\261\1\12\1\36\1\127\1\12\1\127\1\12\1\207\1\12\1\207"+ - "\1\143\1\12\1\143\1\12\1\55\1\12\1\55\1\12\1\211\3\1\14\12\1\47\123\1\1\254"+ - "\1\12\1\262\1\263\1\264\1\265\1\266\1\267\1\270\1\145\1\271\1\145\24\1\55"+ - "\12\1\107\2\1\103\12\1\47\15\12\1\144\150\12\1\16\25\1\41\12\1\144\36\1"); - - /* The ZZ_CMAP_A table has 2976 entries */ + "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\14\1\15\34"+ + "\14\1\16\1\17\1\20\10\11\1\21\1\22\1\14\1\23\4\14\1\24\10\14\1\25\12\14\1"+ + "\26\1\14\1\27\1\26\1\14\1\30\4\11\1\14\1\31\1\32\2\11\2\14\1\31\1\11\1\33"+ + "\1\26\5\14\1\34\1\35\1\36\1\11\1\37\1\14\1\11\1\40\5\14\1\41\1\42\1\43\1\14"+ + "\1\31\1\44\1\14\1\45\1\46\1\11\1\14\1\47\4\11\1\14\1\50\4\11\1\51\2\14\1\52"+ + "\1\11\1\53\1\17\1\26\1\54\1\55\1\56\1\57\1\60\1\61\2\17\1\62\1\55\1\56\1\63"+ + "\1\11\1\64\1\11\1\65\1\66\1\23\1\56\1\67\1\11\1\70\1\17\1\71\1\72\1\55\1\56"+ + "\1\67\1\11\1\61\1\17\1\42\1\73\1\74\1\75\1\76\1\11\1\70\2\11\1\77\1\37\1\56"+ + "\1\52\1\11\1\100\1\17\1\11\1\77\1\37\1\56\1\101\1\11\1\60\1\17\1\102\1\77"+ + "\1\37\1\14\1\103\1\60\1\104\1\17\1\43\1\105\1\106\1\14\1\107\1\110\3\11\1"+ + "\26\2\14\1\111\1\110\3\11\1\112\1\113\1\114\1\115\1\116\1\117\2\11\1\70\3"+ + "\11\1\120\1\14\1\121\1\11\1\122\7\11\2\14\1\31\1\104\1\11\1\123\1\124\1\125"+ + "\1\126\1\11\2\14\1\127\2\14\1\130\24\14\1\131\1\132\2\14\1\131\2\14\1\133"+ + "\1\134\1\15\3\14\1\134\3\14\1\31\2\11\1\14\1\11\5\14\1\135\1\26\45\14\1\136"+ + "\1\14\1\26\1\31\4\14\1\31\1\137\1\140\1\17\1\14\1\17\1\14\1\17\1\140\1\70"+ + "\3\14\1\141\1\11\1\142\4\11\5\14\1\30\2\14\1\143\4\14\1\41\1\14\1\144\3\11"+ + "\1\14\1\145\1\50\2\14\1\146\1\14\1\76\3\11\1\14\1\110\3\14\1\50\4\11\1\147"+ + "\5\11\1\105\2\14\1\141\1\150\3\11\1\151\1\14\1\152\1\43\2\14\1\41\1\11\2\14"+ + "\1\141\1\11\1\40\1\43\1\14\1\145\6\11\1\153\1\154\14\14\4\11\21\14\1\135\2"+ + "\14\1\135\1\155\1\14\1\145\3\14\1\156\1\157\1\160\1\121\1\157\2\11\1\161\4"+ + "\11\1\162\1\11\1\121\6\11\1\163\1\164\1\165\1\166\1\167\3\11\1\170\147\11"+ + "\2\14\1\144\2\14\1\144\10\14\1\171\1\172\2\14\1\127\3\14\1\173\1\11\1\14\1"+ + "\110\4\174\4\11\1\104\35\11\1\175\2\11\1\176\1\26\4\14\1\177\1\26\4\14\1\130"+ + "\1\105\1\14\1\145\1\26\4\14\1\144\1\11\1\14\1\31\3\11\1\14\40\11\133\14\1"+ + "\41\4\11\135\14\1\41\2\11\10\14\1\121\4\11\2\14\1\145\20\14\1\121\1\14\1\200"+ + "\1\11\2\14\1\144\1\104\1\14\1\145\4\14\1\41\2\11\1\201\1\202\5\14\1\203\1"+ + "\14\1\145\1\30\3\11\1\201\1\204\1\14\1\32\1\11\3\14\1\141\1\202\2\14\1\141"+ + "\3\11\1\205\1\43\1\14\1\41\1\14\1\110\1\11\1\14\1\121\1\51\2\14\1\32\1\104"+ + "\1\11\1\206\1\207\2\14\1\47\1\11\1\210\1\11\1\14\1\211\3\14\1\212\1\213\1"+ + "\214\1\31\1\65\1\215\1\216\1\174\2\14\1\130\1\41\7\14\1\32\1\11\72\14\1\141"+ + "\1\14\1\217\2\14\1\146\20\11\26\14\1\145\6\14\1\76\2\11\1\110\1\220\1\56\1"+ + "\221\1\222\6\14\1\17\1\11\1\151\25\14\1\145\1\11\4\14\1\202\2\14\1\30\2\11"+ + "\1\146\7\11\1\206\7\14\1\121\2\11\1\26\1\31\1\26\1\31\1\223\4\14\1\144\1\224"+ + "\1\225\2\11\1\226\1\14\1\15\1\227\2\145\2\11\7\14\1\31\30\11\1\14\1\121\3"+ + "\14\1\70\2\11\2\14\1\11\1\14\1\230\2\14\1\41\1\14\1\145\2\14\1\231\3\11\11"+ + "\14\1\145\6\11\2\14\1\30\3\14\1\141\11\11\23\14\1\110\1\14\1\41\1\30\11\11"+ + "\1\232\2\14\1\233\1\14\1\41\1\14\1\110\1\14\1\144\4\11\1\14\1\234\1\14\1\41"+ + "\1\14\1\76\4\11\3\14\1\235\4\11\1\70\1\236\1\14\1\141\2\11\1\14\1\121\1\14"+ + "\1\121\2\11\1\120\1\14\1\50\1\11\3\14\1\41\1\14\1\41\1\14\1\32\1\14\1\17\6"+ + "\11\4\14\1\47\3\11\3\14\1\32\3\14\1\32\60\11\1\151\2\14\1\30\4\11\1\151\2"+ + "\14\2\11\1\14\1\47\1\11\1\151\1\14\1\110\2\11\2\14\1\237\1\151\2\14\1\32\1"+ + "\240\1\241\2\11\1\14\1\23\1\146\5\11\1\242\1\243\1\47\2\14\1\144\2\11\1\72"+ + "\1\55\1\56\1\67\1\11\1\244\1\17\21\11\3\14\1\11\1\245\13\11\2\14\1\144\2\11"+ + "\1\246\2\11\3\14\1\11\1\247\3\11\2\14\1\31\5\11\1\14\1\76\30\11\4\14\1\11"+ + "\1\104\34\11\3\14\1\47\20\11\71\14\1\76\16\11\14\14\1\141\53\11\2\14\1\144"+ + "\75\11\44\14\1\110\33\11\43\14\1\47\1\14\1\144\7\11\1\14\1\145\1\11\3\14\1"+ + "\11\1\141\1\11\1\151\1\250\1\14\67\11\4\14\1\50\1\70\3\11\1\151\6\11\1\17"+ + "\77\11\6\14\1\31\1\121\1\47\1\76\66\11\5\14\1\206\3\14\1\140\1\251\1\252\1"+ + "\253\3\14\1\254\1\255\1\14\1\256\1\257\1\37\24\14\1\260\1\14\1\37\1\130\1"+ + "\14\1\130\1\14\1\206\1\14\1\206\1\144\1\14\1\144\1\14\1\56\1\14\1\56\1\14"+ + "\1\210\3\11\14\14\1\50\123\11\1\253\1\14\1\261\1\262\1\263\1\264\1\265\1\266"+ + "\1\267\1\146\1\270\1\146\24\11\55\14\1\110\2\11\103\14\1\50\15\14\1\145\150"+ + "\14\1\17\25\11\41\14\1\145\36\11"); + + /* The ZZ_CMAP_A table has 2960 entries */ static final char ZZ_CMAP_A[] = zzUnpackCMap( - "\11\0\1\6\1\1\2\0\1\1\22\0\1\36\1\15\1\37\3\7\1\34\1\20\3\7\1\12\1\7\1\11"+ - "\1\7\1\24\12\5\2\7\1\16\1\31\1\17\2\7\32\4\1\32\1\0\1\33\1\7\1\35\1\7\1\26"+ - "\3\3\1\22\1\23\1\25\4\3\1\27\5\3\1\21\6\3\1\30\1\3\1\14\1\10\1\13\1\7\13\0"+ - "\1\2\5\0\2\7\3\0\1\2\1\0\1\7\2\0\1\2\2\0\1\7\2\0\27\2\1\7\17\2\1\0\12\2\4"+ - "\0\14\2\16\0\5\2\7\0\1\2\1\0\1\2\1\0\5\2\1\0\2\2\2\0\4\2\1\0\1\2\6\0\1\2\1"+ - "\0\3\2\1\0\1\2\1\0\4\2\1\0\23\2\1\0\13\2\10\0\6\2\1\0\26\2\2\0\1\2\6\0\10"+ - "\2\10\0\13\2\5\0\3\2\33\0\6\2\1\0\1\2\17\0\2\2\7\0\2\2\12\0\3\2\2\0\2\2\1"+ - "\0\16\2\15\0\11\2\13\0\1\2\30\0\6\2\4\0\2\2\4\0\1\2\5\0\6\2\4\0\1\2\11\0\1"+ - "\2\3\0\1\2\7\0\11\2\7\0\5\2\17\0\26\2\3\0\1\2\2\0\1\2\7\0\11\2\4\0\10\2\2"+ - "\0\2\2\2\0\26\2\1\0\7\2\1\0\1\2\3\0\4\2\3\0\1\2\20\0\1\2\15\0\2\2\1\0\1\2"+ - "\5\0\6\2\4\0\2\2\1\0\2\2\1\0\2\2\1\0\2\2\17\0\4\2\1\0\1\2\3\0\3\2\20\0\11"+ - "\2\1\0\2\2\1\0\2\2\1\0\5\2\3\0\1\2\2\0\1\2\30\0\1\2\13\0\10\2\2\0\1\2\3\0"+ - "\1\2\1\0\6\2\3\0\3\2\1\0\4\2\3\0\2\2\1\0\1\2\1\0\2\2\3\0\2\2\3\0\3\2\3\0\14"+ - "\2\13\0\10\2\1\0\2\2\10\0\3\2\5\0\4\2\1\0\5\2\3\0\1\2\3\0\2\2\15\0\13\2\2"+ - "\0\1\2\21\0\1\2\5\0\22\2\3\0\10\2\1\0\11\2\1\0\1\2\2\0\7\2\11\0\1\2\1\0\2"+ - "\2\15\0\2\2\1\0\1\2\2\0\2\2\1\0\1\2\2\0\1\2\6\0\4\2\1\0\7\2\1\0\3\2\1\0\1"+ - "\2\1\0\1\2\2\0\2\2\1\0\4\2\1\0\2\2\11\0\1\2\2\0\5\2\1\0\1\2\25\0\14\2\1\0"+ - "\24\2\13\0\5\2\3\0\6\2\4\0\4\2\3\0\1\2\3\0\2\2\7\0\3\2\4\0\15\2\14\0\1\2\1"+ - "\0\6\2\1\0\1\2\5\0\1\2\2\0\13\2\1\0\15\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0\4\2\2"+ - "\0\1\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0\4\2\2\0\16\2\2\0\6\2\2\0\15\2\2\0\1\2\1"+ - "\0\10\2\7\0\15\2\1\0\6\2\23\0\1\2\4\0\1\2\3\0\11\2\1\0\1\2\5\0\17\2\1\0\16"+ - "\2\2\0\14\2\13\0\1\2\15\0\7\2\7\0\16\2\15\0\2\2\11\0\4\2\1\0\4\2\3\0\2\2\11"+ - "\0\10\2\1\0\1\2\1\0\1\2\1\0\1\2\1\0\6\2\1\0\7\2\1\0\1\2\3\0\3\2\1\0\7\2\3"+ - "\0\4\2\2\0\6\2\4\0\1\7\2\0\2\7\3\0\2\7\2\0\2\7\2\0\1\7\1\0\1\7\3\0\1\7\12"+ - "\0\1\2\15\0\1\2\2\0\1\2\4\0\1\2\2\0\12\2\1\0\1\2\3\0\5\2\6\0\1\2\1\0\1\2\1"+ - "\0\1\2\1\0\4\2\1\0\13\2\2\0\4\2\5\0\5\2\4\0\1\2\4\0\2\2\15\0\1\7\15\0\5\2"+ - "\6\0\4\2\3\0\2\2\14\0\10\2\7\0\10\2\1\0\7\2\2\0\2\7\2\0\2\2\5\0\4\7\1\0\5"+ - "\2\5\0\2\2\3\0\7\2\6\0\3\2\12\0\2\2\13\0\11\2\2\0\27\2\2\0\7\2\1\0\3\2\1\0"+ - "\4\2\1\0\4\2\2\0\6\2\3\0\1\2\1\0\1\2\2\0\5\2\1\0\12\2\12\0\5\2\1\0\3\2\1\0"+ - "\10\2\4\0\7\2\3\0\1\2\3\0\2\2\1\0\1\2\3\0\2\2\2\0\5\2\2\0\1\2\1\0\1\2\30\0"+ - "\3\2\3\0\6\2\2\0\6\2\2\0\6\2\11\0\7\2\4\0\5\2\3\0\5\2\5\0\1\2\1\0\10\2\1\0"+ - "\5\2\1\0\1\2\1\0\2\2\1\0\2\2\1\0\12\2\6\0\12\2\2\0\6\2\2\0\6\2\2\0\6\2\2\0"+ - "\3\2\3\0\14\2\1\0\16\2\1\0\2\2\1\0\2\2\1\0\10\2\6\0\4\2\4\0\16\2\2\0\1\2\1"+ - "\0\14\2\1\0\2\2\3\0\1\2\2\0\4\2\1\0\2\2\12\0\10\2\6\0\6\2\1\0\3\2\1\0\12\2"+ - "\3\0\1\2\12\0\4\2\25\0\1\2\1\0\1\2\3\0\7\2\1\0\1\2\1\0\4\2\1\0\17\2\1\0\2"+ - "\2\14\0\3\2\4\0\2\2\1\0\1\2\20\0\4\2\10\0\1\2\13\0\10\2\5\0\3\2\2\0\1\2\2"+ - "\0\2\2\2\0\4\2\1\0\14\2\1\0\1\2\1\0\7\2\1\0\21\2\1\0\4\2\2\0\10\2\1\0\7\2"+ - "\1\0\14\2\1\0\4\2\1\0\5\2\1\0\1\2\3\0\14\2\2\0\10\2\1\0\2\2\1\0\1\2\2\0\1"+ - "\2\1\0\12\2\1\0\4\2\1\0\1\2\1\0\1\2\6\0\1\2\4\0\1\2\1\0\1\2\1\0\1\2\1\0\3"+ - "\2\1\0\2\2\1\0\1\2\2\0\1\2\1\0\1\2\1\0\1\2\1\0\1\2\1\0\1\2\1\0\2\2\1\0\1\2"+ - "\2\0\4\2\1\0\7\2\1\0\4\2\1\0\4\2\1\0\1\2\1\0\12\2\1\0\5\2\1\0\3\2\1\0\5\2"+ - "\1\0\5\2"); + "\11\21\1\20\1\2\2\16\1\2\22\21\1\40\1\27\1\41\3\0\1\36\1\30\3\0\1\24\1\0\1"+ + "\23\1\0\1\32\12\6\2\0\1\7\1\33\1\17\2\0\32\5\1\34\1\21\1\35\1\0\1\37\1\0\1"+ + "\11\3\4\1\13\1\31\1\10\4\4\1\12\5\4\1\14\6\4\1\15\1\4\1\26\1\22\1\25\1\0\1"+ + "\21\5\0\1\1\44\0\1\3\12\0\1\3\4\0\1\3\5\0\27\3\1\0\12\3\4\0\14\3\16\0\5\3"+ + "\7\0\1\3\1\0\1\3\1\0\5\3\1\0\2\3\2\0\4\3\1\0\1\3\6\0\1\3\1\0\3\3\1\0\1\3\1"+ + "\0\4\3\1\0\23\3\1\0\13\3\10\0\6\3\1\0\26\3\2\0\1\3\6\0\10\3\10\0\13\3\5\0"+ + "\3\3\33\0\6\3\1\0\1\3\17\0\2\3\7\0\2\3\12\0\3\3\2\0\2\3\1\0\16\3\15\0\11\3"+ + "\13\0\1\3\30\0\6\3\4\0\2\3\4\0\1\3\5\0\6\3\4\0\1\3\11\0\1\3\3\0\1\3\7\0\11"+ + "\3\7\0\5\3\17\0\26\3\3\0\1\3\2\0\1\3\7\0\11\3\4\0\10\3\2\0\2\3\2\0\26\3\1"+ + "\0\7\3\1\0\1\3\3\0\4\3\3\0\1\3\20\0\1\3\15\0\2\3\1\0\1\3\5\0\6\3\4\0\2\3\1"+ + "\0\2\3\1\0\2\3\1\0\2\3\17\0\4\3\1\0\1\3\3\0\3\3\20\0\11\3\1\0\2\3\1\0\2\3"+ + "\1\0\5\3\3\0\1\3\2\0\1\3\30\0\1\3\13\0\10\3\2\0\1\3\3\0\1\3\1\0\6\3\3\0\3"+ + "\3\1\0\4\3\3\0\2\3\1\0\1\3\1\0\2\3\3\0\2\3\3\0\3\3\3\0\14\3\13\0\10\3\1\0"+ + "\2\3\10\0\3\3\5\0\4\3\1\0\5\3\3\0\1\3\3\0\2\3\15\0\13\3\2\0\1\3\21\0\1\3\5"+ + "\0\22\3\3\0\10\3\1\0\11\3\1\0\1\3\2\0\7\3\11\0\1\3\1\0\2\3\15\0\2\3\1\0\1"+ + "\3\2\0\2\3\1\0\1\3\2\0\1\3\6\0\4\3\1\0\7\3\1\0\3\3\1\0\1\3\1\0\1\3\2\0\2\3"+ + "\1\0\4\3\1\0\2\3\11\0\1\3\2\0\5\3\1\0\1\3\25\0\14\3\1\0\24\3\13\0\5\3\3\0"+ + "\6\3\4\0\4\3\3\0\1\3\3\0\2\3\7\0\3\3\4\0\15\3\14\0\1\3\1\0\6\3\1\0\1\3\5\0"+ + "\1\3\2\0\13\3\1\0\15\3\1\0\4\3\2\0\7\3\1\0\1\3\1\0\4\3\2\0\1\3\1\0\4\3\2\0"+ + "\7\3\1\0\1\3\1\0\4\3\2\0\16\3\2\0\6\3\2\0\15\3\2\0\1\3\1\0\10\3\7\0\15\3\1"+ + "\0\6\3\23\0\1\3\4\0\1\3\3\0\11\3\1\0\1\3\5\0\17\3\1\0\16\3\2\0\14\3\13\0\1"+ + "\3\15\0\7\3\7\0\16\3\15\0\2\3\11\0\4\3\1\0\4\3\3\0\2\3\11\0\10\3\1\0\1\3\1"+ + "\0\1\3\1\0\1\3\1\0\6\3\1\0\7\3\1\0\1\3\3\0\3\3\1\0\7\3\3\0\4\3\2\0\6\3\14"+ + "\0\2\1\7\0\1\3\15\0\1\3\2\0\1\3\4\0\1\3\2\0\12\3\1\0\1\3\3\0\5\3\6\0\1\3\1"+ + "\0\1\3\1\0\1\3\1\0\4\3\1\0\13\3\2\0\4\3\5\0\5\3\4\0\1\3\4\0\2\3\13\0\5\3\6"+ + "\0\4\3\3\0\2\3\14\0\10\3\7\0\10\3\1\0\7\3\6\0\2\3\12\0\5\3\5\0\2\3\3\0\7\3"+ + "\6\0\3\3\12\0\2\3\13\0\11\3\2\0\27\3\2\0\7\3\1\0\3\3\1\0\4\3\1\0\4\3\2\0\6"+ + "\3\3\0\1\3\1\0\1\3\2\0\5\3\1\0\12\3\12\0\5\3\1\0\3\3\1\0\10\3\4\0\7\3\3\0"+ + "\1\3\3\0\2\3\1\0\1\3\3\0\2\3\2\0\5\3\2\0\1\3\1\0\1\3\30\0\3\3\3\0\6\3\2\0"+ + "\6\3\2\0\6\3\11\0\7\3\4\0\5\3\3\0\5\3\5\0\1\3\1\0\10\3\1\0\5\3\1\0\1\3\1\0"+ + "\2\3\1\0\2\3\1\0\12\3\6\0\12\3\2\0\6\3\2\0\6\3\2\0\6\3\2\0\3\3\3\0\14\3\1"+ + "\0\16\3\1\0\2\3\1\0\2\3\1\0\10\3\6\0\4\3\4\0\16\3\2\0\1\3\1\0\14\3\1\0\2\3"+ + "\3\0\1\3\2\0\4\3\1\0\2\3\12\0\10\3\6\0\6\3\1\0\3\3\1\0\12\3\3\0\1\3\12\0\4"+ + "\3\25\0\1\3\1\0\1\3\3\0\7\3\1\0\1\3\1\0\4\3\1\0\17\3\1\0\2\3\14\0\3\3\4\0"+ + "\2\3\1\0\1\3\20\0\4\3\10\0\1\3\13\0\10\3\5\0\3\3\2\0\1\3\2\0\2\3\2\0\4\3\1"+ + "\0\14\3\1\0\1\3\1\0\7\3\1\0\21\3\1\0\4\3\2\0\10\3\1\0\7\3\1\0\14\3\1\0\4\3"+ + "\1\0\5\3\1\0\1\3\3\0\14\3\2\0\10\3\1\0\2\3\1\0\1\3\2\0\1\3\1\0\12\3\1\0\4"+ + "\3\1\0\1\3\1\0\1\3\6\0\1\3\4\0\1\3\1\0\1\3\1\0\1\3\1\0\3\3\1\0\2\3\1\0\1\3"+ + "\2\0\1\3\1\0\1\3\1\0\1\3\1\0\1\3\1\0\1\3\1\0\2\3\1\0\1\3\2\0\4\3\1\0\7\3\1"+ + "\0\4\3\1\0\4\3\1\0\1\3\1\0\12\3\1\0\5\3\1\0\3\3\1\0\5\3\1\0\5\3"); /** * Translates DFA states to action switch labels. @@ -156,12 +156,13 @@ public static int ZZ_CMAP(int ch) { private static final String ZZ_ACTION_PACKED_0 = "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7"+ - "\1\10\1\11\1\10\2\1\1\10\1\12\1\13\2\10"+ - "\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23"+ + "\1\10\1\11\1\12\1\13\1\1\2\10\3\1\1\14"+ + "\1\15\1\16\1\17\1\20\1\21\1\22\4\0\1\23"+ "\1\24\1\25\1\26\1\0\1\27\1\30\1\31\1\32"+ - "\4\0\1\33\1\34\1\35\1\36\1\37\1\40\5\0"+ - "\1\41\1\42\1\43\1\44\4\0\1\45\1\46\3\0"+ - "\1\47\1\50\1\51\7\0\1\52\1\53"; + "\1\33\1\34\1\35\1\36\1\37\5\0\1\40\1\41"+ + "\1\42\1\0\1\43\1\44\3\0\1\45\1\0\1\46"+ + "\2\0\1\47\1\50\2\0\1\51\4\0\1\52\1\0"+ + "\1\53"; private static int [] zzUnpackAction() { int [] result = new int[74]; @@ -189,16 +190,16 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\40\0\40\0\40\0\40\0\40\0\40\0\40"+ - "\0\40\0\100\0\140\0\200\0\240\0\300\0\340\0\40"+ - "\0\u0100\0\u0120\0\u0140\0\u0160\0\u0180\0\40\0\40\0\40"+ - "\0\40\0\40\0\40\0\40\0\40\0\u01a0\0\40\0\40"+ - "\0\40\0\40\0\u01c0\0\u01e0\0\u0200\0\u0220\0\u0240\0\40"+ - "\0\u0260\0\40\0\40\0\40\0\u0280\0\u02a0\0\u02c0\0\u02e0"+ - "\0\u0300\0\u0320\0\u0340\0\40\0\u0360\0\u0380\0\u03a0\0\u03c0"+ - "\0\u03e0\0\u0400\0\40\0\u0420\0\u0440\0\u0460\0\40\0\40"+ - "\0\40\0\u0480\0\u04a0\0\u04c0\0\u04e0\0\u0500\0\u0520\0\u0540"+ - "\0\40\0\40"; + "\0\0\0\42\0\42\0\42\0\42\0\42\0\42\0\104"+ + "\0\42\0\42\0\42\0\146\0\210\0\252\0\314\0\356"+ + "\0\u0110\0\u0132\0\u0154\0\u0176\0\u0198\0\42\0\42\0\42"+ + "\0\42\0\u01ba\0\u01dc\0\u01fe\0\u0220\0\42\0\42\0\42"+ + "\0\42\0\u0242\0\42\0\42\0\42\0\42\0\u0264\0\42"+ + "\0\u0286\0\42\0\42\0\u02a8\0\u02ca\0\u02ec\0\u030e\0\u0330"+ + "\0\42\0\u0352\0\u0374\0\u0396\0\u03b8\0\42\0\u03da\0\u03fc"+ + "\0\u041e\0\u0440\0\u0462\0\42\0\u0484\0\u04a6\0\42\0\42"+ + "\0\u04c8\0\u04ea\0\42\0\u050c\0\u052e\0\u0550\0\u0572\0\u0550"+ + "\0\u0594\0\42"; private static int [] zzUnpackRowMap() { int [] result = new int[74]; @@ -224,25 +225,26 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) { private static final int [] ZZ_TRANS = zzUnpackTrans(); private static final String ZZ_TRANS_PACKED_0 = - "\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11"+ - "\1\12\1\13\1\11\1\14\1\15\1\16\1\17\1\20"+ - "\1\21\3\5\1\22\4\5\1\23\1\24\1\25\1\26"+ - "\1\27\1\30\1\31\50\0\1\32\1\33\1\34\1\35"+ - "\35\0\1\36\41\0\1\37\34\0\1\40\3\0\1\41"+ - "\40\0\1\42\37\0\1\43\3\0\1\44\2\0\1\45"+ - "\1\46\32\0\1\47\36\0\1\50\51\0\1\51\40\0"+ - "\1\52\40\0\1\53\23\0\1\54\31\0\1\55\50\0"+ - "\1\56\36\0\1\57\3\0\1\60\40\0\1\61\31\0"+ - "\1\62\50\0\1\63\17\0\1\64\51\0\1\65\36\0"+ - "\1\66\43\0\1\67\40\0\1\70\30\0\1\71\50\0"+ - "\1\72\25\0\1\73\43\0\1\74\43\0\1\75\37\0"+ - "\1\76\30\0\1\77\50\0\1\100\25\0\1\101\47\0"+ - "\1\102\32\0\1\103\37\0\1\104\36\0\1\105\37\0"+ - "\1\106\46\0\1\107\37\0\1\110\26\0\1\111\37\0"+ - "\1\112\20\0"; + "\2\2\1\3\1\4\1\5\1\6\1\7\1\10\6\5"+ + "\1\11\1\12\1\13\1\11\1\14\1\15\1\2\1\16"+ + "\1\17\1\20\1\21\1\5\1\22\1\23\1\24\1\25"+ + "\1\26\1\27\1\30\1\31\52\0\1\32\3\0\1\33"+ + "\12\0\1\34\2\0\1\35\31\0\1\36\1\37\1\40"+ + "\1\41\37\0\1\42\43\0\1\43\36\0\1\44\3\0"+ + "\1\45\42\0\1\46\42\0\1\47\30\0\1\50\55\0"+ + "\1\51\42\0\1\52\42\0\1\53\15\0\1\54\43\0"+ + "\1\55\51\0\1\56\26\0\1\57\3\0\1\60\44\0"+ + "\1\61\52\0\1\62\44\0\1\63\20\0\1\64\60\0"+ + "\1\65\33\0\1\66\27\0\1\67\43\0\1\70\56\0"+ + "\1\71\44\0\1\72\20\0\1\73\46\0\1\74\34\0"+ + "\1\75\60\0\1\76\40\0\1\77\44\0\1\100\21\0"+ + "\1\101\40\0\1\102\46\0\1\103\36\0\1\104\40\0"+ + "\1\105\43\0\1\106\40\0\1\107\25\0\1\106\2\0"+ + "\13\106\1\0\1\110\22\106\15\0\1\111\43\0\1\112"+ + "\22\0"; private static int [] zzUnpackTrans() { - int [] result = new int[1376]; + int [] result = new int[1462]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -280,9 +282,10 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\1\0\10\11\6\1\1\11\5\1\10\11\1\0\4\11"+ - "\4\0\1\1\1\11\1\1\3\11\5\0\2\1\1\11"+ - "\1\1\4\0\1\1\1\11\3\0\3\11\7\0\2\11"; + "\1\0\6\11\1\1\3\11\12\1\4\11\4\0\4\11"+ + "\1\0\4\11\1\1\1\11\1\1\2\11\5\0\1\11"+ + "\2\1\1\0\1\1\1\11\3\0\1\1\1\0\1\11"+ + "\2\0\2\11\2\0\1\11\4\0\1\1\1\0\1\11"; private static int [] zzUnpackAttribute() { int [] result = new int[74]; @@ -591,7 +594,7 @@ else if (zzAtEOF) { else { switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { case 1: - { return com.intellij.psi.TokenType.BAD_CHARACTER; + { return symboltoken; } case 44: break; case 2: @@ -615,23 +618,23 @@ else if (zzAtEOF) { } case 49: break; case 7: - { return tab; + { return unescapedlessthan; } case 50: break; case 8: - { return symboltoken; + { return com.intellij.psi.TokenType.BAD_CHARACTER; } case 51: break; case 9: - { return pipe; + { return unescapedgreaterthan; } case 52: break; case 10: - { return unescapedlessthan; + { return tab; } case 53: break; case 11: - { return unescapedgreaterthan; + { return pipe; } case 54: break; case 12: @@ -727,11 +730,11 @@ else if (zzAtEOF) { } case 77: break; case 35: - { return htmlcommentopen; + { return refopen; } case 78: break; case 36: - { return refopen; + { return htmlcommentopen; } case 79: break; case 37: diff --git a/gen/com/mwplugin/parser/MediaWikiParser.java b/gen/com/mwplugin/parser/MediaWikiParser.java index ce76436..0f466d2 100644 --- a/gen/com/mwplugin/parser/MediaWikiParser.java +++ b/gen/com/mwplugin/parser/MediaWikiParser.java @@ -41,6 +41,9 @@ else if (t == ALL_INLINE_ELEMENTS) { else if (t == ALL_INLINE_ELEMENTS_INCLUDING_PIPE) { r = consumeToken(b, all_inline_elements_including_pipe); } + else if (t == ALL_INLINE_ELEMENTS_WITHOUT_NEWLINE) { + r = consumeToken(b, all_inline_elements_without_newline); + } else if (t == ANY_SUPPORTED_UNICODE_CHARACTER) { r = consumeToken(b, any_supported_unicode_character); } @@ -80,6 +83,9 @@ else if (t == BOLD_ITALIC_TEXT) { else if (t == BOLD_TEXT) { r = consumeToken(b, bold_text); } + else if (t == BRACKETED_CONTENT) { + r = consumeToken(b, bracketed_content); + } else if (t == BULLET_ITEM) { r = consumeToken(b, bullet_item); } @@ -743,6 +749,22 @@ public static boolean all_inline_elements_including_pipe(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // letter|symbol|decimaldigit|space-tab|inline-element|special-block + public static boolean all_inline_elements_without_newline(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "all_inline_elements_without_newline")) return false; + boolean r; + Marker m = enter_section_(b, l, _NONE_, ALL_INLINE_ELEMENTS_WITHOUT_NEWLINE, ""); + r = letter(b, l + 1); + if (!r) r = symbol(b, l + 1); + if (!r) r = consumeToken(b, decimaldigit); + if (!r) r = space_tab(b, l + 1); + if (!r) r = inline_element(b, l + 1); + if (!r) r = special_block(b, l + 1); + exit_section_(b, l, m, r, false, null); + return r; + } + /* ********************************************************** */ // letter public static boolean any_supported_unicode_character(PsiBuilder b, int l) { @@ -963,6 +985,64 @@ public static boolean bold_text(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // openbracket (!protocol !closebracket all-inline-elements)* closebracket + public static boolean bracketed_content(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "bracketed_content")) return false; + if (!nextTokenIs(b, openbracket)) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeToken(b, openbracket); + r = r && bracketed_content_1(b, l + 1); + r = r && consumeToken(b, closebracket); + exit_section_(b, m, BRACKETED_CONTENT, r); + return r; + } + + // (!protocol !closebracket all-inline-elements)* + private static boolean bracketed_content_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "bracketed_content_1")) return false; + int c = current_position_(b); + while (true) { + if (!bracketed_content_1_0(b, l + 1)) break; + if (!empty_element_parsed_guard_(b, "bracketed_content_1", c)) break; + c = current_position_(b); + } + return true; + } + + // !protocol !closebracket all-inline-elements + private static boolean bracketed_content_1_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "bracketed_content_1_0")) return false; + boolean r; + Marker m = enter_section_(b); + r = bracketed_content_1_0_0(b, l + 1); + r = r && bracketed_content_1_0_1(b, l + 1); + r = r && all_inline_elements(b, l + 1); + exit_section_(b, m, null, r); + return r; + } + + // !protocol + private static boolean bracketed_content_1_0_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "bracketed_content_1_0_0")) return false; + boolean r; + Marker m = enter_section_(b, l, _NOT_); + r = !protocol(b, l + 1); + exit_section_(b, l, m, r, false, null); + return r; + } + + // !closebracket + private static boolean bracketed_content_1_0_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "bracketed_content_1_0_1")) return false; + boolean r; + Marker m = enter_section_(b, l, _NOT_); + r = !consumeToken(b, closebracket); + exit_section_(b, l, m, r, false, null); + return r; + } + /* ********************************************************** */ // "*" (list-item | item-body)? public static boolean bullet_item(PsiBuilder b, int l) { @@ -1009,14 +1089,18 @@ public static boolean canonical_page_char(PsiBuilder b, int l) { } /* ********************************************************** */ - // inline-text + // all-inline-elements-without-newline* public static boolean caption(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "caption")) return false; - boolean r; Marker m = enter_section_(b, l, _NONE_, CAPTION, ""); - r = inline_text(b, l + 1); - exit_section_(b, l, m, r, false, null); - return r; + int c = current_position_(b); + while (true) { + if (!all_inline_elements_without_newline(b, l + 1)) break; + if (!empty_element_parsed_guard_(b, "caption", c)) break; + c = current_position_(b); + } + exit_section_(b, l, m, true, false, null); + return true; } /* ********************************************************** */ @@ -1547,7 +1631,7 @@ public static boolean formatted_text(PsiBuilder b, int l) { } /* ********************************************************** */ - // "!"|"$"|"%"|"&"|"("|")"|"*"|","|"-"|"."|":"|";"|"<"|"@"|"["|"]"|"^"|"_"|"`"|"{"|"|"|"}"|"~"|letter|decimaldigit|"–"|"'"|"/"|template-block|"?"|"’" + // "!"|"$"|"%"|"&"|"("|")"|"*"|","|"-"|"."|":"|";"|"<"|"@"|"["|"]"|"^"|"_"|"`"|"{"|"|"|"}"|"~"|letter|decimaldigit|"–"|"'"|"/"|template-block|"?"|"’"|"=" public static boolean friendly_ref_link_char(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "friendly_ref_link_char")) return false; boolean r; @@ -1583,12 +1667,13 @@ public static boolean friendly_ref_link_char(PsiBuilder b, int l) { if (!r) r = template_block(b, l + 1); if (!r) r = consumeToken(b, "?"); if (!r) r = consumeToken(b, "’"); + if (!r) r = consumeToken(b, equals); exit_section_(b, l, m, r, false, null); return r; } /* ********************************************************** */ - // galleryopen newline? gallery-image (newline? gallery-image)* newline? galleryclose + // galleryopen newline? gallery-image (newline gallery-image)* newline? galleryclose public static boolean gallery_block(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "gallery_block")) return false; if (!nextTokenIs(b, galleryopen)) return false; @@ -1611,7 +1696,7 @@ private static boolean gallery_block_1(PsiBuilder b, int l) { return true; } - // (newline? gallery-image)* + // (newline gallery-image)* private static boolean gallery_block_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "gallery_block_3")) return false; int c = current_position_(b); @@ -1623,24 +1708,17 @@ private static boolean gallery_block_3(PsiBuilder b, int l) { return true; } - // newline? gallery-image + // newline gallery-image private static boolean gallery_block_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "gallery_block_3_0")) return false; boolean r; Marker m = enter_section_(b); - r = gallery_block_3_0_0(b, l + 1); + r = consumeToken(b, newline); r = r && gallery_image(b, l + 1); exit_section_(b, m, null, r); return r; } - // newline? - private static boolean gallery_block_3_0_0(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "gallery_block_3_0_0")) return false; - consumeToken(b, newline); - return true; - } - // newline? private static boolean gallery_block_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "gallery_block_4")) return false; @@ -2342,7 +2420,7 @@ public static boolean image_mode_parameter(PsiBuilder b, int l) { } /* ********************************************************** */ - // interwiki-prefix (letter|decimal-number|symbol|whitespace)* + // interwiki-prefix all-inline-elements-without-newline* public static boolean image_name(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "image_name")) return false; boolean r; @@ -2353,31 +2431,18 @@ public static boolean image_name(PsiBuilder b, int l) { return r; } - // (letter|decimal-number|symbol|whitespace)* + // all-inline-elements-without-newline* private static boolean image_name_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "image_name_1")) return false; int c = current_position_(b); while (true) { - if (!image_name_1_0(b, l + 1)) break; + if (!all_inline_elements_without_newline(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "image_name_1", c)) break; c = current_position_(b); } return true; } - // letter|decimal-number|symbol|whitespace - private static boolean image_name_1_0(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "image_name_1_0")) return false; - boolean r; - Marker m = enter_section_(b); - r = letter(b, l + 1); - if (!r) r = decimal_number(b, l + 1); - if (!r) r = symbol(b, l + 1); - if (!r) r = whitespace(b, l + 1); - exit_section_(b, m, null, r); - return r; - } - /* ********************************************************** */ // image-mode-parameter| // image-size-parameter| @@ -2637,6 +2702,7 @@ private static boolean indent_item_1_0(PsiBuilder b, int l) { // gallery-block | // html-tag | // url| + // bracketed-content | // category-link | // link | // magic-link | @@ -2651,6 +2717,7 @@ public static boolean inline_element(PsiBuilder b, int l) { r = gallery_block(b, l + 1); if (!r) r = html_tag(b, l + 1); if (!r) r = url(b, l + 1); + if (!r) r = bracketed_content(b, l + 1); if (!r) r = category_link(b, l + 1); if (!r) r = link(b, l + 1); if (!r) r = magic_link(b, l + 1); @@ -2724,7 +2791,7 @@ public static boolean inline_text(PsiBuilder b, int l) { } /* ********************************************************** */ - // internal-link-start article-link ("#" section-id)? (("|"|doublepipe) (internal-link-property | internal-link-unassigned-property))* internal-link-end extra-description? + // internal-link-start article-link ("#" section-id)? (("|"|doublepipe|pipedash|pipeplus) (internal-link-property | internal-link-unassigned-property))* internal-link-end extra-description? public static boolean internal_link(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "internal_link")) return false; if (!nextTokenIs(b, openbracket2)) return false; @@ -2758,7 +2825,7 @@ private static boolean internal_link_2_0(PsiBuilder b, int l) { return r; } - // (("|"|doublepipe) (internal-link-property | internal-link-unassigned-property))* + // (("|"|doublepipe|pipedash|pipeplus) (internal-link-property | internal-link-unassigned-property))* private static boolean internal_link_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "internal_link_3")) return false; int c = current_position_(b); @@ -2770,7 +2837,7 @@ private static boolean internal_link_3(PsiBuilder b, int l) { return true; } - // ("|"|doublepipe) (internal-link-property | internal-link-unassigned-property) + // ("|"|doublepipe|pipedash|pipeplus) (internal-link-property | internal-link-unassigned-property) private static boolean internal_link_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "internal_link_3_0")) return false; boolean r; @@ -2781,13 +2848,15 @@ private static boolean internal_link_3_0(PsiBuilder b, int l) { return r; } - // "|"|doublepipe + // "|"|doublepipe|pipedash|pipeplus private static boolean internal_link_3_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "internal_link_3_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, pipe); if (!r) r = consumeToken(b, doublepipe); + if (!r) r = consumeToken(b, pipedash); + if (!r) r = consumeToken(b, pipeplus); exit_section_(b, m, null, r); return r; } @@ -4493,7 +4562,7 @@ public static boolean reference_closing_tag(PsiBuilder b, int l) { } /* ********************************************************** */ - // url? all-inline-elements* + // url? (all-inline-elements)* public static boolean reference_content(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "reference_content")) return false; boolean r; @@ -4511,18 +4580,28 @@ private static boolean reference_content_0(PsiBuilder b, int l) { return true; } - // all-inline-elements* + // (all-inline-elements)* private static boolean reference_content_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "reference_content_1")) return false; int c = current_position_(b); while (true) { - if (!all_inline_elements(b, l + 1)) break; + if (!reference_content_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "reference_content_1", c)) break; c = current_position_(b); } return true; } + // (all-inline-elements) + private static boolean reference_content_1_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "reference_content_1_0")) return false; + boolean r; + Marker m = enter_section_(b); + r = all_inline_elements(b, l + 1); + exit_section_(b, m, null, r); + return r; + } + /* ********************************************************** */ // (friendly-ref-link-char | whitespace)* public static boolean reference_name(PsiBuilder b, int l) { @@ -4944,16 +5023,17 @@ private static boolean table_3(PsiBuilder b, int l) { } /* ********************************************************** */ - // whitespace? table-section-start (!"|" cell-formatting)? newline (table-row)* + // whitespace? (table-row)* table-section-start (!"|" cell-formatting)? newline (table-row)* public static boolean table_block(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "table_block")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, TABLE_BLOCK, ""); r = table_block_0(b, l + 1); + r = r && table_block_1(b, l + 1); r = r && table_section_start(b, l + 1); - r = r && table_block_2(b, l + 1); + r = r && table_block_3(b, l + 1); r = r && consumeToken(b, newline); - r = r && table_block_4(b, l + 1); + r = r && table_block_5(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } @@ -4965,27 +5045,49 @@ private static boolean table_block_0(PsiBuilder b, int l) { return true; } + // (table-row)* + private static boolean table_block_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "table_block_1")) return false; + int c = current_position_(b); + while (true) { + if (!table_block_1_0(b, l + 1)) break; + if (!empty_element_parsed_guard_(b, "table_block_1", c)) break; + c = current_position_(b); + } + return true; + } + + // (table-row) + private static boolean table_block_1_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "table_block_1_0")) return false; + boolean r; + Marker m = enter_section_(b); + r = table_row(b, l + 1); + exit_section_(b, m, null, r); + return r; + } + // (!"|" cell-formatting)? - private static boolean table_block_2(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "table_block_2")) return false; - table_block_2_0(b, l + 1); + private static boolean table_block_3(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "table_block_3")) return false; + table_block_3_0(b, l + 1); return true; } // !"|" cell-formatting - private static boolean table_block_2_0(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "table_block_2_0")) return false; + private static boolean table_block_3_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "table_block_3_0")) return false; boolean r; Marker m = enter_section_(b); - r = table_block_2_0_0(b, l + 1); + r = table_block_3_0_0(b, l + 1); r = r && cell_formatting(b, l + 1); exit_section_(b, m, null, r); return r; } // !"|" - private static boolean table_block_2_0_0(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "table_block_2_0_0")) return false; + private static boolean table_block_3_0_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "table_block_3_0_0")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_); r = !consumeToken(b, pipe); @@ -4994,20 +5096,20 @@ private static boolean table_block_2_0_0(PsiBuilder b, int l) { } // (table-row)* - private static boolean table_block_4(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "table_block_4")) return false; + private static boolean table_block_5(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "table_block_5")) return false; int c = current_position_(b); while (true) { - if (!table_block_4_0(b, l + 1)) break; - if (!empty_element_parsed_guard_(b, "table_block_4", c)) break; + if (!table_block_5_0(b, l + 1)) break; + if (!empty_element_parsed_guard_(b, "table_block_5", c)) break; c = current_position_(b); } return true; } // (table-row) - private static boolean table_block_4_0(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "table_block_4_0")) return false; + private static boolean table_block_5_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "table_block_5_0")) return false; boolean r; Marker m = enter_section_(b); r = table_row(b, l + 1); @@ -5944,13 +6046,17 @@ private static boolean whitespace_1(PsiBuilder b, int l) { /* ********************************************************** */ // space-tab| - // newline + // newline| + // " "| " "|" " public static boolean whitespace_char(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "whitespace_char")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, WHITESPACE_CHAR, ""); r = space_tab(b, l + 1); if (!r) r = consumeToken(b, newline); + if (!r) r = consumeToken(b, " "); + if (!r) r = consumeToken(b, " "); + if (!r) r = consumeToken(b, " "); exit_section_(b, l, m, r, false, null); return r; } diff --git a/gen/com/mwplugin/psi/MediaWikiTypes.java b/gen/com/mwplugin/psi/MediaWikiTypes.java index 7540eb2..fdd5ad8 100644 --- a/gen/com/mwplugin/psi/MediaWikiTypes.java +++ b/gen/com/mwplugin/psi/MediaWikiTypes.java @@ -10,6 +10,7 @@ public interface MediaWikiTypes { IElementType ALL_INLINE_ELEMENTS = new MediaWikiElementType("ALL_INLINE_ELEMENTS"); IElementType ALL_INLINE_ELEMENTS_INCLUDING_PIPE = new MediaWikiElementType("ALL_INLINE_ELEMENTS_INCLUDING_PIPE"); + IElementType ALL_INLINE_ELEMENTS_WITHOUT_NEWLINE = new MediaWikiElementType("ALL_INLINE_ELEMENTS_WITHOUT_NEWLINE"); IElementType ANY_SUPPORTED_UNICODE_CHARACTER = new MediaWikiElementType("ANY_SUPPORTED_UNICODE_CHARACTER"); IElementType ARTICLE = new MediaWikiElementType("ARTICLE"); IElementType ARTICLE_LINK = new MediaWikiElementType("ARTICLE_LINK"); @@ -23,6 +24,7 @@ public interface MediaWikiTypes { IElementType BEHAVIOUR_SWITCH = new MediaWikiElementType("BEHAVIOUR_SWITCH"); IElementType BOLD_ITALIC_TEXT = new MediaWikiElementType("BOLD_ITALIC_TEXT"); IElementType BOLD_TEXT = new MediaWikiElementType("BOLD_TEXT"); + IElementType BRACKETED_CONTENT = new MediaWikiElementType("BRACKETED_CONTENT"); IElementType BULLET_ITEM = new MediaWikiElementType("BULLET_ITEM"); IElementType CANONICAL_PAGE_CHAR = new MediaWikiElementType("CANONICAL_PAGE_CHAR"); IElementType CAPTION = new MediaWikiElementType("CAPTION"); @@ -209,6 +211,7 @@ public interface MediaWikiTypes { IElementType all_inline_elements = new MediaWikiTokenType("all_inline_elements"); IElementType all_inline_elements_including_pipe = new MediaWikiTokenType("all_inline_elements_including_pipe"); + IElementType all_inline_elements_without_newline = new MediaWikiTokenType("all_inline_elements_without_newline"); IElementType any_supported_unicode_character = new MediaWikiTokenType("any_supported_unicode_character"); IElementType article_link = new MediaWikiTokenType("article_link"); IElementType article_title = new MediaWikiTokenType("article_title"); @@ -221,6 +224,7 @@ public interface MediaWikiTypes { IElementType behaviourswitch_toc = new MediaWikiTokenType("behaviourswitch_toc"); IElementType bold_italic_text = new MediaWikiTokenType("bold_italic_text"); IElementType bold_text = new MediaWikiTokenType("bold_text"); + IElementType bracketed_content = new MediaWikiTokenType("bracketed_content"); IElementType bullet_item = new MediaWikiTokenType("bullet_item"); IElementType canonical_page_char = new MediaWikiTokenType("canonical_page_char"); IElementType category_link = new MediaWikiTokenType("category_link"); @@ -250,7 +254,7 @@ public interface MediaWikiTypes { IElementType gallery_block = new MediaWikiTokenType("gallery_block"); IElementType gallery_image = new MediaWikiTokenType("gallery_image"); IElementType galleryclose = new MediaWikiTokenType(""); - IElementType galleryopen = new MediaWikiTokenType(""); + IElementType galleryopen = new MediaWikiTokenType("galleryopen"); IElementType hex_digit = new MediaWikiTokenType("hex_digit"); IElementType hex_number = new MediaWikiTokenType("hex_number"); IElementType horizontal_rule = new MediaWikiTokenType("horizontal_rule"); @@ -432,6 +436,9 @@ public static PsiElement createElement(ASTNode node) { else if (type == ALL_INLINE_ELEMENTS_INCLUDING_PIPE) { return new MediaWikiAllInlineElementsIncludingPipeImpl(node); } + else if (type == ALL_INLINE_ELEMENTS_WITHOUT_NEWLINE) { + return new MediaWikiAllInlineElementsWithoutNewlineImpl(node); + } else if (type == ANY_SUPPORTED_UNICODE_CHARACTER) { return new MediaWikiAnySupportedUnicodeCharacterImpl(node); } @@ -471,6 +478,9 @@ else if (type == BOLD_ITALIC_TEXT) { else if (type == BOLD_TEXT) { return new MediaWikiBoldTextImpl(node); } + else if (type == BRACKETED_CONTENT) { + return new MediaWikiBracketedContentImpl(node); + } else if (type == BULLET_ITEM) { return new MediaWikiBulletItemImpl(node); } diff --git a/gen/com/mwplugin/psi/MediaWikiVisitor.java b/gen/com/mwplugin/psi/MediaWikiVisitor.java index 5d183d4..ae88d34 100644 --- a/gen/com/mwplugin/psi/MediaWikiVisitor.java +++ b/gen/com/mwplugin/psi/MediaWikiVisitor.java @@ -31,6 +31,10 @@ public void visitAllInlineElementsIncludingPipe(@NotNull MediaWikiAllInlineEleme visitPsiElement(o); } + public void visitAllInlineElementsWithoutNewline(@NotNull MediaWikiAllInlineElementsWithoutNewline o) { + visitPsiElement(o); + } + public void visitAnySupportedUnicodeCharacter(@NotNull MediaWikiAnySupportedUnicodeCharacter o) { visitIMediaWikiNamedElement(o); } @@ -83,6 +87,10 @@ public void visitBoldText(@NotNull MediaWikiBoldText o) { visitIMediaWikiNamedElement(o); } + public void visitBracketedContent(@NotNull MediaWikiBracketedContent o) { + visitPsiElement(o); + } + public void visitBulletItem(@NotNull MediaWikiBulletItem o) { visitIMediaWikiNamedElement(o); } diff --git a/out/production/wikimedia/META-INF/plugin.xml b/out/production/wikimedia/META-INF/plugin.xml index 42e12e5..dfa71f3 100644 --- a/out/production/wikimedia/META-INF/plugin.xml +++ b/out/production/wikimedia/META-INF/plugin.xml @@ -1,11 +1,11 @@ org.wikipedia.tools.puggle Puggle - 0.9a + 0.11a YourCompany - diff --git a/out/production/wikimedia/com/mwplugin/MediaWikiLexer.class b/out/production/wikimedia/com/mwplugin/MediaWikiLexer.class index bd92e2b277a23acbd53c1c0734426f228e0c7070..082ee8d83dfdc4fb4960dccd3af244fff420ed93 100644 GIT binary patch delta 5417 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 A761SM diff --git a/out/production/wikimedia/com/mwplugin/mediawiki.bnf b/out/production/wikimedia/com/mwplugin/mediawiki.bnf index a1eddce..137ec94 100644 --- a/out/production/wikimedia/com/mwplugin/mediawiki.bnf +++ b/out/production/wikimedia/com/mwplugin/mediawiki.bnf @@ -23,7 +23,7 @@ tokens = [ // space='regexp:\s+' // comment='regexp://.*' - galleryopen = "" + galleryopen = "regexp:" galleryclose = "" pipedash = "|-" pipeplus = "|+" @@ -65,7 +65,7 @@ curlyopen2 = "{{" curlyclose2 = "}}" pipe = "|" - symboltoken = "regexp:[\.,\(\)\-\:#\/';–\!%\?_—\+\$~·’†½\*@−‘\^ᴥ•…`“”、」「』『。\"±€‐×°]" + symboltoken = "regexp:[\.,\(\)\-\:#\/';–\!%\?_—\+\$~·’†½\*@−‘\^ᴥ•§…`“«®✋‑”、」「』『。\"±€‐×°′́aʿמָשִׁיחַמשיח[^\x00-\x7F]]" // okaysymbols = "regexp:[\(|\)|_|\.|\!|\/|\-|\:|#]" // lcaseletter="regexp:\d" @@ -89,9 +89,11 @@ character ::= mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" } + whitespace-char ::= space-tab| - newline + newline| + " "| " "|" " { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" @@ -466,12 +468,14 @@ inline-text ::= inline-element-sans-pipe ::= ( !"|" (all-inline-elements))* all-inline-elements ::= (letter|symbol|decimaldigit|whitespace-char|inline-element|special-block) +all-inline-elements-without-newline ::= (letter|symbol|decimaldigit|space-tab|inline-element|special-block) all-inline-elements-including-pipe ::= (letter|symbol|decimaldigit|whitespace-char|inline-element|special-block|"|") inline-element ::= gallery-block | html-tag | url| + bracketed-content | category-link | link | magic-link | @@ -545,7 +549,7 @@ link ::= } internal-link ::= - internal-link-start article-link ("#" section-id)? (("|"|doublepipe) (internal-link-property | internal-link-unassigned-property))* internal-link-end extra-description? + internal-link-start article-link ("#" section-id)? (("|"|doublepipe|pipedash|pipeplus) (internal-link-property | internal-link-unassigned-property))* internal-link-end extra-description? { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" @@ -761,7 +765,7 @@ image-mode-manual-thumb ::= } image-name ::= - interwiki-prefix (letter|decimal-number|symbol|whitespace)* + interwiki-prefix all-inline-elements-without-newline* { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" @@ -909,7 +913,7 @@ image-valign-text-bottom ::= } caption ::= - inline-text + all-inline-elements-without-newline* { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" @@ -947,7 +951,7 @@ image-param-border ::= } gallery-block ::= - galleryopen newline? gallery-image (newline? gallery-image)* newline? galleryclose + galleryopen newline? gallery-image (newline gallery-image)* newline? galleryclose { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" @@ -1107,8 +1111,9 @@ named-reference-block-self-closing ::= implements="com.mwplugin.psi.IMediaWikiNamedElement" } -reference-content ::= url? all-inline-elements* +reference-content ::= url? (all-inline-elements)* +bracketed-content ::= openbracket (!protocol !closebracket all-inline-elements)* closebracket //Don't need quotes unless you have whitespace property-assignment ::= (whitespace? doublequote? reference-name doublequote? whitespace?)//|(whitespace? doublequote reference-name whitespace doublequote whitespace?) @@ -1273,7 +1278,7 @@ plain-text ::= implements="com.mwplugin.psi.IMediaWikiNamedElement" } -friendly-ref-link-char ::= ("!"|"$"|"%"|"&"|"("|")"|"*"|","|"-"|"."|":"|";"|"<"|"@"|"["|"]"|"^"|"_"|"`"|"{"|"|"|"}"|"~"|letter|decimaldigit|"–"|"'"|"/"|template-block|"?"|"’") +friendly-ref-link-char ::= ("!"|"$"|"%"|"&"|"("|")"|"*"|","|"-"|"."|":"|";"|"<"|"@"|"["|"]"|"^"|"_"|"`"|"{"|"|"|"}"|"~"|letter|decimaldigit|"–"|"'"|"/"|template-block|"?"|"’"|"=") unicode-wiki ::= letter | @@ -1494,7 +1499,7 @@ table-row ::= table-header|table-cell|table-header-double-delimited|table-cell-d implements="com.mwplugin.psi.IMediaWikiNamedElement" } -table-block ::= whitespace? table-section-start (!"|" cell-formatting)? newline (table-row)* +table-block ::= whitespace? (table-row)* table-section-start (!"|" cell-formatting)? newline (table-row)* { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" diff --git a/out/production/wikimedia/com/mwplugin/parser/MediaWikiParser.class b/out/production/wikimedia/com/mwplugin/parser/MediaWikiParser.class index d1e2816343951a37d7943d33ba9332abf37119e9..f5a2797412f4ddf8de58871660d7a9343b56a04e 100644 GIT binary patch literal 121968 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

m<+Mw70c$191i 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 diff --git a/out/production/wikimedia/com/mwplugin/psi/MediaWikiTypes$Factory.class b/out/production/wikimedia/com/mwplugin/psi/MediaWikiTypes$Factory.class index e27de12f4ab79af7344c7825ee021f2274a3bdaf..0ef1492f63ed7fd0a8cec9035371379b03f9b635 100644 GIT binary patch delta 7627 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 Di3?c6 literal 23772 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 delta 9835 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 b{Cl|{Krj3Auk!!#`KMW|`16!zwTAr{)$+`x diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml index 10e7fd0..dfa71f3 100644 --- a/resources/META-INF/plugin.xml +++ b/resources/META-INF/plugin.xml @@ -22,7 +22,6 @@ - diff --git a/src/com/mwplugin/MediaWikiAnnotator.java b/src/com/mwplugin/MediaWikiAnnotator.java index ad91bc1..9b4063d 100644 --- a/src/com/mwplugin/MediaWikiAnnotator.java +++ b/src/com/mwplugin/MediaWikiAnnotator.java @@ -86,6 +86,15 @@ public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder hold // if (properties.size() == 1) // { + +// if(element instanceof MediaWikiExternalLink) +// { +// MediaWikiReferenceBlock externalLink = (MediaWikiExternalLink) element; +// TextRange range = new TextRange(element.getTextRange().getStartOffset(), element.getTextRange().getEndOffset()); +// Annotation annotation = holder.createInfoAnnotation(range, null); +// annotation.setTextAttributes(entry.getValue()); +// } + if(element instanceof MediaWikiReferenceBlock) { MediaWikiReferenceBlock referenceBlock = (MediaWikiReferenceBlock) element; diff --git a/src/com/mwplugin/MediaWikiFindUsagesProvider.java b/src/com/mwplugin/MediaWikiFindUsagesProvider.java index 2c2a973..72bc0c1 100644 --- a/src/com/mwplugin/MediaWikiFindUsagesProvider.java +++ b/src/com/mwplugin/MediaWikiFindUsagesProvider.java @@ -4,10 +4,7 @@ import com.intellij.lang.findUsages.FindUsagesProvider; import com.intellij.psi.*; import com.intellij.psi.tree.TokenSet; - import com.mwplugin.psi.IMediaWikiNamedElement; - import com.mwplugin.psi.MediaWikiNamedReferenceBlockUrl; - import com.mwplugin.psi.MediaWikiReferenceBlock; - import com.mwplugin.psi.MediaWikiTypes; + import com.mwplugin.psi.*; import org.jetbrains.annotations.*; public class MediaWikiFindUsagesProvider implements FindUsagesProvider { @@ -16,17 +13,14 @@ public class MediaWikiFindUsagesProvider implements FindUsagesProvider { public WordsScanner getWordsScanner() { return new DefaultWordsScanner(new MediaWikiLexerAdapter(), - TokenSet.create(MediaWikiTypes.REFERENCE_BLOCK), - TokenSet.create(MediaWikiTypes.REFERENCE_NAME), + TokenSet.create(MediaWikiTypes.NAMED_REFERENCE_BLOCK), + TokenSet.create(MediaWikiTypes.HTML_COMMENT), TokenSet.EMPTY); - - - } @Override public boolean canFindUsagesFor(@NotNull PsiElement psiElement) { - return psiElement instanceof IMediaWikiNamedElement; + return psiElement instanceof MediaWikiNamedReferenceBlock; } @Nullable @@ -48,8 +42,8 @@ public String getType(@NotNull PsiElement element) { @NotNull @Override public String getDescriptiveName(@NotNull PsiElement element) { - if (element instanceof MediaWikiNamedReferenceBlockUrl) { - return ((MediaWikiNamedReferenceBlockUrl) element).getURL(); + if (element instanceof MediaWikiNamedReferenceBlock) { + return ((MediaWikiNamedReferenceBlock) element).getReferenceName(); } else { return ""; } @@ -58,11 +52,11 @@ public String getDescriptiveName(@NotNull PsiElement element) { @NotNull @Override public String getNodeText(@NotNull PsiElement element, boolean useFullName) { -// if (element instanceof MediaWikiNamedReferenceBlockUrl) { -// return ((MediaWikiNamedReferenceBlockUrl) element).getReferenceName()+ ":" + ((MediaWikiNamedReferenceBlockUrl) element).getURL(); -// } else { -// return ""; -// } - return "gey"; + if (element instanceof MediaWikiNamedReferenceBlock) { + return ((MediaWikiNamedReferenceBlock) element).getReferenceName(); + } else { + return ""; + } +// return "gey"; } } \ No newline at end of file diff --git a/src/com/mwplugin/_MediaWikiLexer.flex b/src/com/mwplugin/_MediaWikiLexer.flex index 6b95f02..c204965 100644 --- a/src/com/mwplugin/_MediaWikiLexer.flex +++ b/src/com/mwplugin/_MediaWikiLexer.flex @@ -25,8 +25,9 @@ otherletter=[\p{L}] lcaseletter=[a-z] ucaseletter=[A-Z] decimaldigit=[0-9] +galleryopen= tab=\t -symboltoken = [\.,\(\)\-\:#\/';–\!%\?_—\+\$~·’†½\*@−‘\^ᴥ•…`“”、」「』『。\"±‐×°] +symboltoken = [\.,\(\)\-\:#\/';–\!%\?_—\+\$~·’†½\*@®−‘\^ᴥ•…`“‑§”、」「✋«』『。\"±‐×°′́aʿמָשִׁיחַמשיח[^\x00-\x7F]] //okaysymbols = "regexp:[\(|\)|_|\.|\!|\/|\\|\-|\:|#]" %% @@ -45,7 +46,6 @@ symboltoken = [\.,\(\)\-\:#\/';–\!%\?_—\+\$~·’†½\*@−‘\^ᴥ•…` "" { return refopencomplete; } "" { return refclose; } - "" {return galleryopen;} "" {return galleryclose;} // "
" {return htmltagnewline;} "=====" { return equals5; } @@ -71,6 +71,7 @@ symboltoken = [\.,\(\)\-\:#\/';–\!%\?_—\+\$~·’†½\*@−‘\^ᴥ•…` // {okaysymbols} { return okaysymbols; } {newline} { return newline; } + {galleryopen} { return galleryopen; } {lcaseletter} { return lcaseletter; } {ucaseletter} { return ucaseletter; } {decimaldigit} { return decimaldigit; } diff --git a/src/com/mwplugin/mediawiki.bnf b/src/com/mwplugin/mediawiki.bnf index a1eddce..137ec94 100644 --- a/src/com/mwplugin/mediawiki.bnf +++ b/src/com/mwplugin/mediawiki.bnf @@ -23,7 +23,7 @@ tokens = [ // space='regexp:\s+' // comment='regexp://.*' - galleryopen = "" + galleryopen = "regexp:" galleryclose = "" pipedash = "|-" pipeplus = "|+" @@ -65,7 +65,7 @@ curlyopen2 = "{{" curlyclose2 = "}}" pipe = "|" - symboltoken = "regexp:[\.,\(\)\-\:#\/';–\!%\?_—\+\$~·’†½\*@−‘\^ᴥ•…`“”、」「』『。\"±€‐×°]" + symboltoken = "regexp:[\.,\(\)\-\:#\/';–\!%\?_—\+\$~·’†½\*@−‘\^ᴥ•§…`“«®✋‑”、」「』『。\"±€‐×°′́aʿמָשִׁיחַמשיח[^\x00-\x7F]]" // okaysymbols = "regexp:[\(|\)|_|\.|\!|\/|\-|\:|#]" // lcaseletter="regexp:\d" @@ -89,9 +89,11 @@ character ::= mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" } + whitespace-char ::= space-tab| - newline + newline| + " "| " "|" " { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" @@ -466,12 +468,14 @@ inline-text ::= inline-element-sans-pipe ::= ( !"|" (all-inline-elements))* all-inline-elements ::= (letter|symbol|decimaldigit|whitespace-char|inline-element|special-block) +all-inline-elements-without-newline ::= (letter|symbol|decimaldigit|space-tab|inline-element|special-block) all-inline-elements-including-pipe ::= (letter|symbol|decimaldigit|whitespace-char|inline-element|special-block|"|") inline-element ::= gallery-block | html-tag | url| + bracketed-content | category-link | link | magic-link | @@ -545,7 +549,7 @@ link ::= } internal-link ::= - internal-link-start article-link ("#" section-id)? (("|"|doublepipe) (internal-link-property | internal-link-unassigned-property))* internal-link-end extra-description? + internal-link-start article-link ("#" section-id)? (("|"|doublepipe|pipedash|pipeplus) (internal-link-property | internal-link-unassigned-property))* internal-link-end extra-description? { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" @@ -761,7 +765,7 @@ image-mode-manual-thumb ::= } image-name ::= - interwiki-prefix (letter|decimal-number|symbol|whitespace)* + interwiki-prefix all-inline-elements-without-newline* { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" @@ -909,7 +913,7 @@ image-valign-text-bottom ::= } caption ::= - inline-text + all-inline-elements-without-newline* { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" @@ -947,7 +951,7 @@ image-param-border ::= } gallery-block ::= - galleryopen newline? gallery-image (newline? gallery-image)* newline? galleryclose + galleryopen newline? gallery-image (newline gallery-image)* newline? galleryclose { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" @@ -1107,8 +1111,9 @@ named-reference-block-self-closing ::= implements="com.mwplugin.psi.IMediaWikiNamedElement" } -reference-content ::= url? all-inline-elements* +reference-content ::= url? (all-inline-elements)* +bracketed-content ::= openbracket (!protocol !closebracket all-inline-elements)* closebracket //Don't need quotes unless you have whitespace property-assignment ::= (whitespace? doublequote? reference-name doublequote? whitespace?)//|(whitespace? doublequote reference-name whitespace doublequote whitespace?) @@ -1273,7 +1278,7 @@ plain-text ::= implements="com.mwplugin.psi.IMediaWikiNamedElement" } -friendly-ref-link-char ::= ("!"|"$"|"%"|"&"|"("|")"|"*"|","|"-"|"."|":"|";"|"<"|"@"|"["|"]"|"^"|"_"|"`"|"{"|"|"|"}"|"~"|letter|decimaldigit|"–"|"'"|"/"|template-block|"?"|"’") +friendly-ref-link-char ::= ("!"|"$"|"%"|"&"|"("|")"|"*"|","|"-"|"."|":"|";"|"<"|"@"|"["|"]"|"^"|"_"|"`"|"{"|"|"|"}"|"~"|letter|decimaldigit|"–"|"'"|"/"|template-block|"?"|"’"|"=") unicode-wiki ::= letter | @@ -1494,7 +1499,7 @@ table-row ::= table-header|table-cell|table-header-double-delimited|table-cell-d implements="com.mwplugin.psi.IMediaWikiNamedElement" } -table-block ::= whitespace? table-section-start (!"|" cell-formatting)? newline (table-row)* +table-block ::= whitespace? (table-row)* table-section-start (!"|" cell-formatting)? newline (table-row)* { mixin="com.mwplugin.psi.impl.MediaWikiNamedElementImpl" implements="com.mwplugin.psi.IMediaWikiNamedElement" diff --git a/src/com/mwplugin/quickfix/ConvertInlineLinkToReferenceQuickFix.java b/src/com/mwplugin/quickfix/ConvertInlineLinkToReferenceQuickFix.java new file mode 100644 index 0000000..2b203f1 --- /dev/null +++ b/src/com/mwplugin/quickfix/ConvertInlineLinkToReferenceQuickFix.java @@ -0,0 +1,35 @@ +package com.mwplugin.quickfix; + +import com.intellij.codeInsight.intention.impl.BaseIntentionAction; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiFile; +import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.Nls; +import org.jetbrains.annotations.NotNull; + +/** + * Created by andrewsimmons on 5/26/17. + */ +public class ConvertInlineLinkToReferenceQuickFix extends BaseIntentionAction +{ + @Nls + @NotNull + @Override + public String getFamilyName() + { + return null; + } + + @Override + public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) + { + return false; + } + + @Override + public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException + { + + } +} diff --git a/src/com/mwplugin/quickfix/ConvertUrlToCitationQuickFix.java b/src/com/mwplugin/quickfix/ConvertUrlToCitationQuickFix.java index d1a4c6d..99c0cc5 100644 --- a/src/com/mwplugin/quickfix/ConvertUrlToCitationQuickFix.java +++ b/src/com/mwplugin/quickfix/ConvertUrlToCitationQuickFix.java @@ -97,15 +97,16 @@ public void run(@NotNull ProgressIndicator progressIndicator) public void run() { String citationFromURL = getCitationFromURL(url.getText()); - if(citationFromURL != null) + if (citationFromURL != null) { progressIndicator.setFraction(0.90); progressIndicator.setText("Replacing URL"); - PsiElement parent = url.getParent(); + PsiElement referenceContent = PsiTreeUtil.getParentOfType(url, MediaWikiReferenceContent.class); MediaWikiTemplateBlock templateBlock = MediaWikiElementFactory.createTemplate(project, citationFromURL); - parent.add(templateBlock); - url.delete(); + referenceContent.replace(templateBlock); + // parent.add(templateBlock); +// url.delete(); } } }.execute();