radius-ts 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,179 @@
1
+ %%{
2
+ machine parser;
3
+
4
+ action _prefix { mark_pfx = p; }
5
+ action prefix {
6
+ prefix = input.substring(mark_pfx, p);
7
+ }
8
+ action _check_prefix {
9
+ if ( !prefix.equals(tag_prefix) ) {
10
+ // have to manually add ':' / Sep
11
+ // pass the text through & reset state
12
+ pass_through(input.substring(tagstart, p) + ":");
13
+ prefix = "";
14
+ fgoto main;
15
+ }
16
+ }
17
+
18
+ action _starttag { mark_stg = p; }
19
+ action starttag { name = input.substring(mark_stg, p); }
20
+ action _attr { mark_attr = p; }
21
+ action attr {
22
+ attributes.op_aset(
23
+ runtime.getCurrentContext(),
24
+ RubyString.newString(runtime, nat),
25
+ RubyString.newString(runtime, vat)
26
+ );
27
+ }
28
+
29
+ action _nameattr { mark_nat = p; }
30
+ action nameattr { nat = input.substring(mark_nat, p); }
31
+ action _valattr { mark_vat = p; }
32
+ action valattr { vat = input.substring(mark_vat, p); }
33
+
34
+ action opentag { flavor = RubySymbol.newSymbol(runtime, "open".intern()); }
35
+ action selftag { flavor = RubySymbol.newSymbol(runtime, "self".intern()); }
36
+ action closetag { flavor = RubySymbol.newSymbol(runtime, "close".intern()); }
37
+
38
+ Closeout := empty;
39
+
40
+ # words
41
+ PrefixChar = [\-A-Za-z0-9._?] ;
42
+ NameChar = [\-A-Za-z0-9._:?] ;
43
+ TagName = NameChar+ >_starttag %starttag;
44
+ Prefix = PrefixChar+ >_prefix %prefix;
45
+ Open = "<";
46
+ Sep = ":" >_check_prefix;
47
+ End = "/";
48
+ Close = ">";
49
+
50
+ Name = Prefix Sep TagName;
51
+
52
+ NameAttr = NameChar+ >_nameattr %nameattr;
53
+ Q1Char = ( "\\\'" | [^'] ) ;
54
+ Q1Attr = Q1Char* >_valattr %valattr;
55
+ Q2Char = ( "\\\"" | [^"] ) ;
56
+ Q2Attr = Q2Char* >_valattr %valattr;
57
+
58
+ Attr = NameAttr space* "=" space* ('"' Q2Attr '"' | "'" Q1Attr "'") space* >_attr %attr;
59
+ Attrs = (space+ Attr* | empty);
60
+
61
+ CloseTrailer = End Close %selftag;
62
+ OpenTrailer = Close %opentag;
63
+
64
+ Trailer = (OpenTrailer | CloseTrailer);
65
+
66
+ OpenOrSelfTag = Name Attrs? Trailer;
67
+ CloseTag = End Name space* Close %closetag;
68
+
69
+ SomeTag = Open (OpenOrSelfTag | CloseTag);
70
+
71
+ main := |*
72
+ SomeTag => {
73
+ tag(prefix, name, attributes, flavor);
74
+ prefix = "";
75
+ name = "";
76
+ attributes = RubyHash.newHash(runtime);
77
+ flavor = RubySymbol.newSymbol(runtime, "tasteless".intern());
78
+ };
79
+ any => {
80
+ pass_through(input.substring(p, p + 1));
81
+ tagstart = p + 1;
82
+ };
83
+ *|;
84
+ }%%
85
+
86
+ package radius.parser;
87
+
88
+ import java.util.HashMap;
89
+ import java.util.LinkedList;
90
+ import org.jruby.Ruby; // runtime
91
+ import org.jruby.RubyObject;
92
+ import org.jruby.runtime.builtin.IRubyObject;
93
+ import org.jruby.RubyArray;
94
+ import org.jruby.RubyString;
95
+ import org.jruby.RubyHash;
96
+ import org.jruby.RubySymbol;
97
+
98
+ public class JavaScanner {
99
+
100
+ Ruby runtime = null;
101
+ RubyArray rv = null;
102
+
103
+ void pass_through(String str) {
104
+ RubyObject last = ((RubyObject)rv.last());
105
+ if ( rv.size() > 0 && last != null && (last instanceof RubyString) ){
106
+ // XXX concat changes for ruby 1.9
107
+ ((RubyString) last).concat(RubyString.newString(runtime, str));
108
+ } else {
109
+ rv.append(RubyString.newString(runtime, str));
110
+ }
111
+ }
112
+
113
+ void tag(String prefix, String name, RubyHash attr, RubySymbol flavor) {
114
+ RubyHash tag = RubyHash.newHash(runtime);
115
+ tag.op_aset(
116
+ runtime.getCurrentContext(),
117
+ RubySymbol.newSymbol(runtime, "prefix"),
118
+ RubyString.newString(runtime, prefix)
119
+ );
120
+ tag.op_aset(
121
+ runtime.getCurrentContext(),
122
+ RubySymbol.newSymbol(runtime, "name"),
123
+ RubyString.newString(runtime, name)
124
+ );
125
+ tag.op_aset(
126
+ runtime.getCurrentContext(),
127
+ RubySymbol.newSymbol(runtime, "attrs"),
128
+ attr
129
+ );
130
+ tag.op_aset(
131
+ runtime.getCurrentContext(),
132
+ RubySymbol.newSymbol(runtime, "flavor"),
133
+ flavor
134
+ );
135
+ rv.append(tag);
136
+ }
137
+
138
+ public JavaScanner(Ruby runtime) {
139
+ this.runtime = runtime;
140
+ }
141
+
142
+ %% write data;
143
+
144
+ public RubyArray operate(String tag_prefix, String input) {
145
+ char[] data = input.toCharArray();
146
+ String disposable_string;
147
+
148
+ String name = "";
149
+ String prefix = "";
150
+ RubySymbol flavor = RubySymbol.newSymbol(runtime, "tasteless".intern());
151
+ RubyHash attributes = RubyHash.newHash(runtime);
152
+
153
+ int tagstart = 0;
154
+ int mark_pfx = 0;
155
+ int mark_stg = 0;
156
+ int mark_attr = 0;
157
+ int mark_nat = 0;
158
+ int mark_vat = 0;
159
+
160
+ String nat = "";
161
+ String vat = "";
162
+
163
+ int cs;
164
+ int p = 0;
165
+ int pe = data.length;
166
+ int eof = pe;
167
+ int act;
168
+ int ts;
169
+ int te;
170
+
171
+ rv = RubyArray.newArray(runtime);
172
+ char[] remainder = data;
173
+
174
+ %% write init;
175
+ %% write exec;
176
+
177
+ return rv;
178
+ }
179
+ }
Binary file
@@ -1,7 +1,7 @@
1
1
 
2
- # line 1 "scan.rl"
2
+ # line 1 "scanner.rl"
3
3
 
4
- # line 83 "scan.rl"
4
+ # line 84 "scanner.rl"
5
5
 
6
6
 
7
7
  module Radius
@@ -37,7 +37,7 @@ module Radius
37
37
 
38
38
  @prefix = prefix
39
39
 
40
- # line 41 "scan.rb"
40
+ # line 41 "scanner.rb"
41
41
  class << self
42
42
  attr_accessor :_parser_trans_keys
43
43
  private :_parser_trans_keys, :_parser_trans_keys=
@@ -773,9 +773,9 @@ end
773
773
  self.parser_en_main = 49;
774
774
 
775
775
 
776
- # line 118 "scan.rl"
776
+ # line 119 "scanner.rl"
777
777
 
778
- # line 779 "scan.rb"
778
+ # line 779 "scanner.rb"
779
779
  begin
780
780
  p ||= 0
781
781
  pe ||= data.length
@@ -785,9 +785,9 @@ begin
785
785
  act = 0
786
786
  end
787
787
 
788
- # line 119 "scan.rl"
788
+ # line 120 "scanner.rl"
789
789
 
790
- # line 791 "scan.rb"
790
+ # line 791 "scanner.rb"
791
791
  begin
792
792
  testEof = false
793
793
  _slen, _trans, _keys, _inds, _acts, _nacts = nil
@@ -815,7 +815,7 @@ begin
815
815
  begin
816
816
  ts = p
817
817
  end
818
- # line 819 "scan.rb"
818
+ # line 819 "scanner.rb"
819
819
  end
820
820
  _keys = cs << 1
821
821
  _inds = _parser_index_offsets[cs]
@@ -834,15 +834,16 @@ ts = p
834
834
  if _parser_trans_actions[_trans] != 0
835
835
  case _parser_trans_actions[_trans]
836
836
  when 24 then
837
- # line 5 "scan.rl"
837
+ # line 5 "scanner.rl"
838
838
  begin
839
839
  mark_pfx = p end
840
840
  when 2 then
841
- # line 6 "scan.rl"
841
+ # line 6 "scanner.rl"
842
842
  begin
843
843
 
844
844
  if data[mark_pfx..p-1] != @prefix
845
- @nodes.last << data[mark_pfx-1..p]
845
+ closing = data[mark_pfx-1,1] == '/'
846
+ @nodes.last << data[mark_pfx-(closing ? 2 : 1)..p]
846
847
  begin
847
848
  p += 1
848
849
  _goto_level = _out
@@ -852,41 +853,41 @@ ts = p
852
853
  end
853
854
  end
854
855
  when 3 then
855
- # line 12 "scan.rl"
856
+ # line 13 "scanner.rl"
856
857
  begin
857
858
  mark_stg = p end
858
859
  when 4 then
859
- # line 13 "scan.rl"
860
+ # line 14 "scanner.rl"
860
861
  begin
861
862
  @starttag = data[mark_stg..p-1] end
862
863
  when 11 then
863
- # line 14 "scan.rl"
864
+ # line 15 "scanner.rl"
864
865
  begin
865
866
  mark_attr = p end
866
867
  when 15 then
867
- # line 15 "scan.rl"
868
+ # line 16 "scanner.rl"
868
869
  begin
869
870
 
870
871
  @attrs[@nat] = @vat
871
872
  end
872
873
  when 5 then
873
- # line 24 "scan.rl"
874
+ # line 25 "scanner.rl"
874
875
  begin
875
876
  mark_nat = p end
876
877
  when 7 then
877
- # line 25 "scan.rl"
878
+ # line 26 "scanner.rl"
878
879
  begin
879
880
  @nat = data[mark_nat..p-1] end
880
881
  when 8 then
881
- # line 26 "scan.rl"
882
+ # line 27 "scanner.rl"
882
883
  begin
883
884
  mark_vat = p end
884
885
  when 10 then
885
- # line 27 "scan.rl"
886
+ # line 28 "scanner.rl"
886
887
  begin
887
888
  @vat = data[mark_vat..p-1] end
888
889
  when 27 then
889
- # line 78 "scan.rl"
890
+ # line 79 "scanner.rl"
890
891
  begin
891
892
  te = p+1
892
893
  begin
@@ -895,7 +896,7 @@ te = p+1
895
896
  end
896
897
  end
897
898
  when 29 then
898
- # line 78 "scan.rl"
899
+ # line 79 "scanner.rl"
899
900
  begin
900
901
  te = p
901
902
  p = p - 1; begin
@@ -904,7 +905,7 @@ p = p - 1; begin
904
905
  end
905
906
  end
906
907
  when 1 then
907
- # line 78 "scan.rl"
908
+ # line 79 "scanner.rl"
908
909
  begin
909
910
  begin p = ((te))-1; end
910
911
  begin
@@ -941,49 +942,49 @@ p = p - 1; begin
941
942
  end
942
943
  end
943
944
  when 13 then
944
- # line 14 "scan.rl"
945
+ # line 15 "scanner.rl"
945
946
  begin
946
947
  mark_attr = p end
947
- # line 15 "scan.rl"
948
+ # line 16 "scanner.rl"
948
949
  begin
949
950
 
950
951
  @attrs[@nat] = @vat
951
952
  end
952
953
  when 14 then
953
- # line 15 "scan.rl"
954
+ # line 16 "scanner.rl"
954
955
  begin
955
956
 
956
957
  @attrs[@nat] = @vat
957
958
  end
958
- # line 24 "scan.rl"
959
+ # line 25 "scanner.rl"
959
960
  begin
960
961
  mark_nat = p end
961
962
  when 18 then
962
- # line 26 "scan.rl"
963
+ # line 27 "scanner.rl"
963
964
  begin
964
965
  mark_vat = p end
965
- # line 14 "scan.rl"
966
+ # line 15 "scanner.rl"
966
967
  begin
967
968
  mark_attr = p end
968
969
  when 9 then
969
- # line 26 "scan.rl"
970
+ # line 27 "scanner.rl"
970
971
  begin
971
972
  mark_vat = p end
972
- # line 27 "scan.rl"
973
+ # line 28 "scanner.rl"
973
974
  begin
974
975
  @vat = data[mark_vat..p-1] end
975
976
  when 23 then
976
- # line 27 "scan.rl"
977
+ # line 28 "scanner.rl"
977
978
  begin
978
979
  @vat = data[mark_vat..p-1] end
979
- # line 26 "scan.rl"
980
+ # line 27 "scanner.rl"
980
981
  begin
981
982
  mark_vat = p end
982
983
  when 31 then
983
- # line 29 "scan.rl"
984
+ # line 30 "scanner.rl"
984
985
  begin
985
986
  @flavor = :open end
986
- # line 69 "scan.rl"
987
+ # line 70 "scanner.rl"
987
988
  begin
988
989
  te = p
989
990
  p = p - 1; begin
@@ -1002,10 +1003,10 @@ p = p - 1; begin
1002
1003
  end
1003
1004
  end
1004
1005
  when 30 then
1005
- # line 30 "scan.rl"
1006
+ # line 31 "scanner.rl"
1006
1007
  begin
1007
1008
  @flavor = :self end
1008
- # line 69 "scan.rl"
1009
+ # line 70 "scanner.rl"
1009
1010
  begin
1010
1011
  te = p
1011
1012
  p = p - 1; begin
@@ -1024,10 +1025,10 @@ p = p - 1; begin
1024
1025
  end
1025
1026
  end
1026
1027
  when 32 then
1027
- # line 31 "scan.rl"
1028
+ # line 32 "scanner.rl"
1028
1029
  begin
1029
1030
  @flavor = :close end
1030
- # line 69 "scan.rl"
1031
+ # line 70 "scanner.rl"
1031
1032
  begin
1032
1033
  te = p
1033
1034
  p = p - 1; begin
@@ -1050,7 +1051,7 @@ p = p - 1; begin
1050
1051
  begin
1051
1052
  te = p+1
1052
1053
  end
1053
- # line 69 "scan.rl"
1054
+ # line 70 "scanner.rl"
1054
1055
  begin
1055
1056
  act = 1; end
1056
1057
  when 28 then
@@ -1058,29 +1059,29 @@ act = 1; end
1058
1059
  begin
1059
1060
  te = p+1
1060
1061
  end
1061
- # line 78 "scan.rl"
1062
+ # line 79 "scanner.rl"
1062
1063
  begin
1063
1064
  act = 2; end
1064
1065
  when 12 then
1065
- # line 14 "scan.rl"
1066
+ # line 15 "scanner.rl"
1066
1067
  begin
1067
1068
  mark_attr = p end
1068
- # line 15 "scan.rl"
1069
+ # line 16 "scanner.rl"
1069
1070
  begin
1070
1071
 
1071
1072
  @attrs[@nat] = @vat
1072
1073
  end
1073
- # line 24 "scan.rl"
1074
+ # line 25 "scanner.rl"
1074
1075
  begin
1075
1076
  mark_nat = p end
1076
1077
  when 20 then
1077
- # line 26 "scan.rl"
1078
+ # line 27 "scanner.rl"
1078
1079
  begin
1079
1080
  mark_vat = p end
1080
- # line 14 "scan.rl"
1081
+ # line 15 "scanner.rl"
1081
1082
  begin
1082
1083
  mark_attr = p end
1083
- # line 15 "scan.rl"
1084
+ # line 16 "scanner.rl"
1084
1085
  begin
1085
1086
 
1086
1087
  @attrs[@nat] = @vat
@@ -1090,27 +1091,27 @@ act = 2; end
1090
1091
  begin
1091
1092
  te = p+1
1092
1093
  end
1093
- # line 15 "scan.rl"
1094
+ # line 16 "scanner.rl"
1094
1095
  begin
1095
1096
 
1096
1097
  @attrs[@nat] = @vat
1097
1098
  end
1098
- # line 69 "scan.rl"
1099
+ # line 70 "scanner.rl"
1099
1100
  begin
1100
1101
  act = 1; end
1101
1102
  when 19 then
1102
- # line 26 "scan.rl"
1103
+ # line 27 "scanner.rl"
1103
1104
  begin
1104
1105
  mark_vat = p end
1105
- # line 14 "scan.rl"
1106
+ # line 15 "scanner.rl"
1106
1107
  begin
1107
1108
  mark_attr = p end
1108
- # line 15 "scan.rl"
1109
+ # line 16 "scanner.rl"
1109
1110
  begin
1110
1111
 
1111
1112
  @attrs[@nat] = @vat
1112
1113
  end
1113
- # line 24 "scan.rl"
1114
+ # line 25 "scanner.rl"
1114
1115
  begin
1115
1116
  mark_nat = p end
1116
1117
  when 16 then
@@ -1118,15 +1119,15 @@ act = 1; end
1118
1119
  begin
1119
1120
  te = p+1
1120
1121
  end
1121
- # line 14 "scan.rl"
1122
+ # line 15 "scanner.rl"
1122
1123
  begin
1123
1124
  mark_attr = p end
1124
- # line 15 "scan.rl"
1125
+ # line 16 "scanner.rl"
1125
1126
  begin
1126
1127
 
1127
1128
  @attrs[@nat] = @vat
1128
1129
  end
1129
- # line 69 "scan.rl"
1130
+ # line 70 "scanner.rl"
1130
1131
  begin
1131
1132
  act = 1; end
1132
1133
  when 21 then
@@ -1134,21 +1135,21 @@ act = 1; end
1134
1135
  begin
1135
1136
  te = p+1
1136
1137
  end
1137
- # line 26 "scan.rl"
1138
+ # line 27 "scanner.rl"
1138
1139
  begin
1139
1140
  mark_vat = p end
1140
- # line 14 "scan.rl"
1141
+ # line 15 "scanner.rl"
1141
1142
  begin
1142
1143
  mark_attr = p end
1143
- # line 15 "scan.rl"
1144
+ # line 16 "scanner.rl"
1144
1145
  begin
1145
1146
 
1146
1147
  @attrs[@nat] = @vat
1147
1148
  end
1148
- # line 69 "scan.rl"
1149
+ # line 70 "scanner.rl"
1149
1150
  begin
1150
1151
  act = 1; end
1151
- # line 1152 "scan.rb"
1152
+ # line 1153 "scanner.rb"
1152
1153
  end
1153
1154
  end
1154
1155
  end
@@ -1158,7 +1159,7 @@ act = 1; end
1158
1159
  # line 1 "NONE"
1159
1160
  begin
1160
1161
  ts = nil; end
1161
- # line 1162 "scan.rb"
1162
+ # line 1163 "scanner.rb"
1162
1163
  end
1163
1164
 
1164
1165
  if cs == 0
@@ -1187,7 +1188,7 @@ ts = nil; end
1187
1188
  end
1188
1189
  end
1189
1190
 
1190
- # line 120 "scan.rl"
1191
+ # line 121 "scanner.rl"
1191
1192
  return p
1192
1193
  end
1193
1194
  end