daff 1.1.19 → 1.2.1
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/README.md +15 -9
- data/lib/daff.rb +0 -8
- data/lib/lib/coopy/alignment.rb +2 -2
- data/lib/lib/coopy/compare_flags.rb +12 -0
- data/lib/lib/coopy/compare_table.rb +16 -6
- data/lib/lib/coopy/coopy.rb +12 -75
- data/lib/lib/coopy/csv.rb +34 -11
- data/lib/lib/coopy/diff_render.rb +11 -6
- data/lib/lib/coopy/highlight_patch.rb +5 -5
- data/lib/lib/coopy/index_item.rb +4 -0
- data/lib/lib/coopy/index_pair.rb +0 -5
- data/lib/lib/coopy/merger.rb +4 -2
- data/lib/lib/coopy/mover.rb +3 -4
- data/lib/lib/coopy/simple_table.rb +46 -6
- data/lib/lib/coopy/simple_view.rb +0 -12
- data/lib/lib/coopy/table.rb +1 -0
- data/lib/lib/coopy/table_diff.rb +2 -2
- data/lib/lib/coopy/table_text.rb +5 -5
- data/lib/lib/coopy/unit.rb +2 -0
- data/lib/lib/coopy/view.rb +0 -3
- data/lib/lib/coopy/viterbi.rb +4 -0
- metadata +56 -67
- data/lib/lib/_list/list_iterator.rb +0 -31
- data/lib/lib/coopy/bag.rb +0 -12
- data/lib/lib/coopy/change.rb +0 -49
- data/lib/lib/coopy/change_type.rb +0 -21
- data/lib/lib/coopy/compare.rb +0 -99
- data/lib/lib/coopy/report.rb +0 -24
- data/lib/lib/coopy/simple_cell.rb +0 -24
- data/lib/lib/coopy/viewed_datum.rb +0 -38
- data/lib/lib/coopy/workspace.rb +0 -23
- data/lib/lib/haxe/log.rb +0 -16
- data/lib/lib/sys.rb +0 -65
- data/lib/lib/sys/io/file.rb +0 -19
@@ -42,8 +42,6 @@ module Coopy
|
|
42
42
|
attr_accessor :col_permutation_rev
|
43
43
|
attr_accessor :have_dropped_columns
|
44
44
|
|
45
|
-
public
|
46
|
-
|
47
45
|
def reset
|
48
46
|
@header = {}
|
49
47
|
@header_pre = {}
|
@@ -70,6 +68,8 @@ module Coopy
|
|
70
68
|
@have_dropped_columns = false
|
71
69
|
end
|
72
70
|
|
71
|
+
public
|
72
|
+
|
73
73
|
def apply
|
74
74
|
self.reset
|
75
75
|
return true if @patch.get_width < 2
|
@@ -133,9 +133,9 @@ module Coopy
|
|
133
133
|
state = ::Coopy::TableComparisonState.new
|
134
134
|
state.a = @source
|
135
135
|
state.b = @source
|
136
|
-
comp = ::Coopy::CompareTable.new
|
136
|
+
comp = ::Coopy::CompareTable.new(state)
|
137
137
|
comp.store_indexes
|
138
|
-
comp.
|
138
|
+
comp.run
|
139
139
|
comp.align
|
140
140
|
@indexes = comp.get_indexes
|
141
141
|
self.need_source_columns
|
@@ -515,7 +515,7 @@ module Coopy
|
|
515
515
|
::Coopy::DiffRender.examine_cell(0,0,txt,"",@row_info.value,"",@cell_info)
|
516
516
|
next if !@cell_info.updated
|
517
517
|
next if @cell_info.conflicted
|
518
|
-
d = @view.to_datum(@csv.
|
518
|
+
d = @view.to_datum(@csv.parse_cell(@cell_info.rvalue))
|
519
519
|
@source.set_cell(@patch_in_source_col[c1],mod1.dest_row,d)
|
520
520
|
end
|
521
521
|
end
|
data/lib/lib/coopy/index_item.rb
CHANGED
data/lib/lib/coopy/index_pair.rb
CHANGED
data/lib/lib/coopy/merger.rb
CHANGED
@@ -27,8 +27,6 @@ module Coopy
|
|
27
27
|
attr_accessor :column_mix_remote
|
28
28
|
attr_accessor :conflicts
|
29
29
|
|
30
|
-
public
|
31
|
-
|
32
30
|
def shuffle_dimension(dim_units,len,fate,cl,cr)
|
33
31
|
at = 0
|
34
32
|
begin
|
@@ -96,6 +94,8 @@ module Coopy
|
|
96
94
|
@local.insert_or_delete_rows(fate,hfate)
|
97
95
|
end
|
98
96
|
|
97
|
+
public
|
98
|
+
|
99
99
|
def apply
|
100
100
|
@conflicts = 0
|
101
101
|
ct = ::Coopy::Coopy.compare_tables3(@parent,@local,@remote)
|
@@ -174,6 +174,8 @@ module Coopy
|
|
174
174
|
return @conflicts
|
175
175
|
end
|
176
176
|
|
177
|
+
# protected - in ruby this doesn't play well with static/inline methods
|
178
|
+
|
177
179
|
def Merger.make_conflicted_cell(view,pcell,lcell,rcell)
|
178
180
|
return view.to_datum("((( " + _hx_str(view.to_s(pcell)) + " ))) " + _hx_str(view.to_s(lcell)) + " /// " + _hx_str(view.to_s(rcell)))
|
179
181
|
end
|
data/lib/lib/coopy/mover.rb
CHANGED
@@ -4,9 +4,6 @@
|
|
4
4
|
module Coopy
|
5
5
|
class Mover
|
6
6
|
|
7
|
-
def initialize
|
8
|
-
end
|
9
|
-
|
10
7
|
def Mover.move_units(units)
|
11
8
|
isrc = Array.new
|
12
9
|
idest = Array.new
|
@@ -59,7 +56,7 @@ module Coopy
|
|
59
56
|
return ::Coopy::Mover.move_without_extras(isrc,idest)
|
60
57
|
end
|
61
58
|
|
62
|
-
def Mover.
|
59
|
+
def Mover.move(isrc,idest)
|
63
60
|
len = isrc.length
|
64
61
|
len2 = idest.length
|
65
62
|
in_src = {}
|
@@ -110,6 +107,8 @@ module Coopy
|
|
110
107
|
return ::Coopy::Mover.move_without_extras(src,dest)
|
111
108
|
end
|
112
109
|
|
110
|
+
# protected - in ruby this doesn't play well with static/inline methods
|
111
|
+
|
113
112
|
def Mover.move_without_extras(src,dest)
|
114
113
|
return nil if src.length != dest.length
|
115
114
|
return [] if src.length <= 1
|
@@ -26,8 +26,6 @@ module Coopy
|
|
26
26
|
def height=(__v) @height = __v end
|
27
27
|
def width() get_width end
|
28
28
|
def width=(__v) @width = __v end
|
29
|
-
def size() get_size end
|
30
|
-
def size=(__v) @size = __v end
|
31
29
|
|
32
30
|
def get_width
|
33
31
|
return @w
|
@@ -37,10 +35,6 @@ module Coopy
|
|
37
35
|
return @h
|
38
36
|
end
|
39
37
|
|
40
|
-
def get_size
|
41
|
-
return @h
|
42
|
-
end
|
43
|
-
|
44
38
|
def get_cell(x,y)
|
45
39
|
return @data[x + y * @w]
|
46
40
|
end
|
@@ -214,6 +208,28 @@ module Coopy
|
|
214
208
|
return nil
|
215
209
|
end
|
216
210
|
|
211
|
+
def clone
|
212
|
+
result = ::Coopy::SimpleTable.new(self.get_width,self.get_height)
|
213
|
+
begin
|
214
|
+
_g1 = 0
|
215
|
+
_g = self.get_height
|
216
|
+
while(_g1 < _g)
|
217
|
+
i = _g1
|
218
|
+
_g1+=1
|
219
|
+
begin
|
220
|
+
_g3 = 0
|
221
|
+
_g2 = self.get_width
|
222
|
+
while(_g3 < _g2)
|
223
|
+
j = _g3
|
224
|
+
_g3+=1
|
225
|
+
result.set_cell(j,i,self.get_cell(j,i))
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|
230
|
+
return result
|
231
|
+
end
|
232
|
+
|
217
233
|
def SimpleTable.table_to_string(tab)
|
218
234
|
x = ""
|
219
235
|
begin
|
@@ -241,6 +257,30 @@ module Coopy
|
|
241
257
|
return x
|
242
258
|
end
|
243
259
|
|
260
|
+
def SimpleTable.table_is_similar(tab1,tab2)
|
261
|
+
return false if tab1.get_width != tab2.get_width
|
262
|
+
return false if tab1.get_height != tab2.get_height
|
263
|
+
v = tab1.get_cell_view
|
264
|
+
begin
|
265
|
+
_g1 = 0
|
266
|
+
_g = tab1.get_height
|
267
|
+
while(_g1 < _g)
|
268
|
+
i = _g1
|
269
|
+
_g1+=1
|
270
|
+
begin
|
271
|
+
_g3 = 0
|
272
|
+
_g2 = tab1.get_width
|
273
|
+
while(_g3 < _g2)
|
274
|
+
j = _g3
|
275
|
+
_g3+=1
|
276
|
+
return false if !v.equals(tab1.get_cell(j,i),tab2.get_cell(j,i))
|
277
|
+
end
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
return true
|
282
|
+
end
|
283
|
+
|
244
284
|
haxe_me
|
245
285
|
end
|
246
286
|
|
@@ -12,18 +12,6 @@ module Coopy
|
|
12
12
|
return "" + _hx_str(d.to_s)
|
13
13
|
end
|
14
14
|
|
15
|
-
def get_bag(d)
|
16
|
-
return nil
|
17
|
-
end
|
18
|
-
|
19
|
-
def get_table(d)
|
20
|
-
return nil
|
21
|
-
end
|
22
|
-
|
23
|
-
def has_structure(d)
|
24
|
-
return false
|
25
|
-
end
|
26
|
-
|
27
15
|
def equals(d1,d2)
|
28
16
|
return true if d1 == nil && d2 == nil
|
29
17
|
return true if d1 == nil && "" + _hx_str(d2.to_s) == ""
|
data/lib/lib/coopy/table.rb
CHANGED
@@ -15,6 +15,7 @@ module Coopy
|
|
15
15
|
def get_width() puts "Abstract Table.get_width called" end
|
16
16
|
def get_height() puts "Abstract Table.get_height called" end
|
17
17
|
def getData() puts "Abstract Table.getData called" end
|
18
|
+
def clone() puts "Abstract Table.clone called" end
|
18
19
|
haxe_me
|
19
20
|
end
|
20
21
|
|
data/lib/lib/coopy/table_diff.rb
CHANGED
@@ -22,6 +22,8 @@ module Coopy
|
|
22
22
|
@builder = builder
|
23
23
|
end
|
24
24
|
|
25
|
+
protected
|
26
|
+
|
25
27
|
def get_separator(t,t2,root)
|
26
28
|
sep = root
|
27
29
|
w = t.get_width
|
@@ -91,8 +93,6 @@ module Coopy
|
|
91
93
|
return str
|
92
94
|
end
|
93
95
|
|
94
|
-
protected
|
95
|
-
|
96
96
|
def is_reordered(m,ct)
|
97
97
|
reordered = false
|
98
98
|
l = -1
|
data/lib/lib/coopy/table_text.rb
CHANGED
@@ -4,20 +4,20 @@
|
|
4
4
|
module Coopy
|
5
5
|
class TableText
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@
|
9
|
-
@view =
|
7
|
+
def initialize(tab)
|
8
|
+
@tab = tab
|
9
|
+
@view = tab.get_cell_view
|
10
10
|
end
|
11
11
|
|
12
12
|
protected
|
13
13
|
|
14
|
-
attr_accessor :
|
14
|
+
attr_accessor :tab
|
15
15
|
attr_accessor :view
|
16
16
|
|
17
17
|
public
|
18
18
|
|
19
19
|
def get_cell_text(x,y)
|
20
|
-
return @view.to_s(@
|
20
|
+
return @view.to_s(@tab.get_cell(x,y))
|
21
21
|
end
|
22
22
|
|
23
23
|
haxe_me
|
data/lib/lib/coopy/unit.rb
CHANGED
data/lib/lib/coopy/view.rb
CHANGED
@@ -4,9 +4,6 @@
|
|
4
4
|
module Coopy
|
5
5
|
class View
|
6
6
|
def toString(d) puts "Abstract View.toString called" end
|
7
|
-
def getBag(d) puts "Abstract View.getBag called" end
|
8
|
-
def getTable(d) puts "Abstract View.getTable called" end
|
9
|
-
def hasStructure(d) puts "Abstract View.hasStructure called" end
|
10
7
|
def equals(d1,d2) puts "Abstract View.equals called" end
|
11
8
|
def toDatum(str) puts "Abstract View.toDatum called" end
|
12
9
|
haxe_me
|
data/lib/lib/coopy/viterbi.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-10-
|
13
|
+
date: 2014-10-28 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: Diff and patch tables
|
16
16
|
email:
|
@@ -32,13 +32,10 @@ files:
|
|
32
32
|
- lib/lib/hx_overrides.rb
|
33
33
|
- lib/lib/coopy/simple_table.rb
|
34
34
|
- lib/lib/coopy/cell_builder.rb
|
35
|
-
- lib/lib/coopy/workspace.rb
|
36
35
|
- lib/lib/coopy/compare_table.rb
|
37
36
|
- lib/lib/coopy/table_io.rb
|
38
37
|
- lib/lib/coopy/flat_cell_builder.rb
|
39
|
-
- lib/lib/coopy/compare.rb
|
40
38
|
- lib/lib/coopy/index_item.rb
|
41
|
-
- lib/lib/coopy/simple_cell.rb
|
42
39
|
- lib/lib/coopy/index_pair.rb
|
43
40
|
- lib/lib/coopy/diff_render.rb
|
44
41
|
- lib/lib/coopy/cross_match.rb
|
@@ -50,11 +47,8 @@ files:
|
|
50
47
|
- lib/lib/coopy/table_text.rb
|
51
48
|
- lib/lib/coopy/simple_view.rb
|
52
49
|
- lib/lib/coopy/row.rb
|
53
|
-
- lib/lib/coopy/change_type.rb
|
54
50
|
- lib/lib/coopy/index.rb
|
55
|
-
- lib/lib/coopy/bag.rb
|
56
51
|
- lib/lib/coopy/coopy.rb
|
57
|
-
- lib/lib/coopy/viewed_datum.rb
|
58
52
|
- lib/lib/coopy/cell_info.rb
|
59
53
|
- lib/lib/coopy/view.rb
|
60
54
|
- lib/lib/coopy/highlight_patch_unit.rb
|
@@ -65,17 +59,13 @@ files:
|
|
65
59
|
- lib/lib/coopy/csv.rb
|
66
60
|
- lib/lib/coopy/ordering.rb
|
67
61
|
- lib/lib/coopy/merger.rb
|
68
|
-
- lib/lib/coopy/change.rb
|
69
62
|
- lib/lib/coopy/sparse_sheet.rb
|
70
|
-
- lib/lib/coopy/report.rb
|
71
63
|
- lib/lib/coopy/table.rb
|
72
64
|
- lib/lib/coopy/viterbi.rb
|
73
65
|
- lib/lib/list.rb
|
74
66
|
- lib/lib/sys/io/hx_file.rb
|
75
67
|
- lib/lib/sys/io/file_output.rb
|
76
|
-
- lib/lib/sys/io/file.rb
|
77
68
|
- lib/lib/sys/io/file_handle.rb
|
78
|
-
- lib/lib/_list/list_iterator.rb
|
79
69
|
- lib/lib/x_list/list_iterator.rb
|
80
70
|
- lib/lib/string_buf.rb
|
81
71
|
- lib/lib/haxe/imap.rb
|
@@ -87,12 +77,10 @@ files:
|
|
87
77
|
- lib/lib/haxe/io/bytes.rb
|
88
78
|
- lib/lib/haxe/io/error.rb
|
89
79
|
- lib/lib/haxe/io/output.rb
|
90
|
-
- lib/lib/haxe/log.rb
|
91
80
|
- lib/lib/haxe/ds/int_map.rb
|
92
81
|
- lib/lib/haxe/ds/string_map.rb
|
93
82
|
- lib/lib/haxe/format/json_parser.rb
|
94
83
|
- lib/lib/haxe/format/json_printer.rb
|
95
|
-
- lib/lib/sys.rb
|
96
84
|
- bin/daff.rb
|
97
85
|
- README.md
|
98
86
|
homepage: https://github.com/paulfitz/daff
|
@@ -127,50 +115,51 @@ summary: ! '[. To
|
138
|
-
from different origins, or with automatically generated IDs, or
|
139
|
-
check out the coopy toolbox. The program ----------- You
|
140
|
-
as a utility program: ```` $ daff daff can produce
|
141
|
-
as: daff [--output OUTPUT.csv] a.csv b.csv daff [--output
|
142
|
-
a.csv b.csv daff [--output OUTPUT.jsonbook] a.jsonbook b.jsonbook
|
143
|
-
[--output OUTPUT.csv] a.csv patch.csv daff merge [--inplace]
|
144
|
-
parent.csv a.csv b.csv daff trim [--output OUTPUT.csv] source.csv
|
145
|
-
OUTPUT.html] diff.csv daff git daff version The --inplace
|
146
|
-
will result in modification of a.csv. If you need more
|
147
|
-
list of flags: daff diff [--output OUTPUT.csv] [--context
|
148
|
-
a.csv b.csv --context NUM: show NUM rows of context --all: do
|
149
|
-
unchanged rows --act ACT: show only a certain kind of change (update,
|
150
|
-
delete) daff diff --git path old-file old-hex old-mode new-file new-hex
|
151
|
-
--git: process arguments provided by git to diff drivers daff
|
152
|
-
OUTPUT.html] [--css CSS.css] [--fragment] [--plain] diff.csv --css
|
153
|
-
a suitable css file to go with the html --fragment: generate
|
154
|
-
rather than a page --plain: do not use fancy utf8 characters
|
155
|
-
prettier ```` Using with git -------------- Run `daff git csv`
|
156
|
-
as a diff and merge handler for `*.csv` files in your repository. Run
|
157
|
-
for instructions on doing this manually.
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
[
|
165
|
-
]
|
166
|
-
|
167
|
-
```
|
168
|
-
```js var
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
121
|
+
php ```` Other translations are available here: > https://github.com/paulfitz/daff/releases Or
|
122
|
+
use the library to view csv diffs on github via a chrome extension: > https://github.com/theodi/csvhub The
|
123
|
+
diff format used by `daff` is specified here: > http://dataprotocols.org/tabular-diff-format/ This
|
124
|
+
library is a stripped down version of the coopy toolbox (see http://share.find.coop). To
|
125
|
+
compare tables from different origins, or with automatically generated IDs, or
|
126
|
+
other complications, check out the coopy toolbox. The program ----------- You
|
127
|
+
can run `daff`/`daff.py`/`daff.rb` as a utility program: ```` $ daff daff can produce
|
128
|
+
and apply tabular diffs. Call as: daff [--output OUTPUT.csv] a.csv b.csv daff [--output
|
129
|
+
OUTPUT.csv] parent.csv a.csv b.csv daff [--output OUTPUT.jsonbook] a.jsonbook b.jsonbook
|
130
|
+
daff patch [--inplace] [--output OUTPUT.csv] a.csv patch.csv daff merge [--inplace]
|
131
|
+
[--output OUTPUT.csv] parent.csv a.csv b.csv daff trim [--output OUTPUT.csv] source.csv
|
132
|
+
daff render [--output OUTPUT.html] diff.csv daff git daff version The --inplace
|
133
|
+
option to patch and merge will result in modification of a.csv. If you need more
|
134
|
+
control, here is the full list of flags: daff diff [--output OUTPUT.csv] [--context
|
135
|
+
NUM] [--all] [--act ACT] a.csv b.csv --context NUM: show NUM rows of context --all: do
|
136
|
+
not prune unchanged rows --act ACT: show only a certain kind of change (update,
|
137
|
+
insert, delete) daff diff --git path old-file old-hex old-mode new-file new-hex
|
138
|
+
new-mode --git: process arguments provided by git to diff drivers daff
|
139
|
+
render [--output OUTPUT.html] [--css CSS.css] [--fragment] [--plain] diff.csv --css
|
140
|
+
CSS.css: generate a suitable css file to go with the html --fragment: generate
|
141
|
+
just a html fragment rather than a page --plain: do not use fancy utf8 characters
|
142
|
+
to make arrows prettier ```` Using with git -------------- Run `daff git csv`
|
143
|
+
to install daff as a diff and merge handler for `*.csv` files in your repository. Run
|
144
|
+
`daff git` for instructions on doing this manually. Your CSV diffs and merges will
|
145
|
+
get smarter, since git will suddenly understand about rows and columns, not just
|
146
|
+
lines:  The library ----------- You can
|
147
|
+
use `daff` as a library from any supported language. We take here the example
|
148
|
+
of Javascript. To use `daff` on a webpage, first include `daff.js`: ```html <script
|
149
|
+
src="daff.js"></script> ``` Or if using node outside the browser: ```js var daff
|
150
|
+
= require(''daff''); ``` For concreteness, assume we have two versions of a table,
|
151
|
+
`data1` and `data2`: ```js var data1 = [ [''Country'',''Capital''], [''Ireland'',''Dublin''],
|
152
|
+
[''France'',''Paris''], [''Spain'',''Barcelona''] ]; var data2 = [ [''Country'',''Code'',''Capital''],
|
153
|
+
[''Ireland'',''ie'',''Dublin''], [''France'',''fr'',''Paris''], [''Spain'',''es'',''Madrid''],
|
154
|
+
[''Germany'',''de'',''Berlin''] ]; ``` To make those tables accessible to the library,
|
155
|
+
we wrap them in `daff.TableView`: ```js var table1 = new daff.TableView(data1);
|
156
|
+
var table2 = new daff.TableView(data2); ``` We can now compute the alignment between
|
157
|
+
the rows and columns in the two tables: ```js var alignment = daff.compareTables(table1,table2).align();
|
158
|
+
``` To produce a diff from the alignment, we first need a table for the output:
|
159
|
+
```js var data_diff = []; var table_diff = new daff.TableView(data_diff); ``` Using
|
160
|
+
default options for the diff: ```js var flags = new daff.CompareFlags(); var highlighter
|
161
|
+
= new daff.TableDiff(alignment,flags); highlighter.hilite(table_diff); ``` The
|
162
|
+
diff is now in `data_diff` in highlighter format, see specification here: > http://share.find.coop/doc/spec_hilite.html ```js
|
174
163
|
[ [ ''!'', '''', ''+++'', '''' ], [ ''@@'', ''Country'', ''Code'', ''Capital'' ],
|
175
164
|
[ ''+'', ''Ireland'', ''ie'', ''Dublin'' ], [ ''+'', ''France'', ''fr'', ''Paris''
|
176
165
|
], [ ''->'', ''Spain'', ''es'', ''Barcelona->Madrid'' ], [ ''+++'', ''Germany'',
|
@@ -185,18 +174,18 @@ summary: ! '[
|
186
175
|
page. Supported languages ------------------- The `daff` library is written in
|
187
176
|
[Haxe](http://haxe.org/), which can be translated reasonably well into at least
|
188
|
-
the following languages: * Javascript *
|
189
|
-
|
177
|
+
the following languages: * Javascript * Python * Java * C# * C++ * Ruby (using
|
178
|
+
an [unofficial haxe target](https://github.com/paulfitz/haxe) developed for `daff`) *
|
179
|
+
PHP Some translations are done for you on the [Releases](https://github.com/paulfitz/daff/releases)
|
190
180
|
page. To make another translation, follow the [Haxe getting started tutorial](http://haxe.org/doc/start)
|
191
181
|
for the language you care about, then do one of: ``` make js make php make py make
|
192
|
-
java make cs make cpp ```
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
: a specification of the diff format we use. * http://theodi.org/blog/csvhub-github-diffs-for-csv-files
|
182
|
+
java make cs make cpp ``` For each language, the `daff` library expects to be handed
|
183
|
+
an interface to tables you create, rather than creating them itself. This is to
|
184
|
+
avoid inefficient copies from one format to another. You''ll find a `SimpleTable`
|
185
|
+
class you can use if you find this awkward. API documentation ----------------- *
|
186
|
+
You can browse the `daff` classes at http://paulfitz.github.io/daff-doc/ Reading
|
187
|
+
material ---------------- * http://dataprotocols.org/tabular-diff-format/ : a specification
|
188
|
+
of the diff format we use. * http://theodi.org/blog/csvhub-github-diffs-for-csv-files
|
200
189
|
: using this library with github. * http://theodi.org/blog/adapting-git-simple-data
|
201
190
|
: using this library with gitlab. * http://okfnlabs.org/blog/2013/08/08/diffing-and-patching-data.html
|
202
191
|
: a summary of where the library came from. * http://blog.okfn.org/2013/07/02/git-and-github-for-data/
|