daff 1.1.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.
Files changed (62) hide show
  1. data/bin/daff.rb +3 -0
  2. data/lib/daff.rb +95 -0
  3. data/lib/lib/coopy/alignment.rb +409 -0
  4. data/lib/lib/coopy/bag.rb +10 -0
  5. data/lib/lib/coopy/cell_info.rb +29 -0
  6. data/lib/lib/coopy/change.rb +48 -0
  7. data/lib/lib/coopy/change_type.rb +21 -0
  8. data/lib/lib/coopy/compare.rb +98 -0
  9. data/lib/lib/coopy/compare_flags.rb +46 -0
  10. data/lib/lib/coopy/compare_table.rb +402 -0
  11. data/lib/lib/coopy/coopy.rb +414 -0
  12. data/lib/lib/coopy/cross_match.rb +16 -0
  13. data/lib/lib/coopy/csv.rb +181 -0
  14. data/lib/lib/coopy/diff_render.rb +254 -0
  15. data/lib/lib/coopy/highlight_patch.rb +651 -0
  16. data/lib/lib/coopy/highlight_patch_unit.rb +37 -0
  17. data/lib/lib/coopy/index.rb +101 -0
  18. data/lib/lib/coopy/index_item.rb +20 -0
  19. data/lib/lib/coopy/index_pair.rb +87 -0
  20. data/lib/lib/coopy/mover.rb +195 -0
  21. data/lib/lib/coopy/ordering.rb +49 -0
  22. data/lib/lib/coopy/report.rb +23 -0
  23. data/lib/lib/coopy/row.rb +9 -0
  24. data/lib/lib/coopy/simple_cell.rb +23 -0
  25. data/lib/lib/coopy/simple_table.rb +242 -0
  26. data/lib/lib/coopy/simple_view.rb +41 -0
  27. data/lib/lib/coopy/sparse_sheet.rb +50 -0
  28. data/lib/lib/coopy/table.rb +17 -0
  29. data/lib/lib/coopy/table_comparison_state.rb +32 -0
  30. data/lib/lib/coopy/table_diff.rb +738 -0
  31. data/lib/lib/coopy/table_io.rb +33 -0
  32. data/lib/lib/coopy/table_modifier.rb +39 -0
  33. data/lib/lib/coopy/table_text.rb +25 -0
  34. data/lib/lib/coopy/unit.rb +70 -0
  35. data/lib/lib/coopy/view.rb +14 -0
  36. data/lib/lib/coopy/viewed_datum.rb +37 -0
  37. data/lib/lib/coopy/viterbi.rb +172 -0
  38. data/lib/lib/coopy/workspace.rb +22 -0
  39. data/lib/lib/haxe/ds/int_map.rb +14 -0
  40. data/lib/lib/haxe/ds/string_map.rb +14 -0
  41. data/lib/lib/haxe/format/json_parser.rb +264 -0
  42. data/lib/lib/haxe/format/json_printer.rb +239 -0
  43. data/lib/lib/haxe/io/bytes.rb +33 -0
  44. data/lib/lib/haxe/io/eof.rb +17 -0
  45. data/lib/lib/haxe/io/error.rb +21 -0
  46. data/lib/lib/haxe/io/output.rb +40 -0
  47. data/lib/lib/haxe/log.rb +16 -0
  48. data/lib/lib/hx_overrides.rb +18 -0
  49. data/lib/lib/imap.rb +6 -0
  50. data/lib/lib/lambda.rb +36 -0
  51. data/lib/lib/list.rb +42 -0
  52. data/lib/lib/rb/boot.rb +19 -0
  53. data/lib/lib/rb/ruby_iterator.rb +49 -0
  54. data/lib/lib/reflect.rb +29 -0
  55. data/lib/lib/string_buf.rb +14 -0
  56. data/lib/lib/sys.rb +19 -0
  57. data/lib/lib/sys/io/file.rb +19 -0
  58. data/lib/lib/sys/io/file_handle.rb +17 -0
  59. data/lib/lib/sys/io/file_output.rb +35 -0
  60. data/lib/lib/type.rb +32 -0
  61. data/lib/lib/value_type.rb +22 -0
  62. metadata +181 -0
