daff 1.3.2 → 1.3.6

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.
data/lib/lib/coopy/csv.rb CHANGED
@@ -104,8 +104,27 @@ module Coopy
104
104
  tab.resize(w,h)
105
105
  end
106
106
  if at >= w
107
- w = at + 1
108
- tab.resize(w,h)
107
+ if yat > 0
108
+ if cell != "" && cell != nil
109
+ context = ""
110
+ begin
111
+ _g = 0
112
+ while(_g < w)
113
+ i = _g
114
+ _g+=1
115
+ context += "," if i > 0
116
+ begin
117
+ s = tab.get_cell(i,yat)
118
+ context += s.to_s
119
+ end
120
+ end
121
+ end
122
+ puts "Ignored overflowing row " + _hx_str(yat) + " with cell '" + _hx_str(cell) + "' after: " + _hx_str(context)
123
+ end
124
+ else
125
+ w = at + 1
126
+ tab.resize(w,h)
127
+ end
109
128
  end
110
129
  tab.set_cell(at,h - 1,cell)
111
130
  at+=1
@@ -157,7 +176,7 @@ module Coopy
157
176
  @row_ended = true
158
177
  break
159
178
  end
160
- if ch == 34 || ch == 39
179
+ if ch == 34
161
180
  if i == @cursor
162
181
  quoting = true
163
182
  quote = ch
@@ -69,7 +69,11 @@ module Coopy
69
69
  cell_decorate = ""
70
70
  cell_decorate = " class=\"" + _hx_str(mode) + "\"" if mode != ""
71
71
  self.insert(_hx_str(@td_open) + _hx_str(cell_decorate) + ">")
72
- self.insert(txt)
72
+ if txt != nil
73
+ self.insert(txt)
74
+ else
75
+ self.insert("null")
76
+ end
73
77
  self.insert(@td_close)
74
78
  end
75
79
 
@@ -144,6 +148,27 @@ module Coopy
144
148
  self
145
149
  end
146
150
 
151
+ def render_tables(tabs)
152
+ order = tabs.get_order
153
+ self.render(tabs.one) if order.length == 0 || tabs.has_ins_del
154
+ begin
155
+ _g1 = 1
156
+ _g = order.length
157
+ while(_g1 < _g)
158
+ i = _g1
159
+ _g1+=1
160
+ name = order[i]
161
+ tab = tabs.get(name)
162
+ next if tab.get_height <= 1
163
+ self.insert("<h3>")
164
+ self.insert(name)
165
+ self.insert("</h3>\n")
166
+ self.render(tab)
167
+ end
168
+ end
169
+ self
170
+ end
171
+
147
172
  def sample_css
148
173
  ".highlighter .add { \n background-color: #7fff7f;\n}\n\n.highlighter .remove { \n background-color: #ff7f7f;\n}\n\n.highlighter td.modify { \n background-color: #7f7fff;\n}\n\n.highlighter td.conflict { \n background-color: #f00;\n}\n\n.highlighter .spec { \n background-color: #aaa;\n}\n\n.highlighter .move { \n background-color: #ffa;\n}\n\n.highlighter .null { \n color: #888;\n}\n\n.highlighter table { \n border-collapse:collapse;\n}\n\n.highlighter td, .highlighter th {\n border: 1px solid #2D4068;\n padding: 3px 7px 2px;\n}\n\n.highlighter th, .highlighter .header, .highlighter .meta {\n background-color: #aaf;\n font-weight: bold;\n padding-bottom: 4px;\n padding-top: 5px;\n text-align:left;\n}\n\n.highlighter tr.header th {\n border-bottom: 2px solid black;\n}\n\n.highlighter tr.index td, .highlighter .index, .highlighter tr.header th.index {\n background-color: white;\n border: none;\n}\n\n.highlighter .gap {\n color: #888;\n}\n\n.highlighter td {\n empty-cells: show;\n}\n"
149
174
  end
@@ -157,8 +182,6 @@ module Coopy
157
182
 
158
183
  def DiffRender.examine_cell(x,y,view,raw,vcol,vrow,vcorner,cell,offset = 0)
159
184
  nested = view.is_hash(raw)
160
- value = nil
161
- value = view.to_s(raw) if !nested
162
185
  cell.category = ""
163
186
  cell.category_given_tr = ""
164
187
  cell.separator = ""
@@ -166,8 +189,7 @@ module Coopy
166
189
  cell.conflicted = false
167
190
  cell.updated = false
168
191
  cell.meta = cell.pvalue = cell.lvalue = cell.rvalue = nil
169
- cell.value = value
170
- cell.value = "" if cell.value == nil
192
+ cell.value = raw
171
193
  cell.pretty_value = cell.value
172
194
  vrow = "" if vrow == nil
173
195
  vcol = "" if vcol == nil
@@ -204,14 +226,16 @@ module Coopy
204
226
  full = vrow
205
227
  part = tokens[1]
206
228
  part = full if part == nil
207
- if nested || (cell.value.index(part,nil || 0) || -1) >= 0
229
+ str = view.to_s(cell.value)
230
+ str = "" if str == nil
231
+ if nested || (str.index(part,nil || 0) || -1) >= 0
208
232
  cat = "modify"
