xsdvi 1.0.0 → 1.0.2
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.
- checksums.yaml +4 -4
- data/README.adoc +364 -6
- data/lib/xsdvi/cli.rb +162 -10
- data/lib/xsdvi/comparison/dual_generator.rb +190 -0
- data/lib/xsdvi/comparison/html_generator.rb +181 -0
- data/lib/xsdvi/comparison/java_manager.rb +124 -0
- data/lib/xsdvi/comparison/metadata_extractor.rb +75 -0
- data/lib/xsdvi/svg/generator.rb +1 -0
- data/lib/xsdvi/svg/symbol.rb +39 -30
- data/lib/xsdvi/svg/symbols/attribute.rb +1 -1
- data/lib/xsdvi/svg/symbols/element.rb +1 -1
- data/lib/xsdvi/version.rb +1 -1
- data/lib/xsdvi/xsd_handler.rb +486 -24
- data/lib/xsdvi.rb +6 -0
- data/resources/comparison/template.html +234 -0
- data/resources/svg/defined_symbols.svg +9 -9
- data/resources/svg/menu_buttons.svg +6 -6
- data/resources/svg/script.js +264 -264
- data/resources/svg/style.css +28 -28
- data/resources/svg/style.html +2 -2
- metadata +8 -6
data/resources/svg/script.js
CHANGED
|
@@ -1,265 +1,265 @@
|
|
|
1
|
-
<script type='text/ecmascript'><![CDATA[
|
|
2
|
-
|
|
3
|
-
var efBoxes = [];
|
|
4
|
-
var eSvg = null;
|
|
5
|
-
|
|
6
|
-
////////// loadSVG()
|
|
7
|
-
function loadSVG() {
|
|
8
|
-
efBoxes = getElementsByClassName('box', document.getElementsByTagName('g'));
|
|
9
|
-
eSvg = document.getElementById('svg');
|
|
10
|
-
expandAll();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
////////// getElementsByClassName(string, nodeList)
|
|
14
|
-
function getElementsByClassName(sClass, nlNodes) {
|
|
15
|
-
var elements = [];
|
|
16
|
-
for (var i=0; i<nlNodes.length; i++) {
|
|
17
|
-
if(nlNodes.item(i).nodeType==1 && sClass==nlNodes.item(i).getAttribute('class')) {
|
|
18
|
-
elements.push(nlNodes.item(i));
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return elements;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
////////// show(string)
|
|
25
|
-
function show(sId) {
|
|
26
|
-
var useElement = document.getElementById('s'+sId);
|
|
27
|
-
var moveNext = false;
|
|
28
|
-
var eBoxLast;
|
|
29
|
-
var maxX = 500;
|
|
30
|
-
|
|
31
|
-
if (notPlus(useElement)) {
|
|
32
|
-
eBoxLast = document.getElementById(sId);
|
|
33
|
-
setPlus(useElement);
|
|
34
|
-
for (var i=0; i<efBoxes.length; i++) {
|
|
35
|
-
var eBox = efBoxes[i];
|
|
36
|
-
if (moveNext) {
|
|
37
|
-
move(eBoxLast, eBox);
|
|
38
|
-
}
|
|
39
|
-
else if (isDescendant(sId, eBox.id)) {
|
|
40
|
-
eBox.setAttribute('visibility', 'hidden');
|
|
41
|
-
}
|
|
42
|
-
else if (isHigherBranch(sId, eBox.id)) {
|
|
43
|
-
move(eBoxLast, eBox);
|
|
44
|
-
moveNext = true;
|
|
45
|
-
}
|
|
46
|
-
if (eBox.getAttribute('visibility') != 'hidden') {
|
|
47
|
-
eBoxLast = eBox;
|
|
48
|
-
x = xTrans(eBox);
|
|
49
|
-
if (x > maxX) maxX = x;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
else {
|
|
55
|
-
setMinus(useElement);
|
|
56
|
-
var skipDescendantsOf;
|
|
57
|
-
for (var i=0; i<efBoxes.length; i++) {
|
|
58
|
-
var eBox = efBoxes[i];
|
|
59
|
-
if (moveNext) {
|
|
60
|
-
move(eBoxLast, eBox);
|
|
61
|
-
}
|
|
62
|
-
else if (isDescendant(sId, eBox.id) && (!skipDescendantsOf || !isDescendant(skipDescendantsOf.id, eBox.id))) {
|
|
63
|
-
eBox.setAttribute('visibility', 'visible');
|
|
64
|
-
move(eBoxLast, eBox);
|
|
65
|
-
if (nextClosed(eBox)) skipDescendantsOf = eBox;
|
|
66
|
-
}
|
|
67
|
-
else if (isHigherBranch(sId, eBox.id)) {
|
|
68
|
-
move(eBoxLast, eBox);
|
|
69
|
-
moveNext = true;
|
|
70
|
-
}
|
|
71
|
-
if (eBox.getAttribute('visibility') != 'hidden') {
|
|
72
|
-
eBoxLast = eBox;
|
|
73
|
-
x = xTrans(eBox);
|
|
74
|
-
if (x > maxX) maxX = x;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
//setHeight(yTrans(eBoxLast)+"+(AbstractSymbol.MAX_HEIGHT+AbstractSymbol.Y_INDENT)+");\n"+
|
|
79
|
-
setHeight(yTrans(eBoxLast)+%HEIGHT_SUM%);
|
|
80
|
-
setWidth(maxX+360);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
////////// collapseAll()
|
|
84
|
-
function collapseAll() {
|
|
85
|
-
for (var i=0; i<efBoxes.length; i++) {
|
|
86
|
-
var eBox = efBoxes[i];
|
|
87
|
-
var useElement = document.getElementById('s'+eBox.id);
|
|
88
|
-
if (useElement) setPlus(useElement);
|
|
89
|
-
if (eBox.id != '_1') eBox.setAttribute('visibility', 'hidden');
|
|
90
|
-
}
|
|
91
|
-
setHeight(400);
|
|
92
|
-
setWidth(500);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
////////// expandAll()
|
|
96
|
-
function expandAll() {
|
|
97
|
-
var eBoxLast;
|
|
98
|
-
var maxX = 0;
|
|
99
|
-
for (var i=0; i<efBoxes.length; i++) {
|
|
100
|
-
var eBox = efBoxes[i];
|
|
101
|
-
var useElement = document.getElementById('s'+eBox.id);
|
|
102
|
-
if (useElement) setMinus(useElement);
|
|
103
|
-
move(eBoxLast, eBox);
|
|
104
|
-
eBox.setAttribute('visibility', 'visible');
|
|
105
|
-
eBoxLast = eBox;
|
|
106
|
-
var x = xTrans(eBox);
|
|
107
|
-
if (x > maxX) maxX = x;
|
|
108
|
-
}
|
|
109
|
-
//setHeight(yTrans(eBoxLast)+"+(AbstractSymbol.MAX_HEIGHT+AbstractSymbol.Y_INDENT)+");\n"+
|
|
110
|
-
setHeight(yTrans(eBoxLast)+%HEIGHT_SUM%);
|
|
111
|
-
setWidth(maxX+360);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
////////// makeVisible(string)
|
|
115
|
-
function makeVisible(sId) {
|
|
116
|
-
var childNodes = document.getElementById(sId).childNodes;
|
|
117
|
-
var hidden = getElementsByClassName('hidden', childNodes);
|
|
118
|
-
var visible = getElementsByClassName('visible', childNodes);
|
|
119
|
-
inheritVisibility(hidden);
|
|
120
|
-
hiddenVisibility(visible);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
////////// makeHidden(string)
|
|
124
|
-
function makeHidden(sId) {
|
|
125
|
-
var childNodes = document.getElementById(sId).childNodes;
|
|
126
|
-
var hidden = getElementsByClassName('hidden', childNodes);
|
|
127
|
-
var visible = getElementsByClassName('visible', childNodes);
|
|
128
|
-
inheritVisibility(visible);
|
|
129
|
-
hiddenVisibility(hidden);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
////////// inheritVisibility(element[])
|
|
133
|
-
function inheritVisibility(efElements) {
|
|
134
|
-
for (var i=0; i<efElements.length; i++) {
|
|
135
|
-
efElements[i].setAttribute('visibility', 'inherit');
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
////////// hiddenVisibility(element[])
|
|
140
|
-
function hiddenVisibility(efElements) {
|
|
141
|
-
for (var i=0; i<efElements.length; i++) {
|
|
142
|
-
efElements[i].setAttribute('visibility', 'hidden');
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
////////// nextClosed(element)
|
|
147
|
-
function nextClosed(eBox) {
|
|
148
|
-
var useElement = document.getElementById('s'+eBox.id);
|
|
149
|
-
return (useElement && !notPlus(useElement));
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
////////// isHigherBranch(string, string)
|
|
153
|
-
function isHigherBranch(sSerialLower, sSerialHigher) {
|
|
154
|
-
var sLower = sSerialLower.split('_');
|
|
155
|
-
var sHigher = sSerialHigher.split('_');
|
|
156
|
-
for (var i=0; i<sLower.length; i++) {
|
|
157
|
-
if (Number(sHigher[i]) > Number(sLower[i])) return true;
|
|
158
|
-
else if (Number(sHigher[i]) < Number(sLower[i])) return false;
|
|
159
|
-
}
|
|
160
|
-
return false;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
////////// isOnHigherLevel(element, element)
|
|
164
|
-
function isOnHigherLevel(eBoxLower, eBoxHigher) {
|
|
165
|
-
var sLower = eBoxLower.id.split('_');
|
|
166
|
-
var sHigher = eBoxHigher.id.split('_');
|
|
167
|
-
for (var i=0; i<sLower.length; i++) {
|
|
168
|
-
if (Number(sHigher[i]) > Number(sLower[i])) return true;
|
|
169
|
-
}
|
|
170
|
-
return false;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
////////// isDescendant(string, string)
|
|
174
|
-
function isDescendant(sSerialAsc, sSerialDesc) {
|
|
175
|
-
return (sSerialDesc.length > sSerialAsc.length && sSerialDesc.indexOf(sSerialAsc) === 0);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
////////// getParent(element)
|
|
179
|
-
function getParent(eBox) {
|
|
180
|
-
var serial = eBox.id.substring(0, eBox.id.lastIndexOf('_'));
|
|
181
|
-
return document.getElementById(serial);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
////////// move(element, element)
|
|
185
|
-
function move(eBoxLast, eBox) {
|
|
186
|
-
if (!eBoxLast) return;
|
|
187
|
-
if (isOnHigherLevel(eBoxLast, eBox)) {
|
|
188
|
-
//setYTrans(eBox, yTrans(eBoxLast)+"+(AbstractSymbol.MAX_HEIGHT+AbstractSymbol.Y_INDENT)+");\n"+
|
|
189
|
-
var attDescHeight = eBoxLast.getAttribute('data-desc-height-rest');
|
|
190
|
-
var attDescX = Number(eBoxLast.getAttribute('data-desc-x'));
|
|
191
|
-
var attX = xTrans(eBox);
|
|
192
|
-
var descHeight = Number(attDescHeight);
|
|
193
|
-
var heightAddon = 0;
|
|
194
|
-
|
|
195
|
-
var currWidth = eBox.getElementsByClassName("shadow")[0];
|
|
196
|
-
if (currWidth) {
|
|
197
|
-
currWidth = Number(currWidth.getAttribute("width"));
|
|
198
|
-
} else {
|
|
199
|
-
currWidth = 0;
|
|
200
|
-
}
|
|
201
|
-
if(descHeight && ((attDescX >= attX && attDescX < attX + currWidth) || (attX < attDescX))) heightAddon = descHeight;
|
|
202
|
-
|
|
203
|
-
setYTrans(eBox, yTrans(eBoxLast)+%HEIGHT_SUM%+heightAddon);
|
|
204
|
-
var parent = getParent(eBox);
|
|
205
|
-
var line = document.getElementById('p'+eBox.id);
|
|
206
|
-
if (!parent || !line) return;
|
|
207
|
-
//" line.y1.baseVal.valueInSpecifiedUnits = yTrans(parent)-yTrans(eBox)+"+AbstractSymbol.MAX_HEIGHT/2+";
|
|
208
|
-
//line.setAttribute('y1', String(yTrans(parent)-yTrans(eBox)+"+AbstractSymbol.MAX_HEIGHT/2+"));\n"+
|
|
209
|
-
line.setAttribute('y1', String(yTrans(parent)-yTrans(eBox)+%HEIGHT_HALF%));
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
setYTrans(eBox, yTrans(eBoxLast));
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
////////// notPlus(element)
|
|
217
|
-
function notPlus(eUseElement) {
|
|
218
|
-
return (eUseElement.getAttributeNS('http://www.w3.org/1999/xlink', 'href') != '#plus');
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
////////// setPlus(element)
|
|
222
|
-
function setPlus(eUseElement) {
|
|
223
|
-
eUseElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#plus');
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
////////// setMinus(element)
|
|
227
|
-
function setMinus(eUseElement) {
|
|
228
|
-
eUseElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#minus');
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
////////// setHeight(number)
|
|
232
|
-
function setHeight(nHeight) {
|
|
233
|
-
eSvg.setAttribute('height', nHeight);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
////////// setWidth(number)
|
|
237
|
-
function setWidth(nWidth) {
|
|
238
|
-
eSvg.setAttribute('width', nWidth);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
////////// xyTrans(element)
|
|
242
|
-
function xTrans(eBox) {
|
|
243
|
-
//" return eBox.transform.baseVal.getItem(0).matrix.e;
|
|
244
|
-
var transform = eBox.getAttribute('transform');
|
|
245
|
-
var x = Number(transform.substring(10, Number(transform.length)-1).split(',')[0]);
|
|
246
|
-
if(!x) x = 0;
|
|
247
|
-
return x;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
////////// yTrans(element)
|
|
251
|
-
function yTrans(eBox) {
|
|
252
|
-
//" return eBox.transform.baseVal.getItem(0).matrix.f;
|
|
253
|
-
var transform = eBox.getAttribute('transform');
|
|
254
|
-
var y = Number(transform.substring(10, Number(transform.length)-1).split(',')[1]);
|
|
255
|
-
if(!y) y = 0;
|
|
256
|
-
return y;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
////////// setYTrans(element, number)
|
|
260
|
-
function setYTrans(eBox, nValue) {
|
|
261
|
-
//" return eBox.transform.baseVal.getItem(0).matrix.f = nValue;
|
|
262
|
-
eBox.setAttribute('transform', 'translate('+xTrans(eBox)+','+nValue+')');
|
|
263
|
-
}
|
|
264
|
-
|
|
1
|
+
<script type='text/ecmascript'><![CDATA[
|
|
2
|
+
|
|
3
|
+
var efBoxes = [];
|
|
4
|
+
var eSvg = null;
|
|
5
|
+
|
|
6
|
+
////////// loadSVG()
|
|
7
|
+
function loadSVG() {
|
|
8
|
+
efBoxes = getElementsByClassName('box', document.getElementsByTagName('g'));
|
|
9
|
+
eSvg = document.getElementById('svg');
|
|
10
|
+
expandAll();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
////////// getElementsByClassName(string, nodeList)
|
|
14
|
+
function getElementsByClassName(sClass, nlNodes) {
|
|
15
|
+
var elements = [];
|
|
16
|
+
for (var i=0; i<nlNodes.length; i++) {
|
|
17
|
+
if(nlNodes.item(i).nodeType==1 && sClass==nlNodes.item(i).getAttribute('class')) {
|
|
18
|
+
elements.push(nlNodes.item(i));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return elements;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
////////// show(string)
|
|
25
|
+
function show(sId) {
|
|
26
|
+
var useElement = document.getElementById('s'+sId);
|
|
27
|
+
var moveNext = false;
|
|
28
|
+
var eBoxLast;
|
|
29
|
+
var maxX = 500;
|
|
30
|
+
|
|
31
|
+
if (notPlus(useElement)) {
|
|
32
|
+
eBoxLast = document.getElementById(sId);
|
|
33
|
+
setPlus(useElement);
|
|
34
|
+
for (var i=0; i<efBoxes.length; i++) {
|
|
35
|
+
var eBox = efBoxes[i];
|
|
36
|
+
if (moveNext) {
|
|
37
|
+
move(eBoxLast, eBox);
|
|
38
|
+
}
|
|
39
|
+
else if (isDescendant(sId, eBox.id)) {
|
|
40
|
+
eBox.setAttribute('visibility', 'hidden');
|
|
41
|
+
}
|
|
42
|
+
else if (isHigherBranch(sId, eBox.id)) {
|
|
43
|
+
move(eBoxLast, eBox);
|
|
44
|
+
moveNext = true;
|
|
45
|
+
}
|
|
46
|
+
if (eBox.getAttribute('visibility') != 'hidden') {
|
|
47
|
+
eBoxLast = eBox;
|
|
48
|
+
x = xTrans(eBox);
|
|
49
|
+
if (x > maxX) maxX = x;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
else {
|
|
55
|
+
setMinus(useElement);
|
|
56
|
+
var skipDescendantsOf;
|
|
57
|
+
for (var i=0; i<efBoxes.length; i++) {
|
|
58
|
+
var eBox = efBoxes[i];
|
|
59
|
+
if (moveNext) {
|
|
60
|
+
move(eBoxLast, eBox);
|
|
61
|
+
}
|
|
62
|
+
else if (isDescendant(sId, eBox.id) && (!skipDescendantsOf || !isDescendant(skipDescendantsOf.id, eBox.id))) {
|
|
63
|
+
eBox.setAttribute('visibility', 'visible');
|
|
64
|
+
move(eBoxLast, eBox);
|
|
65
|
+
if (nextClosed(eBox)) skipDescendantsOf = eBox;
|
|
66
|
+
}
|
|
67
|
+
else if (isHigherBranch(sId, eBox.id)) {
|
|
68
|
+
move(eBoxLast, eBox);
|
|
69
|
+
moveNext = true;
|
|
70
|
+
}
|
|
71
|
+
if (eBox.getAttribute('visibility') != 'hidden') {
|
|
72
|
+
eBoxLast = eBox;
|
|
73
|
+
x = xTrans(eBox);
|
|
74
|
+
if (x > maxX) maxX = x;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//setHeight(yTrans(eBoxLast)+"+(AbstractSymbol.MAX_HEIGHT+AbstractSymbol.Y_INDENT)+");\n"+
|
|
79
|
+
setHeight(yTrans(eBoxLast)+%HEIGHT_SUM%);
|
|
80
|
+
setWidth(maxX+360);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
////////// collapseAll()
|
|
84
|
+
function collapseAll() {
|
|
85
|
+
for (var i=0; i<efBoxes.length; i++) {
|
|
86
|
+
var eBox = efBoxes[i];
|
|
87
|
+
var useElement = document.getElementById('s'+eBox.id);
|
|
88
|
+
if (useElement) setPlus(useElement);
|
|
89
|
+
if (eBox.id != '_1') eBox.setAttribute('visibility', 'hidden');
|
|
90
|
+
}
|
|
91
|
+
setHeight(400);
|
|
92
|
+
setWidth(500);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
////////// expandAll()
|
|
96
|
+
function expandAll() {
|
|
97
|
+
var eBoxLast;
|
|
98
|
+
var maxX = 0;
|
|
99
|
+
for (var i=0; i<efBoxes.length; i++) {
|
|
100
|
+
var eBox = efBoxes[i];
|
|
101
|
+
var useElement = document.getElementById('s'+eBox.id);
|
|
102
|
+
if (useElement) setMinus(useElement);
|
|
103
|
+
move(eBoxLast, eBox);
|
|
104
|
+
eBox.setAttribute('visibility', 'visible');
|
|
105
|
+
eBoxLast = eBox;
|
|
106
|
+
var x = xTrans(eBox);
|
|
107
|
+
if (x > maxX) maxX = x;
|
|
108
|
+
}
|
|
109
|
+
//setHeight(yTrans(eBoxLast)+"+(AbstractSymbol.MAX_HEIGHT+AbstractSymbol.Y_INDENT)+");\n"+
|
|
110
|
+
setHeight(yTrans(eBoxLast)+%HEIGHT_SUM%);
|
|
111
|
+
setWidth(maxX+360);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
////////// makeVisible(string)
|
|
115
|
+
function makeVisible(sId) {
|
|
116
|
+
var childNodes = document.getElementById(sId).childNodes;
|
|
117
|
+
var hidden = getElementsByClassName('hidden', childNodes);
|
|
118
|
+
var visible = getElementsByClassName('visible', childNodes);
|
|
119
|
+
inheritVisibility(hidden);
|
|
120
|
+
hiddenVisibility(visible);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
////////// makeHidden(string)
|
|
124
|
+
function makeHidden(sId) {
|
|
125
|
+
var childNodes = document.getElementById(sId).childNodes;
|
|
126
|
+
var hidden = getElementsByClassName('hidden', childNodes);
|
|
127
|
+
var visible = getElementsByClassName('visible', childNodes);
|
|
128
|
+
inheritVisibility(visible);
|
|
129
|
+
hiddenVisibility(hidden);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
////////// inheritVisibility(element[])
|
|
133
|
+
function inheritVisibility(efElements) {
|
|
134
|
+
for (var i=0; i<efElements.length; i++) {
|
|
135
|
+
efElements[i].setAttribute('visibility', 'inherit');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
////////// hiddenVisibility(element[])
|
|
140
|
+
function hiddenVisibility(efElements) {
|
|
141
|
+
for (var i=0; i<efElements.length; i++) {
|
|
142
|
+
efElements[i].setAttribute('visibility', 'hidden');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
////////// nextClosed(element)
|
|
147
|
+
function nextClosed(eBox) {
|
|
148
|
+
var useElement = document.getElementById('s'+eBox.id);
|
|
149
|
+
return (useElement && !notPlus(useElement));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
////////// isHigherBranch(string, string)
|
|
153
|
+
function isHigherBranch(sSerialLower, sSerialHigher) {
|
|
154
|
+
var sLower = sSerialLower.split('_');
|
|
155
|
+
var sHigher = sSerialHigher.split('_');
|
|
156
|
+
for (var i=0; i<sLower.length; i++) {
|
|
157
|
+
if (Number(sHigher[i]) > Number(sLower[i])) return true;
|
|
158
|
+
else if (Number(sHigher[i]) < Number(sLower[i])) return false;
|
|
159
|
+
}
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
////////// isOnHigherLevel(element, element)
|
|
164
|
+
function isOnHigherLevel(eBoxLower, eBoxHigher) {
|
|
165
|
+
var sLower = eBoxLower.id.split('_');
|
|
166
|
+
var sHigher = eBoxHigher.id.split('_');
|
|
167
|
+
for (var i=0; i<sLower.length; i++) {
|
|
168
|
+
if (Number(sHigher[i]) > Number(sLower[i])) return true;
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
////////// isDescendant(string, string)
|
|
174
|
+
function isDescendant(sSerialAsc, sSerialDesc) {
|
|
175
|
+
return (sSerialDesc.length > sSerialAsc.length && sSerialDesc.indexOf(sSerialAsc) === 0);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
////////// getParent(element)
|
|
179
|
+
function getParent(eBox) {
|
|
180
|
+
var serial = eBox.id.substring(0, eBox.id.lastIndexOf('_'));
|
|
181
|
+
return document.getElementById(serial);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
////////// move(element, element)
|
|
185
|
+
function move(eBoxLast, eBox) {
|
|
186
|
+
if (!eBoxLast) return;
|
|
187
|
+
if (isOnHigherLevel(eBoxLast, eBox)) {
|
|
188
|
+
//setYTrans(eBox, yTrans(eBoxLast)+"+(AbstractSymbol.MAX_HEIGHT+AbstractSymbol.Y_INDENT)+");\n"+
|
|
189
|
+
var attDescHeight = eBoxLast.getAttribute('data-desc-height-rest');
|
|
190
|
+
var attDescX = Number(eBoxLast.getAttribute('data-desc-x'));
|
|
191
|
+
var attX = xTrans(eBox);
|
|
192
|
+
var descHeight = Number(attDescHeight);
|
|
193
|
+
var heightAddon = 0;
|
|
194
|
+
|
|
195
|
+
var currWidth = eBox.getElementsByClassName("shadow")[0];
|
|
196
|
+
if (currWidth) {
|
|
197
|
+
currWidth = Number(currWidth.getAttribute("width"));
|
|
198
|
+
} else {
|
|
199
|
+
currWidth = 0;
|
|
200
|
+
}
|
|
201
|
+
if(descHeight && ((attDescX >= attX && attDescX < attX + currWidth) || (attX < attDescX))) heightAddon = descHeight;
|
|
202
|
+
|
|
203
|
+
setYTrans(eBox, yTrans(eBoxLast)+%HEIGHT_SUM%+heightAddon);
|
|
204
|
+
var parent = getParent(eBox);
|
|
205
|
+
var line = document.getElementById('p'+eBox.id);
|
|
206
|
+
if (!parent || !line) return;
|
|
207
|
+
//" line.y1.baseVal.valueInSpecifiedUnits = yTrans(parent)-yTrans(eBox)+"+AbstractSymbol.MAX_HEIGHT/2+";
|
|
208
|
+
//line.setAttribute('y1', String(yTrans(parent)-yTrans(eBox)+"+AbstractSymbol.MAX_HEIGHT/2+"));\n"+
|
|
209
|
+
line.setAttribute('y1', String(yTrans(parent)-yTrans(eBox)+%HEIGHT_HALF%));
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
setYTrans(eBox, yTrans(eBoxLast));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
////////// notPlus(element)
|
|
217
|
+
function notPlus(eUseElement) {
|
|
218
|
+
return (eUseElement.getAttributeNS('http://www.w3.org/1999/xlink', 'href') != '#plus');
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
////////// setPlus(element)
|
|
222
|
+
function setPlus(eUseElement) {
|
|
223
|
+
eUseElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#plus');
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
////////// setMinus(element)
|
|
227
|
+
function setMinus(eUseElement) {
|
|
228
|
+
eUseElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#minus');
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
////////// setHeight(number)
|
|
232
|
+
function setHeight(nHeight) {
|
|
233
|
+
eSvg.setAttribute('height', nHeight);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
////////// setWidth(number)
|
|
237
|
+
function setWidth(nWidth) {
|
|
238
|
+
eSvg.setAttribute('width', nWidth);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
////////// xyTrans(element)
|
|
242
|
+
function xTrans(eBox) {
|
|
243
|
+
//" return eBox.transform.baseVal.getItem(0).matrix.e;
|
|
244
|
+
var transform = eBox.getAttribute('transform');
|
|
245
|
+
var x = Number(transform.substring(10, Number(transform.length)-1).split(',')[0]);
|
|
246
|
+
if(!x) x = 0;
|
|
247
|
+
return x;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
////////// yTrans(element)
|
|
251
|
+
function yTrans(eBox) {
|
|
252
|
+
//" return eBox.transform.baseVal.getItem(0).matrix.f;
|
|
253
|
+
var transform = eBox.getAttribute('transform');
|
|
254
|
+
var y = Number(transform.substring(10, Number(transform.length)-1).split(',')[1]);
|
|
255
|
+
if(!y) y = 0;
|
|
256
|
+
return y;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
////////// setYTrans(element, number)
|
|
260
|
+
function setYTrans(eBox, nValue) {
|
|
261
|
+
//" return eBox.transform.baseVal.getItem(0).matrix.f = nValue;
|
|
262
|
+
eBox.setAttribute('transform', 'translate('+xTrans(eBox)+','+nValue+')');
|
|
263
|
+
}
|
|
264
|
+
|
|
265
265
|
]]></script>
|
data/resources/svg/style.css
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
svg {pointer-events: none;}
|
|
2
|
-
text {font-family: arial; font-size: 11px;}
|
|
3
|
-
line, polyline, polygon {fill: none; stroke: black;}
|
|
4
|
-
|
|
5
|
-
.strong {font-size: 12px; font-weight: bold;}
|
|
6
|
-
.small {font-size: 10px;}
|
|
7
|
-
.big {font-size: 15px; fill: #882222;}
|
|
8
|
-
|
|
9
|
-
.button {fill: white; stroke: black; pointer-events: all;}
|
|
10
|
-
.shadow {fill: #ccccd8; stroke: none;}
|
|
11
|
-
.connection {fill: none; stroke: #666666;}
|
|
12
|
-
.empty {fill: none; stroke: black;}
|
|
13
|
-
.filled {fill: black; stroke: none;}
|
|
14
|
-
|
|
15
|
-
.boxelement, .boxany, .boxattribute1, .boxanyattribute {fill: #FFFFBB; stroke: #776633; pointer-events: all;}
|
|
16
|
-
.boxelementoptional {fill: #FFFFBB; stroke: #776633; pointer-events: all; stroke-dasharray: 2;}
|
|
17
|
-
.boxattribute2 {fill: #FFFFBB; stroke: #776633; pointer-events: all; stroke-dasharray: 2;}
|
|
18
|
-
.boxschema, .boxloop, .boxcompositor {fill: #E7EBF3; stroke: #666677;}
|
|
19
|
-
.boxselector, .boxfield, .boxidc {fill: #E0F7B7; stroke: #667733;}
|
|
20
|
-
|
|
21
|
-
.lax {fill: white; stroke: black;}
|
|
22
|
-
.skip {fill: #cc6666; stroke: black;}
|
|
23
|
-
.strict {fill: black; stroke: none;}
|
|
24
|
-
|
|
25
|
-
.border {fill: #f9f9f9; stroke: #dddddd;}
|
|
26
|
-
|
|
27
|
-
.elementlink {fill: blue;}
|
|
28
|
-
|
|
1
|
+
svg {pointer-events: none;}
|
|
2
|
+
text {font-family: arial; font-size: 11px;}
|
|
3
|
+
line, polyline, polygon {fill: none; stroke: black;}
|
|
4
|
+
|
|
5
|
+
.strong {font-size: 12px; font-weight: bold;}
|
|
6
|
+
.small {font-size: 10px;}
|
|
7
|
+
.big {font-size: 15px; fill: #882222;}
|
|
8
|
+
|
|
9
|
+
.button {fill: white; stroke: black; pointer-events: all;}
|
|
10
|
+
.shadow {fill: #ccccd8; stroke: none;}
|
|
11
|
+
.connection {fill: none; stroke: #666666;}
|
|
12
|
+
.empty {fill: none; stroke: black;}
|
|
13
|
+
.filled {fill: black; stroke: none;}
|
|
14
|
+
|
|
15
|
+
.boxelement, .boxany, .boxattribute1, .boxanyattribute {fill: #FFFFBB; stroke: #776633; pointer-events: all;}
|
|
16
|
+
.boxelementoptional {fill: #FFFFBB; stroke: #776633; pointer-events: all; stroke-dasharray: 2;}
|
|
17
|
+
.boxattribute2 {fill: #FFFFBB; stroke: #776633; pointer-events: all; stroke-dasharray: 2;}
|
|
18
|
+
.boxschema, .boxloop, .boxcompositor {fill: #E7EBF3; stroke: #666677;}
|
|
19
|
+
.boxselector, .boxfield, .boxidc {fill: #E0F7B7; stroke: #667733;}
|
|
20
|
+
|
|
21
|
+
.lax {fill: white; stroke: black;}
|
|
22
|
+
.skip {fill: #cc6666; stroke: black;}
|
|
23
|
+
.strict {fill: black; stroke: none;}
|
|
24
|
+
|
|
25
|
+
.border {fill: #f9f9f9; stroke: #dddddd;}
|
|
26
|
+
|
|
27
|
+
.elementlink {fill: blue;}
|
|
28
|
+
|
|
29
29
|
.desc {fill: #888888;}
|
data/resources/svg/style.html
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<style type='text/css'><![CDATA[
|
|
2
|
-
%STYLE%
|
|
1
|
+
<style type='text/css'><![CDATA[
|
|
2
|
+
%STYLE%
|
|
3
3
|
]]></style>
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: xsdvi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: nokogiri
|
|
@@ -52,6 +51,10 @@ files:
|
|
|
52
51
|
- exe/xsdvi
|
|
53
52
|
- lib/xsdvi.rb
|
|
54
53
|
- lib/xsdvi/cli.rb
|
|
54
|
+
- lib/xsdvi/comparison/dual_generator.rb
|
|
55
|
+
- lib/xsdvi/comparison/html_generator.rb
|
|
56
|
+
- lib/xsdvi/comparison/java_manager.rb
|
|
57
|
+
- lib/xsdvi/comparison/metadata_extractor.rb
|
|
55
58
|
- lib/xsdvi/svg/generator.rb
|
|
56
59
|
- lib/xsdvi/svg/symbol.rb
|
|
57
60
|
- lib/xsdvi/svg/symbols/all.rb
|
|
@@ -75,6 +78,7 @@ files:
|
|
|
75
78
|
- lib/xsdvi/utils/writer.rb
|
|
76
79
|
- lib/xsdvi/version.rb
|
|
77
80
|
- lib/xsdvi/xsd_handler.rb
|
|
81
|
+
- resources/comparison/template.html
|
|
78
82
|
- resources/svg/defined_symbols.svg
|
|
79
83
|
- resources/svg/doctype.txt
|
|
80
84
|
- resources/svg/menu_buttons.svg
|
|
@@ -91,7 +95,6 @@ licenses:
|
|
|
91
95
|
- BSD-3-Clause
|
|
92
96
|
metadata:
|
|
93
97
|
rubygems_mfa_required: 'true'
|
|
94
|
-
post_install_message:
|
|
95
98
|
rdoc_options: []
|
|
96
99
|
require_paths:
|
|
97
100
|
- lib
|
|
@@ -106,8 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
106
109
|
- !ruby/object:Gem::Version
|
|
107
110
|
version: '0'
|
|
108
111
|
requirements: []
|
|
109
|
-
rubygems_version: 3.
|
|
110
|
-
signing_key:
|
|
112
|
+
rubygems_version: 3.6.9
|
|
111
113
|
specification_version: 4
|
|
112
114
|
summary: Generate SVG diagrams from XSD schemas
|
|
113
115
|
test_files: []
|