@@ -0,0 +1,738 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ module Coopy
5
+ class TableDiff
6
+
7
+ def initialize(align,flags)
8
+ @align = align
9
+ @flags = flags
10
+ end
11
+
12
+ protected
13
+
14
+ attr_accessor :align
15
+ attr_accessor :flags
16
+ attr_accessor :l_prev
17
+ attr_accessor :r_prev
18
+
19
+ public
20
+
21
+ def get_separator(t,t2,root)
22
+ sep = root
23
+ w = t.get_width
24
+ h = t.get_height
25
+ view = t.get_cell_view
26
+ begin
27
+ _g = 0
28
+ while(_g < h)
29
+ y = _g
30
+ _g+=1
31
+ begin
32
+ _g1 = 0
33
+ while(_g1 < w)
34
+ x = _g1
35
+ _g1+=1
36
+ txt = view.to_s(t.get_cell(x,y))
37
+ next if txt == nil
38
+ while((txt.index(sep,nil || 0) || -1) >= 0)
39
+ sep = "-" + _hx_str(sep)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ if t2 != nil
46
+ w = t2.get_width
47
+ h = t2.get_height
48
+ begin
49
+ _g2 = 0
50
+ while(_g2 < h)
51
+ y1 = _g2
52
+ _g2+=1
53
+ begin
54
+ _g11 = 0
55
+ while(_g11 < w)
56
+ x1 = _g11
57
+ _g11+=1
58
+ txt1 = view.to_s(t2.get_cell(x1,y1))
59
+ next if txt1 == nil
60
+ while((txt1.index(sep,nil || 0) || -1) >= 0)
61
+ sep = "-" + _hx_str(sep)
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ return sep
69
+ end
70
+
71
+ def quote_for_diff(v,d)
72
+ _nil = "NULL"
73
+ return _nil if v.equals(d,nil)
74
+ str = v.to_s(d)
75
+ score = 0
76
+ begin
77
+ _g1 = 0
78
+ _g = str.length
79
+ while(_g1 < _g)
80
+ i = _g1
81
+ _g1+=1
82
+ break if (str[score].ord rescue nil) != 95
83
+ score+=1
84
+ end
85
+ end
86
+ str = "_" + _hx_str(str) if str[score..-1] == _nil
87
+ return str
88
+ end
89
+
90
+ protected
91
+
92
+ def is_reordered(m,ct)
93
+ reordered = false
94
+ l = -1
95
+ r = -1
96
+ begin
97
+ _g = 0
98
+ while(_g < ct)
99
+ i = _g
100
+ _g+=1
101
+ unit = m[i]
102
+ next if unit == nil
103
+ if unit.l >= 0
104
+ if unit.l < l
105
+ reordered = true
106
+ break
107
+ end
108
+ l = unit.l
109
+ end
110
+ if unit.r >= 0
111
+ if unit.r < r
112
+ reordered = true
113
+ break
114
+ end
115
+ r = unit.r
116
+ end
117
+ end
118
+ end
119
+ return reordered
120
+ end
121
+
122
+ def spread_context(units,del,active)
123
+ if del > 0 && active != nil
124
+ mark = -del - 1
125
+ skips = 0
126
+ begin
127
+ _g1 = 0
128
+ _g = units.length
129
+ while(_g1 < _g)
130
+ i = _g1
131
+ _g1+=1
132
+ if active[i] == -3
133
+ skips+=1
134
+ next
135
+ end
136
+ if active[i] == 0 || active[i] == 3
137
+ if i - mark <= del + skips
138
+ active[i] = 2
139
+ elsif i - mark == del + 1 + skips
140
+ active[i] = 3
141
+ end
142
+ elsif active[i] == 1
143
+ mark = i
144
+ skips = 0
145
+ end
146
+ end
147
+ end
148
+ mark = units.length + del + 1
149
+ skips = 0
150
+ begin
151
+ _g11 = 0
152
+ _g2 = units.length
153
+ while(_g11 < _g2)
154
+ j = _g11
155
+ _g11+=1
156
+ i1 = units.length - 1 - j
157
+ if active[i1] == -3
158
+ skips+=1
159
+ next
160
+ end
161
+ if active[i1] == 0 || active[i1] == 3
162
+ if mark - i1 <= del + skips
163
+ active[i1] = 2
164
+ elsif mark - i1 == del + 1 + skips
165
+ active[i1] = 3
166
+ end
167
+ elsif active[i1] == 1
168
+ mark = i1
169
+ skips = 0
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
175
+
176
+ def report_unit(unit)
177
+ txt = unit.to_s
178
+ reordered = false
179
+ if unit.l >= 0
180
+ reordered = true if unit.l < @l_prev
181
+ @l_prev = unit.l
182
+ end
183
+ if unit.r >= 0
184
+ reordered = true if unit.r < @r_prev
185
+ @r_prev = unit.r
186
+ end
187
+ txt = "[" + _hx_str(txt) + "]" if reordered
188
+ return txt
189
+ end
190
+
191
+ public
192
+
193
+ def hilite(output)
194
+ return false if !output.is_resizable
195
+ output.resize(0,0)
196
+ output.clear
197
+ row_map = {}
198
+ col_map = {}
199
+ order = @align.to_order_pruned(true)
200
+ units = order.get_list
201
+ has_parent = @align.reference != nil
202
+ a = nil
203
+ b = nil
204
+ p = nil
205
+ ra_header = 0
206
+ rb_header = 0
207
+ is_index_p = {}
208
+ is_index_a = {}
209
+ is_index_b = {}
210
+ if has_parent
211
+ p = @align.get_source
212
+ a = @align.reference.get_target
213
+ b = @align.get_target
214
+ ra_header = @align.reference.meta.get_target_header
215
+ rb_header = @align.meta.get_target_header
216
+ if @align.get_index_columns != nil
217
+ _g = 0
218
+ _g1 = @align.get_index_columns
219
+ while(_g < _g1.length)
220
+ p2b = _g1[_g]
221
+ _g+=1
222
+ is_index_p[p2b.l] = true if p2b.l >= 0
223
+ is_index_b[p2b.r] = true if p2b.r >= 0
224
+ end
225
+ end
226
+ if @align.reference.get_index_columns != nil
227
+ _g2 = 0
228
+ _g11 = @align.reference.get_index_columns
229
+ while(_g2 < _g11.length)
230
+ p2a = _g11[_g2]
231
+ _g2+=1
232
+ is_index_p[p2a.l] = true if p2a.l >= 0
233
+ is_index_a[p2a.r] = true if p2a.r >= 0
234
+ end
235
+ end
236
+ else
237
+ a = @align.get_source
238
+ b = @align.get_target
239
+ p = a
240
+ ra_header = @align.meta.get_source_header
241
+ rb_header = @align.meta.get_target_header
242
+ if @align.get_index_columns != nil
243
+ _g3 = 0
244
+ _g12 = @align.get_index_columns
245
+ while(_g3 < _g12.length)
246
+ a2b = _g12[_g3]
247
+ _g3+=1
248
+ is_index_a[a2b.l] = true if a2b.l >= 0
249
+ is_index_b[a2b.r] = true if a2b.r >= 0
250
+ end
251
+ end
252
+ end
253
+ column_order = @align.meta.to_order_pruned(false)
254
+ column_units = column_order.get_list
255
+ show_rc_numbers = false
256
+ row_moves = nil
257
+ col_moves = nil
258
+ if @flags.ordered
259
+ row_moves = {}
260
+ moves = ::Coopy::Mover.move_units(units)
261
+ begin
262
+ _g13 = 0
263
+ _g4 = moves.length
264
+ while(_g13 < _g4)
265
+ i = _g13
266
+ _g13+=1
267
+ begin
268
+ row_moves[moves[i]] = i
269
+ i
270
+ end
271
+ end
272
+ end
273
+ col_moves = {}
274
+ moves = ::Coopy::Mover.move_units(column_units)
275
+ begin
276
+ _g14 = 0
277
+ _g5 = moves.length
278
+ while(_g14 < _g5)
279
+ i1 = _g14
280
+ _g14+=1
281
+ begin
282
+ col_moves[moves[i1]] = i1
283
+ i1
284
+ end
285
+ end
286
+ end
287
+ end
288
+ active = Array.new
289
+ active_column = nil
290
+ if !@flags.show_unchanged
291
+ _g15 = 0
292
+ _g6 = units.length
293
+ while(_g15 < _g6)
294
+ i2 = _g15
295
+ _g15+=1
296
+ active[i2] = 0
297
+ end
298
+ end
299
+ allow_insert = @flags.allow_insert
300
+ allow_delete = @flags.allow_delete
301
+ allow_update = @flags.allow_update
302
+ if !@flags.show_unchanged_columns
303
+ active_column = Array.new
304
+ begin
305
+ _g16 = 0
306
+ _g7 = column_units.length
307
+ while(_g16 < _g7)
308
+ i3 = _g16
309
+ _g16+=1
310
+ v = 0
311
+ unit = column_units[i3]
312
+ v = 1 if unit.l >= 0 && is_index_a[unit.l]
313
+ v = 1 if unit.r >= 0 && is_index_b[unit.r]
314
+ v = 1 if unit.p >= 0 && is_index_p[unit.p]
315
+ active_column[i3] = v
316
+ end
317
+ end
318
+ end
319
+ outer_reps_needed = nil
320
+ if @flags.show_unchanged && @flags.show_unchanged_columns
321
+ outer_reps_needed = 1
322
+ else
323
+ outer_reps_needed = 2
324
+ end
325
+ v1 = a.get_cell_view
326
+ sep = ""
327
+ conflict_sep = ""
328
+ schema = Array.new
329
+ have_schema = false
330
+ begin
331
+ _g17 = 0
332
+ _g8 = column_units.length
333
+ while(_g17 < _g8)
334
+ j = _g17
335
+ _g17+=1
336
+ cunit = column_units[j]
337
+ reordered = false
338
+ if @flags.ordered
339
+ reordered = true if col_moves.include?(j)
340
+ show_rc_numbers = true if reordered
341
+ end
342
+ act = ""
343
+ if cunit.r >= 0 && cunit.lp == -1
344
+ have_schema = true
345
+ act = "+++"
346
+ if active_column != nil
347
+ active_column[j] = 1 if allow_update
348
+ end
349
+ end
350
+ if cunit.r < 0 && cunit.lp >= 0
351
+ have_schema = true
352
+ act = "---"
353
+ if active_column != nil
354
+ active_column[j] = 1 if allow_update
355
+ end
356
+ end
357
+ if cunit.r >= 0 && cunit.lp >= 0
358
+ if a.get_height >= ra_header && b.get_height >= rb_header
359
+ aa = a.get_cell(cunit.lp,ra_header)
360
+ bb = b.get_cell(cunit.r,rb_header)
361
+ if !v1.equals(aa,bb)
362
+ have_schema = true
363
+ act = "("
364
+ act += v1.to_s(aa)
365
+ act += ")"
366
+ active_column[j] = 1 if active_column != nil
367
+ end
368
+ end
369
+ end
370
+ if reordered
371
+ act = ":" + _hx_str(act)
372
+ have_schema = true
373
+ active_column = nil if active_column != nil
374
+ end
375
+ schema.push(act)
376
+ end
377
+ end
378
+ if have_schema
379
+ at = output.get_height
380
+ output.resize(column_units.length + 1,at + 1)
381
+ output.set_cell(0,at,v1.to_datum("!"))
382
+ begin
383
+ _g18 = 0
384
+ _g9 = column_units.length
385
+ while(_g18 < _g9)
386
+ j1 = _g18
387
+ _g18+=1
388
+ output.set_cell(j1 + 1,at,v1.to_datum(schema[j1]))
389
+ end
390
+ end
391
+ end
392
+ top_line_done = false
393
+ if @flags.always_show_header
394
+ at1 = output.get_height
395
+ output.resize(column_units.length + 1,at1 + 1)
396
+ output.set_cell(0,at1,v1.to_datum("@@"))
397
+ begin
398
+ _g19 = 0
399
+ _g10 = column_units.length
400
+ while(_g19 < _g10)
401
+ j2 = _g19
402
+ _g19+=1
403
+ cunit1 = column_units[j2]
404
+ if cunit1.r >= 0
405
+ output.set_cell(j2 + 1,at1,b.get_cell(cunit1.r,rb_header)) if b.get_height > 0
406
+ elsif cunit1.lp >= 0
407
+ output.set_cell(j2 + 1,at1,a.get_cell(cunit1.lp,ra_header)) if a.get_height > 0
408
+ end
409
+ col_map[j2 + 1] = cunit1
410
+ end
411
+ end
412
+ top_line_done = true
413
+ end
414
+ begin
415
+ _g20 = 0
416
+ while(_g20 < outer_reps_needed)
417
+ out = _g20
418
+ _g20+=1
419
+ if out == 1
420
+ self.spread_context(units,@flags.unchanged_context,active)
421
+ self.spread_context(column_units,@flags.unchanged_column_context,active_column)
422
+ if active_column != nil
423
+ _g21 = 0
424
+ _g110 = column_units.length
425
+ while(_g21 < _g110)
426
+ i4 = _g21
427
+ _g21+=1
428
+ active_column[i4] = 0 if active_column[i4] == 3
429
+ end
430
+ end
431
+ end
432
+ showed_dummy = false
433
+ l = -1
434
+ r = -1
435
+ begin
436
+ _g22 = 0
437
+ _g111 = units.length
438
+ while(_g22 < _g111)
439
+ i5 = _g22
440
+ _g22+=1
441
+ unit1 = units[i5]
442
+ reordered1 = false
443
+ if @flags.ordered
444
+ reordered1 = true if row_moves.include?(i5)
445
+ show_rc_numbers = true if reordered1
446
+ end
447
+ next if unit1.r < 0 && unit1.l < 0
448
+ next if unit1.r == 0 && unit1.lp == 0 && top_line_done
449
+ act1 = ""
450
+ act1 = ":" if reordered1
451
+ publish = @flags.show_unchanged
452
+ dummy = false
453
+ if out == 1
454
+ publish = active[i5] > 0
455
+ dummy = active[i5] == 3
456
+ next if dummy && showed_dummy
457
+ next if !publish
458
+ end
459
+ showed_dummy = false if !dummy
460
+ at2 = output.get_height
461
+ output.resize(column_units.length + 1,at2 + 1) if publish
462
+ if dummy
463
+ begin
464
+ _g41 = 0
465
+ _g31 = column_units.length + 1
466
+ while(_g41 < _g31)
467
+ j3 = _g41
468
+ _g41+=1
469
+ output.set_cell(j3,at2,v1.to_datum("..."))
470
+ showed_dummy = true
471
+ end
472
+ end
473
+ next
474
+ end
475
+ have_addition = false
476
+ skip = false
477
+ if unit1.p < 0 && unit1.l < 0 && unit1.r >= 0
478
+ skip = true if !allow_insert
479
+ act1 = "+++"
480
+ end
481
+ if (unit1.p >= 0 || !has_parent) && unit1.l >= 0 && unit1.r < 0
482
+ skip = true if !allow_delete
483
+ act1 = "---"
484
+ end
485
+ if skip
486
+ if !publish
487
+ active[i5] = -3 if active != nil
488
+ end
489
+ next
490
+ end
491
+ begin
492
+ _g42 = 0
493
+ _g32 = column_units.length
494
+ while(_g42 < _g32)
495
+ j4 = _g42
496
+ _g42+=1
497
+ cunit2 = column_units[j4]
498
+ pp = nil
499
+ ll = nil
500
+ rr = nil
501
+ dd = nil
502
+ dd_to = nil
503
+ have_dd_to = false
504
+ dd_to_alt = nil
505
+ have_dd_to_alt = false
506
+ have_pp = false
507
+ have_ll = false
508
+ have_rr = false
509
+ if cunit2.p >= 0 && unit1.p >= 0
510
+ pp = p.get_cell(cunit2.p,unit1.p)
511
+ have_pp = true
512
+ end
513
+ if cunit2.l >= 0 && unit1.l >= 0
514
+ ll = a.get_cell(cunit2.l,unit1.l)
515
+ have_ll = true
516
+ end
517
+ if cunit2.r >= 0 && unit1.r >= 0
518
+ rr = b.get_cell(cunit2.r,unit1.r)
519
+ have_rr = true
520
+ if (((have_pp) ? cunit2.p : cunit2.l)) < 0
521
+ if rr != nil
522
+ if v1.to_s(rr) != ""
523
+ have_addition = true if @flags.allow_update
524
+ end
525
+ end
526
+ end
527
+ end
528
+ if have_pp
529
+ if !have_rr
530
+ dd = pp
531
+ elsif v1.equals(pp,rr)
532
+ dd = pp
533
+ else
534
+ dd = pp
535
+ dd_to = rr
536
+ have_dd_to = true
537
+ if !v1.equals(pp,ll)
538
+ if !v1.equals(pp,rr)
539
+ dd_to_alt = ll
540
+ have_dd_to_alt = true
541
+ end
542
+ end
543
+ end
544
+ elsif have_ll
545
+ if !have_rr
546
+ dd = ll
547
+ elsif v1.equals(ll,rr)
548
+ dd = ll
549
+ else
550
+ dd = ll
551
+ dd_to = rr
552
+ have_dd_to = true
553
+ end
554
+ else
555
+ dd = rr
556
+ end
557
+ txt = nil
558
+ if have_dd_to && allow_update
559
+ active_column[j4] = 1 if active_column != nil
560
+ txt = self.quote_for_diff(v1,dd)
561
+ sep = self.get_separator(a,b,"->") if sep == ""
562
+ is_conflict = false
563
+ if have_dd_to_alt
564
+ is_conflict = true if !v1.equals(dd_to,dd_to_alt)
565
+ end
566
+ if !is_conflict
567
+ txt = _hx_str(txt) + _hx_str(sep) + _hx_str(self.quote_for_diff(v1,dd_to))
568
+ act1 = sep if sep.length > act1.length
569
+ else
570
+ conflict_sep = _hx_str(self.get_separator(p,a,"!")) + _hx_str(sep) if conflict_sep == ""
571
+ txt = _hx_str(txt) + _hx_str(conflict_sep) + _hx_str(self.quote_for_diff(v1,dd_to_alt)) + _hx_str(conflict_sep) + _hx_str(self.quote_for_diff(v1,dd_to))
572
+ act1 = conflict_sep
573
+ end
574
+ end
575
+ act1 = "+" if act1 == "" && have_addition
576
+ if act1 == "+++"
577
+ if have_rr
578
+ active_column[j4] = 1 if active_column != nil
579
+ end
580
+ end
581
+ if publish
582
+ if active_column == nil || active_column[j4] > 0
583
+ if txt != nil
584
+ output.set_cell(j4 + 1,at2,v1.to_datum(txt))
585
+ else
586
+ output.set_cell(j4 + 1,at2,dd)
587
+ end
588
+ end
589
+ end
590
+ end
591
+ end
592
+ if publish
593
+ output.set_cell(0,at2,v1.to_datum(act1))
594
+ row_map[at2] = unit1
595
+ end
596
+ if act1 != ""
597
+ if !publish
598
+ active[i5] = 1 if active != nil
599
+ end
600
+ end
601
+ end
602
+ end
603
+ end
604
+ end
605
+ if !show_rc_numbers
606
+ if @flags.always_show_order
607
+ show_rc_numbers = true
608
+ elsif @flags.ordered
609
+ show_rc_numbers = self.is_reordered(row_map,output.get_height)
610
+ show_rc_numbers = self.is_reordered(col_map,output.get_width) if !show_rc_numbers
611
+ end
612
+ end
613
+ admin_w = 1
614
+ if show_rc_numbers && !@flags.never_show_order
615
+ admin_w+=1
616
+ target = Array.new
617
+ begin
618
+ _g112 = 0
619
+ _g23 = output.get_width
620
+ while(_g112 < _g23)
621
+ i6 = _g112
622
+ _g112+=1
623
+ target.push(i6 + 1)
624
+ end
625
+ end
626
+ output.insert_or_delete_columns(target,output.get_width + 1)
627
+ @l_prev = -1
628
+ @r_prev = -1
629
+ begin
630
+ _g113 = 0
631
+ _g24 = output.get_height
632
+ while(_g113 < _g24)
633
+ i7 = _g113
634
+ _g113+=1
635
+ unit2 = row_map[i7]
636
+ next if unit2 == nil
637
+ output.set_cell(0,i7,self.report_unit(unit2))
638
+ end
639
+ end
640
+ target = Array.new
641
+ begin
642
+ _g114 = 0
643
+ _g25 = output.get_height
644
+ while(_g114 < _g25)
645
+ i8 = _g114
646
+ _g114+=1
647
+ target.push(i8 + 1)
648
+ end
649
+ end
650
+ output.insert_or_delete_rows(target,output.get_height + 1)
651
+ @l_prev = -1
652
+ @r_prev = -1
653
+ begin
654
+ _g115 = 1
655
+ _g26 = output.get_width
656
+ while(_g115 < _g26)
657
+ i9 = _g115
658
+ _g115+=1
659
+ unit3 = col_map[i9 - 1]
660
+ next if unit3 == nil
661
+ output.set_cell(i9,0,self.report_unit(unit3))
662
+ end
663
+ end
664
+ output.set_cell(0,0,"@:@")
665
+ end
666
+ if active_column != nil
667
+ all_active = true
668
+ begin
669
+ _g116 = 0
670
+ _g27 = active_column.length
671
+ while(_g116 < _g27)
672
+ i10 = _g116
673
+ _g116+=1
674
+ if active_column[i10] == 0
675
+ all_active = false
676
+ break
677
+ end
678
+ end
679
+ end
680
+ if !all_active
681
+ fate = Array.new
682
+ begin
683
+ _g28 = 0
684
+ while(_g28 < admin_w)
685
+ i11 = _g28
686
+ _g28+=1
687
+ fate.push(i11)
688
+ end
689
+ end
690
+ at3 = admin_w
691
+ ct = 0
692
+ dots = Array.new
693
+ begin
694
+ _g117 = 0
695
+ _g29 = active_column.length
696
+ while(_g117 < _g29)
697
+ i12 = _g117
698
+ _g117+=1
699
+ off = active_column[i12] == 0
700
+ if off
701
+ ct = ct + 1
702
+ else
703
+ ct = 0
704
+ end
705
+ if off && ct > 1
706
+ fate.push(-1)
707
+ else
708
+ dots.push(at3) if off
709
+ fate.push(at3)
710
+ at3+=1
711
+ end
712
+ end
713
+ end
714
+ output.insert_or_delete_columns(fate,at3)
715
+ begin
716
+ _g30 = 0
717
+ while(_g30 < dots.length)
718
+ d = dots[_g30]
719
+ _g30+=1
720
+ begin
721
+ _g210 = 0
722
+ _g118 = output.get_height
723
+ while(_g210 < _g118)
724
+ j5 = _g210
725
+ _g210+=1
726
+ output.set_cell(d,j5,"...")
727
+ end
728
+ end
729
+ end
730
+ end
731
+ end
732
+ end
733
+ return true
734
+ end
735
+
736
+ end
737
+
738
+ end