209
233
  div = part
210
234
  if part != full
211
235
  if nested
212
236
  cell.conflicted = view.hash_exists(raw,"theirs")
213
237
  else
214
- cell.conflicted = (cell.value.index(full,nil || 0) || -1) >= 0
238
+ cell.conflicted = (str.index(full,nil || 0) || -1) >= 0
215
239
  end
216
240
  if cell.conflicted
217
241
  div = full
@@ -227,10 +251,14 @@ module Coopy
227
251
  else
228
252
  tokens = [view.hash_get(raw,"before"),view.hash_get(raw,"after")]
229
253
  end
230
- elsif cell.pretty_value == div
231
- tokens = ["",""]
232
254
  else
233
- tokens = cell.pretty_value.split(div)
255
+ cell.pretty_value = view.to_s(cell.pretty_value)
256
+ cell.pretty_value = "" if cell.pretty_value == nil
257
+ if cell.pretty_value == div
258
+ tokens = ["",""]
259
+ else
260
+ tokens = cell.pretty_value.split(div)
261
+ end
234
262
  end
235
263
  pretty_tokens = tokens
236
264
  if tokens.length >= 2
@@ -216,7 +216,7 @@ module Coopy
216
216
  while(_g1 < _g)
217
217
  i = _g1
218
218
  _g1+=1
219
- txt = self.get_string(i)
219
+ txt = self.get_datum(i)
220
220
  idx_patch = i
221
221
  idx_src = nil
222
222
  if @patch_in_source_col.include?(idx_patch)
@@ -12,7 +12,11 @@ module Coopy
12
12
  @height = 0
13
13
  @hdr = 0
14
14
  @ignore_whitespace = false
15
- @ignore_whitespace = flags.ignore_whitespace if flags != nil
15
+ @ignore_case = false
16
+ if flags != nil
17
+ @ignore_whitespace = flags.ignore_whitespace
18
+ @ignore_case = flags.ignore_case
19
+ end
16
20
  end
17
21
 
18
22
  attr_accessor :items
@@ -27,6 +31,7 @@ module Coopy
27
31
  attr_accessor :indexed_table
28
32
  attr_accessor :hdr
29
33
  attr_accessor :ignore_whitespace
34
+ attr_accessor :ignore_case
30
35
 
31
36
  public
32
37
 
@@ -83,6 +88,7 @@ module Coopy
83
88
  d = t.get_cell(@cols[k],i)
84
89
  txt = @v.to_s(d)
85
90
  txt = txt.strip if @ignore_whitespace
91
+ txt = txt.downcase if @ignore_case
86
92
  wide += " // " if k > 0
87
93
  next if txt == nil || txt == "" || txt == "null" || txt == "undefined"
88
94
  wide += txt
@@ -106,6 +112,7 @@ module Coopy
106
112
  _g1+=1
107
113
  txt = row.get_row_string(@cols[k])
108
114
  txt = txt.strip if @ignore_whitespace
115
+ txt = txt.downcase if @ignore_case
109
116
  wide += " // " if k > 0
110
117
  next if txt == nil || txt == "" || txt == "null" || txt == "undefined"
111
118
  wide += txt
@@ -0,0 +1,165 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ module Coopy
5
+ class JsonTable
6
+
7
+ def initialize(data,name)
8
+ @data = data
9
+ @columns = Reflect.field(data,"columns")
10
+ @rows = Reflect.field(data,"rows")
11
+ @w = @columns.length
12
+ @h = @rows.length
13
+ @idx2col = {}
14
+ begin
15
+ _g1 = 0
16
+ _g = @columns.length
17
+ while(_g1 < _g)
18
+ idx = _g1
19
+ _g1+=1
20
+ begin
21
+ v = @columns[idx]
22
+ @idx2col[idx] = v
23
+ v
24
+ end
25
+ end
26
+ end
27
+ @name = name
28
+ end
29
+
30
+ protected
31
+
32
+ attr_accessor :w
33
+ attr_accessor :h
34
+ attr_accessor :columns
35
+ attr_accessor :rows
36
+ attr_accessor :data
37
+ attr_accessor :idx2col
38
+ attr_accessor :name
39
+
40
+ public
41
+
42
+ def get_table
43
+ self
44
+ end
45
+
46
+ def height() get_height end
47
+ def height=(__v) @height = __v end
48
+ def width() get_width end
49
+ def width=(__v) @width = __v end
50
+
51
+ def get_width
52
+ @w
53
+ end
54
+
55
+ def get_height
56
+ @h + 1
57
+ end
58
+
59
+ def get_cell(x,y)
60
+ return @idx2col[x] if y == 0
61
+ Reflect.field(@rows[y - 1],@idx2col[x])
62
+ end
63
+
64
+ def set_cell(x,y,c)
65
+ puts "JsonTable is read-only"
66
+ end
67
+
68
+ def to_s
69
+ ""
70
+ end
71
+
72
+ def get_cell_view
73
+ ::Coopy::SimpleView.new
74
+ end
75
+
76
+ def is_resizable
77
+ false
78
+ end
79
+
80
+ def resize(w,h)
81
+ false
82
+ end
83
+
84
+ def clear
85
+ end
86
+
87
+ def insert_or_delete_rows(fate,hfate)
88
+ false
89
+ end
90
+
91
+ def insert_or_delete_columns(fate,wfate)
92
+ false
93
+ end
94
+
95
+ def trim_blank
96
+ false
97
+ end
98
+
99
+ def get_data
100
+ nil
101
+ end
102
+
103
+ def clone
104
+ nil
105
+ end
106
+
107
+ def set_meta(meta)
108
+ end
109
+
110
+ def get_meta
111
+ self
112
+ end
113
+
114
+ def create
115
+ ::Coopy::JsonTable.new(nil,nil)
116
+ end
117
+
118
+ def alter_columns(columns)
119
+ false
120
+ end
121
+
122
+ def change_row(rc)
123
+ false
124
+ end
125
+
126
+ def apply_flags(flags)
127
+ false
128
+ end
129
+
130
+ def as_table
131
+ nil
132
+ end
133
+
134
+ def clone_meta(table = nil)
135
+ nil
136
+ end
137
+
138
+ def use_for_column_changes
139
+ false
140
+ end
141
+
142
+ def use_for_row_changes
143
+ false
144
+ end
145
+
146
+ def get_row_stream
147
+ nil
148
+ end
149
+
150
+ def is_nested
151
+ false
152
+ end
153
+
154
+ def is_sql
155
+ false
156
+ end
157
+
158
+ def get_name
159
+ @name
160
+ end
161
+
162
+ haxe_me ["coopy", "JsonTable"]
163
+ end
164
+
165
+ end
@@ -0,0 +1,129 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ module Coopy
5
+ class JsonTables
6
+
7
+ def initialize(json,flags)
8
+ @db = json
9
+ names = Reflect.field(json,"names")
10
+ allowed = nil
11
+ count = names.length
12
+ if flags.tables != nil
13
+ allowed = {}
14
+ begin
15
+ _g = 0
16
+ _g1 = flags.tables
17
+ while(_g < _g1.length)
18
+ name = _g1[_g]
19
+ _g+=1
20
+ allowed[name] = true
21
+ end
22
+ end
23
+ count = 0
24
+ begin
25
+ _g2 = 0
26
+ while(_g2 < names.length)
27
+ name1 = names[_g2]
28
+ _g2+=1
29
+ count+=1 if allowed.include?(name1)
30
+ end
31
+ end
32
+ end
33
+ @t = ::Coopy::SimpleTable.new(2,count + 1)
34
+ @t.set_cell(0,0,"name")
35
+ @t.set_cell(1,0,"table")
36
+ v = @t.get_cell_view
37
+ at = 1
38
+ begin
39
+ _g3 = 0
40
+ while(_g3 < names.length)
41
+ name2 = names[_g3]
42
+ _g3+=1
43
+ if allowed != nil
44
+ next if !allowed.include?(name2)
45
+ end
46
+ @t.set_cell(0,at,name2)
47
+ tab = Reflect.field(@db,"tables")
48
+ tab = Reflect.field(tab,name2)
49
+ @t.set_cell(1,at,v.wrap_table(::Coopy::JsonTable.new(tab,name2)))
50
+ at+=1
51
+ end
52
+ end
53
+ end
54
+
55
+ protected
56
+
57
+ attr_accessor :db
58
+ attr_accessor :t
59
+ attr_accessor :flags
60
+
61
+ public
62
+
63
+ def height() get_height end
64
+ def height=(__v) @height = __v end
65
+ def width() get_width end
66
+ def width=(__v) @width = __v end
67
+
68
+ def get_cell(x,y)
69
+ @t.get_cell(x,y)
70
+ end
71
+
72
+ def set_cell(x,y,c)
73
+ end
74
+
75
+ def get_cell_view
76
+ @t.get_cell_view
77
+ end
78
+
79
+ def is_resizable
80
+ false
81
+ end
82
+
83
+ def resize(w,h)
84
+ false
85
+ end
86
+
87
+ def clear
88
+ end
89
+
90
+ def insert_or_delete_rows(fate,hfate)
91
+ false
92
+ end
93
+
94
+ def insert_or_delete_columns(fate,wfate)
95
+ false
96
+ end
97
+
98
+ def trim_blank
99
+ false
100
+ end
101
+
102
+ def get_width
103
+ @t.get_width
104
+ end
105
+
106
+ def get_height
107
+ @t.get_height
108
+ end
109
+
110
+ def get_data
111
+ nil
112
+ end
113
+
114
+ def clone
115
+ nil
116
+ end
117
+
118
+ def get_meta
119
+ ::Coopy::SimpleMeta.new(self,true,true)
120
+ end
121
+
122
+ def create
123
+ ::Coopy::JsonTables.new(nil,nil)
124
+ end
125
+
126
+ haxe_me ["coopy", "JsonTables"]
127
+ end
128
+
129
+ end