zaphire 0.0.18 → 0.0.36

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/zaphire.rb +582 -507
  3. data/test/test_zaphire.rb +0 -0
  4. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 04eabf77d33c1a421a393a1983bd07f6706a881a
4
- data.tar.gz: 09d1adab1102d694c8c58104a8a199f9983aea5a
3
+ metadata.gz: 490649dca97a57ebd6112acb99f9a9c727eafd60
4
+ data.tar.gz: df8c16f18ae82d1f781f8e2502879dc744040aa7
5
5
  SHA512:
6
- metadata.gz: cec493e72d388a2f326e827171a7704d33c80638a857a6e264fe6bd6625037f0af7c361ad58b466f5ed96546dad5ec42dbdcae19f6c39b228bd4dbbedac403ea
7
- data.tar.gz: a89d8d7d72f8927e5df1a4352769eb6727a0823255cf61698288a2b0f454bbd2826ffc9295c36367df0cf0f96348968876476058bd501b346bd9a95b1337a148
6
+ metadata.gz: cb593e631383b0ad495e96b47c63a785a89640a9136a0e0ec1eb12584898c40816b04efb075802784a10431018b0e9d0c9a7747369cfa03f9aa4a1449c9a5daf
7
+ data.tar.gz: ceb6827ea60b4e404c3d378e11c85276dab09714ccc76ec6bb01a4c986cb11f54b16fe6dcf694450c8ca4ff5122dec8b1c2b1f69695046b09420b53c515f19c6
@@ -1,507 +1,582 @@
1
- require 'roo'
2
- #require 'google-spreadsheet-ruby'
3
- require 'matrix'
4
- require 'google_drive'
5
- require 'csv'
6
- require 'open-uri'
7
-
8
- # short version for short commands that rely on global variable well set to get things
9
-
10
- module Z
11
-
12
- def self.get(pack=@iivar)
13
-
14
-
15
- key = m(pack,'key')
16
- sheet = m(pack, 'sheet')
17
- user = m(pack, 'user')
18
- password = m(pack, 'password')
19
- togetx = m(pack, 'x')
20
- togety = m(pack, 'y')
21
-
22
-
23
- end
24
-
25
- def self.v
26
- return '18'
27
- end
28
-
29
- end
30
-
31
- module Zsave
32
-
33
- def self.csv(arr,file,mode="w",opts={})
34
-
35
- arr = arr.to_a
36
-
37
- File.open(file,mode){ |f| f << arr.map(&:to_csv).join("\n") }
38
-
39
- #open(path,mode,opts){ |csv| array.each{ |row| csv << row } }
40
- end
41
-
42
- def self.cvs(array,path,mode="w",opts={})
43
-
44
- arr = arr.to_a
45
-
46
- File.open(file,mode){ |f| f << arr.map(&:to_csv).join("\n") }
47
-
48
- #open(path,mode,opts){ |csv| array.each{ |row| csv << row } }
49
- end
50
-
51
- end
52
-
53
-
54
-
55
- module Zgdocs
56
-
57
- def self.addvalue key,sheet,value,user,password
58
- t = Roo::Google.new(key, user: user, password: password)
59
- t.default_sheet = sheet
60
-
61
- rowtosave = Zgdocs.nextemptyrow(key,sheet,user,password)
62
-
63
- t.set(rowtosave, 1, value, sheet)
64
-
65
- end
66
-
67
- def self.addvaluenoaddrow key,sheet,value,user,password
68
- t = Roo::Google.new(key, user: user, password: password)
69
- t.default_sheet = sheet
70
-
71
- rowtosave = t.last_row + 1
72
-
73
- t.set(rowtosave, 1, value, sheet)
74
- end
75
-
76
-
77
- def self.addvaluenoaddrowtoken key,sheet,value,user,password,token
78
-
79
- session = GoogleDrive.login_with_oauth(token)
80
-
81
- ws = session.spreadsheet_by_key(key).worksheet_by_title(sheet)
82
-
83
- row = ws[1,1]
84
-
85
- ws[row, 1] = value
86
- ws.save()
87
-
88
- end
89
-
90
- def self.nextemptyrow key,sheet,user,password
91
- t = Roo::Google.new(key, user: user, password: password)
92
- t.default_sheet = sheet
93
-
94
- session = GoogleDrive.login(user, password)
95
- ws = session.spreadsheet_by_key(key).worksheet_by_title(sheet)
96
-
97
- rows = t.last_row
98
-
99
- ws.max_rows = (rows + 1) if ws.max_rows == rows
100
-
101
- rows = 0 if rows == nil
102
-
103
-
104
- aa = rows + 1
105
- aa
106
- end
107
-
108
- def self.save key,sheet,startcel,data,user,password
109
-
110
- t = Roo::Google.new(key, user: user, password: password)
111
- t.default_sheet = sheet
112
-
113
- rowstart = startcel[0]
114
- colstart = startcel[1]
115
-
116
- curRow = rowstart
117
-
118
- rowstosave = data.row_size
119
- sheetrows = Zgdocs.makesurethereisrows(rowstosave,key,sheet,user,password)
120
-
121
- puts "Data to save: " << data.to_s
122
- puts "Rows : " << rowstosave.to_s
123
-
124
- xx = data.row_size - 1
125
-
126
- 0.upto(xx) do |therow|
127
-
128
- curCol = colstart
129
-
130
- m "ZgdocsSaving Row",therow,xx
131
-
132
- data.row(therow).each do |value|
133
-
134
- #0.upto(row.column_count) do |col|
135
-
136
- # puts "ZgdocsSaving row: " << curRow.to_s << " col: " << curCol.to_s << " Value: " << value.to_s
137
-
138
- # value = data[rownum,colnum]
139
-
140
- t.set(curRow, curCol, value, sheet)
141
-
142
- curCol += 1
143
- end
144
-
145
- curRow += 1
146
-
147
- end
148
- end
149
-
150
- def self.makesurethereisrows rows,key,sheet,user,password
151
- t = Roo::Google.new(key, user: user, password: password)
152
-
153
- session = GoogleDrive.login(user, password)
154
-
155
- ws = session.spreadsheet_by_key(key).worksheet_by_title(sheet)
156
-
157
- ws.max_rows = (rows + 2) if ws.max_rows < rows
158
-
159
- end
160
-
161
- def self.makesurethereissheet sheet,key,user,password
162
- t = Roo::Google.new(key, user: user, password: password)
163
-
164
- unless t.sheets.include?(sheet)
165
- session = GoogleDrive.login(user, password)
166
- ws = session.spreadsheet_by_key(key)
167
- worksheet = ws.add_worksheet(sheet)
168
- end
169
- end
170
- end
171
-
172
- def it
173
- @it
174
- end
175
-
176
- def get a
177
- @it = a
178
- end
179
-
180
- def trunc a, decimals = 0
181
- if decimals == 0
182
- a.to_i
183
- else
184
- b = '%.' << decimals << "f"
185
- sprintf(b,a)
186
- end
187
- end
188
-
189
- def put a
190
- puts a.to_s
191
- end
192
-
193
- def d itext,i,xx,iadditional
194
- if i == nil
195
- puts a
196
- return ''
197
- else
198
- iadditional = '' if iadditional == nil
199
- tt = xx.to_f + 1.00
200
- aa = trunc( (( (i.to_f+1) / tt) * 100) )
201
- it = itext << ": (" << aa.to_s << "%)"
202
-
203
- return "" if @mvar == it
204
- @mvar = it
205
-
206
- texttodisp = @mvar << " " << iadditional
207
-
208
- i += 1
209
- xx += 1
210
-
211
- @mstart = theticks() if i == 1
212
- return "" if i == 1 or xx == 1
213
-
214
- it = trunc( (i.to_f / tt*10) )
215
-
216
- ee = ( (theticks.to_f - @mstart.to_f) / 60) * ( (tt - i) / i.to_f )
217
- aa = trunc( ee )
218
- bb = trunc( aa.to_f / 60 )
219
- cc1 = aa.to_f / 60
220
- cc2 = trunc( (aa.to_f / 60) )
221
- cc = trunc( (cc1 - cc2 ) * 60 )
222
-
223
- cc = "0" << cc.to_s if cc.to_s.size == 1
224
-
225
- it = "[" << " XXXXXXXXXX"[1..it.to_i] << " __________"[1..(10-it.to_i)] << "] " << texttodisp << " (" << bb.to_s << ":" << cc.to_s << " Min. left) " << i.to_i.to_s << " of " << tt.to_i.to_s
226
-
227
- d it
228
-
229
- iSetMsgForTerm(@itermattended, it) unless @itermattended
230
- end
231
- end
232
-
233
- def iSetMsgForTerm iterm,imessage
234
- return ""
235
- end
236
-
237
- # on m itext,i,xx
238
- # global mvar,mtim,mstart,iTermAttended
239
- # put trunc(i/xx*100) into aa
240
- # get itext&": ("&aa&"%)"
241
- # if mvar is it then exit m else put it into mvar
242
- # if i is 1 then put the ticks into mstart
243
- # if i is 0 or xx is 0 then exit m
244
- # get trunc(i/xx*10)
245
- # put trunc((the ticks-mstart)/(60)* ((xx-i)/i)) into aa
246
- # put trunc(aa/60) into bb
247
- # put trunc( (aa/60-trunc(aa/60))*60 ) into cc
248
- # if length(cc) is 1 then put "0" before cc
249
- # get "["&char 1 to it of " XXXXXXXXXX" & char 1 to (10-it) of "__________"&"]"&&mvar &&"("& bb&":"&cc&" Min. left)" &&i&&"of"&&xx
250
- # d it
251
- # if iTermAttended is not empty then get iSetMsgForTerm(iTermAttended,unquote(it))
252
- # end m
253
-
254
- def theticks
255
- Time.now().to_i
256
- end
257
-
258
- # Extending Ruby !!
259
-
260
- class String
261
-
262
- def delete_lines(num_of_lines=1)
263
- split(/\r\n|\r|\n/, num_of_lines+1).last
264
- end
265
-
266
- def delete_char(number=1, number2='')
267
- if number2==''
268
- self[number-1]=''
269
- self
270
- else
271
- self[number-1..number2-1]=''
272
- self
273
- end
274
- end
275
-
276
- def char(number=1, number2='')
277
- if number2==''
278
- self[number-1]
279
- else
280
- self[number-1..number2-1]
281
- end
282
- end
283
-
284
- def line(number=1, number2='')
285
- if number2==''
286
- self.split('\n')[number-1]
287
- else
288
- self.split('\n')[number-1..number2-1]
289
- end
290
- end
291
-
292
- def contains(tofind)
293
- self.include? tofind
294
- end
295
-
296
- def lastchar(a=1)
297
- return '' if self == nil
298
- self[-a..-1]
299
- end
300
-
301
- def number_of_lines
302
- return 0 if self == nil or self == ''
303
- self.lines.count
304
- end
305
-
306
- end
307
-
308
- class Nil
309
- def lastchar
310
- return ''
311
- end
312
-
313
- def number_of_lines
314
- return 0
315
- end
316
-
317
- def contains
318
- return false
319
- end
320
-
321
- def line
322
- return ''
323
- end
324
-
325
- def char
326
- return ''
327
- end
328
-
329
- end
330
-
331
- class Matrix
332
- def dump(firstLine = "")
333
- str = ""
334
- if firstLine != ""
335
- str << firstLine << "\n"
336
- end
337
- for i in 0...self.row_size
338
- space = ""
339
- for j in 0...self.column_size
340
- str << space << self[i,j].to_s
341
- space = " "
342
- end
343
- str << "\n"
344
- end
345
- return str
346
- end
347
- # La classe Matrix est immutable, or je veux pouvoir écrire :
348
- # m[i,j] = v
349
- #
350
- def []=(i, j, v)
351
- @rows[i][j] = v
352
- end
353
- # Il n'y a même pas de constructeur pour une matrice rectangulaire : bouhhh
354
- # Le prefixe "self." permet de déclarer une méthode de classe
355
- def self.create(nbRows, nbCols, value)
356
- return Matrix.rows(Array.new(nbRows, Array.new(nbCols,value)))
357
- end
358
- end
359
-
360
- def left a,b
361
- c = b-1
362
- a.to_s[0..c]
363
- end
364
-
365
- def chars(a, b, c)
366
- c.to_s[a-1..b-1]
367
- end
368
-
369
- # visiblematrix.each_with_index do |x, xi|
370
- # x.each_with_index do |y, yi|
371
- # puts "element [#{xi}, #{yi}] is #{y}"
372
- # end
373
- # end
374
-
375
- def offset (tofind, pack)
376
- a = pack.index(tofind)
377
- if a == nill
378
- a = 0
379
- else
380
- a += 1
381
- end
382
- a
383
- end
384
-
385
- def length a
386
- a.length
387
- end
388
-
389
- def icrash imessage
390
- d "CRASH****: " << imessage
391
- # break
392
- end
393
-
394
- def m(ifld, ipack, icrashnow)
395
- r = "\n"
396
-
397
- get offset("ı" << ifld << ",",ipack)
398
- if @it == 0 # multiline pck
399
- get offset("ı" << ifld << r,ipack)
400
- ifldend = "ıend" << ifld
401
- iendc = offset(ifldend, ipack) - 2
402
- if iendc == 0 or iendc <= @it
403
- if icrashnow == true
404
- icrash "mExtFrmPck:fldNotFound:'" << ifld << "'"
405
- return "***CRASH"
406
- end
407
- if ipack == ''
408
- get m(ifld, fiivar(), true)
409
- else
410
- get m(ifld, mreformat(ipack), true)
411
- end
412
- else
413
- istart = @it + (ifld.length) + 2
414
- get ipack.char(istart, iendc)
415
- end
416
- else
417
- ifldend = r
418
- istart = @it + length(ifld) + 2
419
- ilen = length(ipack)
420
- rrr = ipack.char(istart, ilen) << r
421
- iendc = offset(ifldend, rrr) - 2 + istart
422
- get ipack.char(istart, iendc)
423
- end
424
- return @it
425
- end
426
-
427
-
428
- def mreformat ipack
429
- r = "\n"
430
- until 1 == 2 do
431
- break if ipack.lines.count == 0
432
- get ipack.lines.first
433
- ipack = ipack.delete_lines(1)
434
-
435
- if @it.char(1) == "ı"
436
- aa = aa << it << r
437
-
438
- next if @it.contains(",")
439
-
440
- @it = @it.delete_char(1)
441
- iend = offset("ıend" << @it, ipack)
442
- icrash "reformat:StartedButNoEnd" if iend == 0
443
- aa = aa << ipack.char(1, iend)
444
- ipack = ipack.delete_char(1, iend)
445
- aa = aa << ipack.line(1) << r
446
- ipack = ipack.delete_lines(1)
447
-
448
- next
449
- else
450
- aa = aa << "ı" << it << r
451
- end
452
- end
453
-
454
- aa = aa << "≤"
455
- return aa
456
- end
457
-
458
- def ireplaceachar(aa)
459
- a = aa[0]
460
- b = aa[1]
461
- aa = aa.delete_char(1, 2)
462
- aa = aa.gsub(a, b)
463
- aa
464
- end
465
-
466
- # need to check strange symbols on a Mac, since Window mixes up chars
467
- def ms(ipart, inewvalue, ipack)
468
- r = "\n"
469
-
470
- icrash "ms():part not defined" if ipart == nil
471
- ipack = mreformat(ipack) if ipack.lastchar() != "≤"
472
- ipart = ireplaceachar("≤Ì" << ipart) if ipart.contains("≤")
473
- inewvalue = ireplaceachar("≤Ì" << inewvalue) if inewvalue.contains("≤")
474
-
475
- if inewvalue.number_of_lines < 2
476
- inewpart = "" << ipart << "," << inewvalue
477
- else
478
- inewpart = "" << ipart << r << inewvalue << r << "end" << ipart
479
- end
480
-
481
- get offset(r << "" << ipart << ",", r << ipack)
482
- get offset(r << "" << ipart << r, r << ipack) if @it == 0
483
-
484
- if @it == 0
485
- if ipack == ''
486
- return inewpart << r << "≤"
487
- else
488
- ipack[-1] = inewpart << r << "≤"
489
- return ipack
490
- end
491
- end
492
- istartchar = it
493
- iendoffset = offset("end" << ipart << r, ipack << r)
494
- ilastChar = iendoffset + length(ipart) + 3
495
- if iendoffset == 0
496
- yyy = ipack << r
497
- ilastChar = offset(r, yyy.char(istartchar, (length(ipack)+1))) - 2 + istartchar
498
- end
499
- ipack[istartchar-1..ilastchar-1] = inewpart
500
- return ipack
501
- end
502
-
503
- def fiivar(aa=nil)
504
- @iivar = '' if @iivar == nil
505
- @iivar = aa unless aa == nil
506
- return @iivar
507
- end
1
+ # enconding: utf-8
2
+ require 'roo'
3
+ # require 'google-spreadsheet-ruby'
4
+ require 'matrix'
5
+ require 'google_drive'
6
+ require 'csv'
7
+ require 'open-uri'
8
+
9
+ # short version for short commands that rely on global variable well set to get things
10
+
11
+ module Z
12
+ def self.get(p = @iivar, _isHash = false)
13
+ begin
14
+ session = GoogleDrive.login_with_oauth(p['auth_token']) unless p['auth_token'].nil?
15
+ session = GoogleDrive.login(p['user'], p['password'])
16
+
17
+ ws = session.spreadsheet_by_key(p['key']).worksheet_by_title(p['sheet'])
18
+
19
+ value = ws[p['y'], p['x']]
20
+ p = eval(value)
21
+ p = nil if p[p.length - 1][0] != '<gpackend>'
22
+ p.delete_last_item
23
+ rescue
24
+ return nil
25
+ end
26
+ end
27
+
28
+ def self.v
29
+ '36'
30
+ end
31
+ end
32
+
33
+ module Zsave
34
+ def self.csv(arr, file, mode = 'w', _opts = {})
35
+ arr = arr.to_a
36
+
37
+ File.open(file, mode) { |f| f << arr.map(&:to_csv).join("\n") }
38
+
39
+ # open(path,mode,opts){ |csv| array.each{ |row| csv << row } }
40
+ end
41
+
42
+ def self.cvs(_array, _path, mode = 'w', _opts = {})
43
+ arr = arr.to_a
44
+
45
+ File.open(file, mode) { |f| f << arr.map(&:to_csv).join("\n") }
46
+
47
+ # open(path,mode,opts){ |csv| array.each{ |row| csv << row } }
48
+ end
49
+ end
50
+
51
+ module Zgdocs
52
+ def self.addvalue(key, sheet, value, user, password)
53
+ t = Roo::Google.new(key, user: user, password: password)
54
+ t.default_sheet = sheet
55
+
56
+ rowtosave = Zgdocs.nextemptyrow(key, sheet, user, password)
57
+
58
+ t.set(rowtosave, 1, value, sheet)
59
+ end
60
+
61
+ def self.addvaluenoaddrow(key, sheet, value, user, password)
62
+ t = Roo::Google.new(key, user: user, password: password)
63
+ t.default_sheet = sheet
64
+
65
+ rowtosave = t.last_row + 1
66
+
67
+ t.set(rowtosave, 1, value, sheet)
68
+ end
69
+
70
+ def self.addvaluenoaddrowtoken(key, sheet, value, _user, _password, token)
71
+ session = GoogleDrive.login_with_oauth(token)
72
+
73
+ ws = session.spreadsheet_by_key(key).worksheet_by_title(sheet)
74
+
75
+ row = ws[1, 1]
76
+
77
+ ws[row, 1] = value
78
+ ws.save
79
+ end
80
+
81
+ def self.nextemptyrow(key, sheet, user, password)
82
+ t = Roo::Google.new(key, user: user, password: password)
83
+ t.default_sheet = sheet
84
+
85
+ session = GoogleDrive.login(user, password)
86
+ ws = session.spreadsheet_by_key(key).worksheet_by_title(sheet)
87
+
88
+ rows = t.last_row
89
+
90
+ ws.max_rows = (rows + 1) if ws.max_rows == rows
91
+
92
+ rows = 0 if rows.nil?
93
+
94
+ aa = rows + 1
95
+ aa
96
+ end
97
+
98
+ def self.save(key, sheet, startcel, data, user, password)
99
+ t = Roo::Google.new(key, user: user, password: password)
100
+ t.default_sheet = sheet
101
+
102
+ rowstart = startcel[0]
103
+ colstart = startcel[1]
104
+
105
+ curRow = rowstart
106
+
107
+ rowstosave = data.row_size
108
+ sheetrows = Zgdocs.makesurethereisrows(rowstosave, key, sheet, user, password)
109
+
110
+ puts 'Data to save: ' << data.to_s
111
+ puts 'Rows : ' << rowstosave.to_s
112
+
113
+ xx = data.row_size - 1
114
+
115
+ 0.upto(xx) do |therow|
116
+
117
+ curCol = colstart
118
+
119
+ m 'ZgdocsSaving Row', therow, xx
120
+
121
+ data.row(therow).each do |value|
122
+
123
+ # 0.upto(row.column_count) do |col|
124
+
125
+ # puts "ZgdocsSaving row: " << curRow.to_s << " col: " << curCol.to_s << " Value: " << value.to_s
126
+
127
+ # value = data[rownum,colnum]
128
+
129
+ t.set(curRow, curCol, value, sheet)
130
+
131
+ curCol += 1
132
+ end
133
+
134
+ curRow += 1
135
+
136
+ end
137
+ end
138
+
139
+ def self.makesurethereisrows(rows, key, sheet, user, password)
140
+ t = Roo::Google.new(key, user: user, password: password)
141
+
142
+ session = GoogleDrive.login(user, password)
143
+
144
+ ws = session.spreadsheet_by_key(key).worksheet_by_title(sheet)
145
+
146
+ ws.max_rows = (rows + 2) if ws.max_rows < rows
147
+ end
148
+
149
+ def self.makesurethereissheet(sheet, key, user, password)
150
+ t = Roo::Google.new(key, user: user, password: password)
151
+
152
+ unless t.sheets.include?(sheet)
153
+ session = GoogleDrive.login(user, password)
154
+ ws = session.spreadsheet_by_key(key)
155
+ worksheet = ws.add_worksheet(sheet)
156
+ end
157
+ end
158
+ end
159
+
160
+ def it
161
+ @it
162
+ end
163
+
164
+ def get(a = '')
165
+ @it = a
166
+ end
167
+
168
+ def trunc(a, decimals = 0)
169
+ if decimals == 0
170
+ a.to_i
171
+ else
172
+ b = '%.' << decimals << 'f'
173
+ sprintf(b, a)
174
+ end
175
+ end
176
+
177
+ def put(a)
178
+ puts a.to_s
179
+ end
180
+
181
+ def d(itext, i = nil, xx = '', iadditional = '')
182
+ if i.nil?
183
+ puts itext
184
+ return ''
185
+ else
186
+ iadditional = '' if iadditional.nil?
187
+ tt = xx.to_f + 1.00
188
+ aa = trunc((( (i.to_f + 1) / tt) * 100))
189
+ it = itext << ': (' << aa.to_s << '%)'
190
+
191
+ return '' if @mvar == it
192
+ @mvar = it
193
+
194
+ texttodisp = @mvar << ' ' << iadditional
195
+
196
+ i += 1
197
+ xx += 1
198
+
199
+ @mstart = theticks if i == 1
200
+ return '' if i == 1 || xx == 1
201
+
202
+ it = trunc((i.to_f / tt * 10))
203
+
204
+ ee = ( (theticks.to_f - @mstart.to_f) / 60) * ( (tt - i) / i.to_f)
205
+ aa = trunc(ee)
206
+ bb = trunc(aa.to_f / 60)
207
+ cc1 = aa.to_f / 60
208
+ cc2 = trunc((aa.to_f / 60))
209
+ cc = trunc((cc1 - cc2) * 60)
210
+
211
+ cc = '0' << cc.to_s if cc.to_s.size == 1
212
+
213
+ it = '[' << ' XXXXXXXXXX'[1..it.to_i] << ' __________'[1..(10 - it.to_i)] << '] ' << texttodisp << ' (' << bb.to_s << ':' << cc.to_s << ' Min. left) ' << i.to_i.to_s << ' of ' << tt.to_i.to_s
214
+
215
+ d it
216
+
217
+ iSetMsgForTerm(@itermattended, it) unless @itermattended
218
+ end
219
+ end
220
+
221
+ def iSetMsgForTerm(_iterm, _imessage)
222
+ ''
223
+ end
224
+
225
+ def theticks
226
+ Time.now.to_i
227
+ end
228
+
229
+ # Extending Ruby !!
230
+
231
+ class String
232
+ def delete_lines(num_of_lines = 1)
233
+ return '' if self == ''
234
+ split(/\r\n|\r|\n/, num_of_lines + 1).last
235
+ end
236
+
237
+ def delete_char(number = 1, number2 = '')
238
+ return '' if self == ''
239
+ if number2 == ''
240
+ self[number - 1] = ''
241
+ self
242
+ else
243
+ self[number - 1..number2 - 1] = ''
244
+ self
245
+ end
246
+ end
247
+
248
+ def char(number = 1, number2 = '')
249
+ return '' if self == ''
250
+ if number2 == ''
251
+ self[number - 1]
252
+ else
253
+ self[number - 1..number2 - 1]
254
+ end
255
+ end
256
+
257
+ def line(number = 1, number2 = '')
258
+ return '' if self == ''
259
+ if number2 == ''
260
+ ok.split("\n")[number - 1]
261
+ else
262
+ ok.split("\n")[number - 1..number2 - 1]
263
+ end
264
+ end
265
+
266
+ def contains(tofind)
267
+ return false if self == ''
268
+ self.include? tofind
269
+ end
270
+
271
+ def lastchar(a = 1)
272
+ return '' if self == ''
273
+ self[-a..-1]
274
+ end
275
+
276
+ def number_of_lines
277
+ return 0 if self == ''
278
+ lines.count
279
+ end
280
+
281
+ def ok
282
+ force_encoding('UTF-8')
283
+ end
284
+ end
285
+
286
+ class Array
287
+ def delete_last_item(n = 1)
288
+ take size - n
289
+ end
290
+
291
+ def lastitem
292
+ self[-1]
293
+ end
294
+ end
295
+
296
+ class NilClass
297
+ def lastchar
298
+ ''
299
+ end
300
+
301
+ def ok
302
+ ''.force_encoding('UTF-8')
303
+ end
304
+
305
+ def number_of_lines
306
+ 0
307
+ end
308
+
309
+ def contains
310
+ false
311
+ end
312
+
313
+ def line
314
+ ''
315
+ end
316
+
317
+ def lines
318
+ ''
319
+ end
320
+
321
+ def char
322
+ ''
323
+ end
324
+
325
+ def delete_char(_number = 1, _number2 = '')
326
+ ''
327
+ end
328
+
329
+ def delete_lines(_num_of_lines = 1)
330
+ ''
331
+ end
332
+ end
333
+
334
+ class Matrix
335
+ def dump(firstLine = '')
336
+ str = ''
337
+ if firstLine != ''
338
+ str << firstLine << "\n"
339
+ end
340
+ for i in 0...row_size
341
+ space = ''
342
+ for j in 0...column_size
343
+ str << space << self[i, j].to_s
344
+ space = ' '
345
+ end
346
+ str << "\n"
347
+ end
348
+ str
349
+ end
350
+ # La classe Matrix est immutable, or je veux pouvoir écrire :
351
+ # m[i,j] = v
352
+ #
353
+ def []=(i, j, v)
354
+ @rows[i][j] = v
355
+ end
356
+ # Il n'y a même pas de constructeur pour une matrice rectangulaire : bouhhh
357
+ # Le prefixe "self." permet de déclarer une méthode de classe
358
+ def self.create(nbRows, nbCols, value)
359
+ Matrix.rows(Array.new(nbRows, Array.new(nbCols, value)))
360
+ end
361
+ end
362
+
363
+ def left(a = '', b)
364
+ c = b - 1
365
+ a.to_s[0..c]
366
+ end
367
+
368
+ def chars(a, b, c = '')
369
+ c.to_s[a - 1..b - 1]
370
+ end
371
+
372
+ # visiblematrix.each_with_index do |x, xi|
373
+ # x.each_with_index do |y, yi|
374
+ # puts "element [#{xi}, #{yi}] is #{y}"
375
+ # end
376
+ # end
377
+
378
+ def offset(tofind = '', pack = '')
379
+ a = pack.ok.index(tofind)
380
+ if a.nil?
381
+ a = 0
382
+ else
383
+ a += 1
384
+ end
385
+ a
386
+ end
387
+
388
+ def length(a = '')
389
+ a.length
390
+ end
391
+
392
+ def icrash(imessage = '')
393
+ d 'CRASH****: ' << imessage
394
+ # break
395
+ end
396
+
397
+ def m(ifld = '', ipack = '', icrashnow = '')
398
+ return '' if ipack == ''
399
+
400
+ if ifld == ''
401
+ if icrashnow == true
402
+ icrash "mExtFrmPck:fldNotFound:'" << ifld << "'"
403
+ return '***CRASH'
404
+ else
405
+ return ''
406
+ end
407
+ end
408
+
409
+ a = ipack[ifld]
410
+
411
+ a = '' if a.nil?
412
+
413
+ a
414
+ end
415
+
416
+ # def m(ifld='', ipack='', icrashnow='')
417
+ # r = "\n".ok
418
+ # mchar = 245.chr.ok.to_s
419
+ # rrr = mchar << ifld << ","
420
+ # get offset(rrr, ipack)
421
+ # if @it == 0 # multiline pck
422
+ # rrr = mchar << ifld << r
423
+ # get offset(rrr, ipack)
424
+ # ifldend = mchar << "end" << ifld
425
+ # iendc = offset(ifldend, ipack) - 2
426
+ # if iendc == 0 or iendc <= @it
427
+ # if icrashnow == true
428
+ # icrash "mExtFrmPck:fldNotFound:'" << ifld << "'"
429
+ # return "***CRASH"
430
+ # end
431
+ # if ipack == ''
432
+ # get m(ifld, fiivar(), true)
433
+ # else
434
+ # get m(ifld, mreformat(ipack), true)
435
+ # end
436
+ # else
437
+ # istart = @it + (ifld.length) + 2
438
+ # get ipack.char(istart, iendc)
439
+ # end
440
+ # else
441
+ # ifldend = r
442
+ # istart = @it + length(ifld) + 2
443
+ # ilen = length(ipack)
444
+ # rrr = ipack.char(istart, ilen) << r
445
+ # iendc = offset(ifldend, rrr) - 2 + istart
446
+ # get ipack.char(istart, iendc)
447
+ # end
448
+ # return @it
449
+ # end
450
+
451
+ # def mreformat(ipack='')
452
+ # r = "\n".ok
453
+ # aa = ''
454
+ # mchar = 245.chr.to_s.ok
455
+ # mend = 178.chr.to_s.ok
456
+ # return '' if ipack == ''
457
+ # until 1 == 2 do
458
+ # break if ipack.number_of_lines == 0
459
+ # get ipack.ok.line(1)
460
+ # ipack = ipack.ok.delete_lines(1)
461
+
462
+ # if @it.char(1) == mchar
463
+ # aa = aa << it << r
464
+
465
+ # next if @it.contains(",")
466
+
467
+ # @it = @it.delete_char(1)
468
+ # rrr = mchar.ok << "end".ok << @it.ok
469
+ # iend = offset(rrr, ipack.ok)
470
+ # icrash "reformat:StartedButNoEnd" if iend == 0
471
+ # aa = aa.ok << ipack.char(1, iend)
472
+ # ipack = ipack.delete_char(1, iend)
473
+ # aa = aa << ipack.line(1) << r
474
+ # ipack = ipack.delete_lines(1)
475
+
476
+ # next
477
+ # else
478
+ # aa = aa << mchar << it << r
479
+ # end
480
+ # end
481
+
482
+ # aa = aa << mend
483
+ # return aa.to_s
484
+ # end
485
+
486
+ def ireplaceachar(aa)
487
+ a = aa[0]
488
+ b = aa[1]
489
+ aa = aa.delete_char(1, 2)
490
+ aa = aa.gsub(a, b)
491
+ aa
492
+ end
493
+
494
+ def ms(ipart = '', inewvalue = '', ipack = '')
495
+ ipack = {} if ipack == '' || ipack.nil?
496
+ return ipack if ipart == ''
497
+
498
+ b = {}
499
+ b[ipart] = inewvalue
500
+ ipack.update(b)
501
+ end
502
+
503
+ def md(ipack)
504
+ ipack.keys.join("\n")
505
+ end
506
+
507
+ # need to check strange symbols on a Mac, since Window mixes up chars
508
+ # def ms(ipart='', inewvalue='', ipack='')
509
+
510
+ # def clean
511
+ # a = self
512
+ # mend = 178.chr.to_s.ok
513
+ # mOther = 237.chr.to_s.ok
514
+ # if a.contains(mend) then
515
+ # rrr = mend << mOther << a
516
+ # a = ireplaceachar(rrr)
517
+ # end
518
+ # a
519
+ # end
520
+
521
+ # r = "\n".to_s.ok
522
+ # rrr = ''.to_s.ok
523
+ # mchar = 245.chr.to_s.ok
524
+ # mend = 178.chr.to_s.ok
525
+
526
+ # icrash "ms():part not defined" if ipart == ''
527
+ # ipack = mreformat(ipack) if ipack.lastchar != mend and ipack != ''
528
+ # ipart = ipart.clean
529
+ # inewvalue = inewvalue.clean
530
+
531
+ # if inewvalue.number_of_lines < 2
532
+ # inewpart = mchar << ipart << ',' << inewvalue
533
+ # else
534
+ # inewpart = mchar << ipart << r << inewvalue << r << "end" << ipart
535
+ # end
536
+
537
+ # rrr = r << mchar << ipart << ','
538
+ # rr2 = r << ipack
539
+ # get offset(rrr, rr2)
540
+ # if @it == 0
541
+ # rrr = r << mchar << ipart << r
542
+ # get offset(rrr, r << ipack) if @it == 0
543
+ # end
544
+
545
+ # if @it == 0
546
+ # if ipack == ''
547
+ # return inewpart << r << mend
548
+ # else
549
+ # ipack[-1] = inewpart << r << mend
550
+ # return ipack
551
+ # end
552
+ # end
553
+ # istartchar = it
554
+
555
+ # d "rrr: " << rrr.to_s.ok
556
+ # d "ipart: " << ipart.to_s.ok
557
+ # d "r: " << r.to_s.ok
558
+
559
+ # rrr = "end".ok << ipart.ok << r.ok
560
+ # iendoffset = offset(rrr.ok, ipack.ok << r.ok)
561
+ # ilastchar = iendoffset + length(ipart) + 3
562
+ # if iendoffset == 0
563
+ # yyy = ipack.ok << r.ok
564
+ # ilastChar = offset(r, yyy.char(istartchar, (length(ipack.ok)+1))) - 2 + istartchar
565
+ # end
566
+ # ipack[istartchar-1..ilastchar-1].ok = inewpart
567
+ # return ipack.ok
568
+ # end
569
+
570
+ def fiivar(aa = nil)
571
+ @iivar = '' if @iivar.nil?
572
+ @iivar = aa unless aa.nil?
573
+ @iivar
574
+ end
575
+
576
+ def t
577
+ a = ''
578
+ a = ms('first', 'a', a)
579
+ a = ms('second', 'b', a)
580
+
581
+ m('second', a)
582
+ end
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zaphire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.36
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lima90001
@@ -10,7 +10,7 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2014-08-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: A library to make Ruby nicer to HyperCard users and Myself
13
+ description: A library to make Ruby nicer to HyperCard users and Myself and ++
14
14
  email: lima90001@gmail.com
15
15
  executables: []
16
16
  extensions: []
@@ -28,17 +28,17 @@ require_paths:
28
28
  - lib
29
29
  required_ruby_version: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  required_rubygems_version: !ruby/object:Gem::Requirement
35
35
  requirements:
36
- - - ">="
36
+ - - '>='
37
37
  - !ruby/object:Gem::Version
38
38
  version: '0'
39
39
  requirements: []
40
40
  rubyforge_project:
41
- rubygems_version: 2.2.2
41
+ rubygems_version: 2.0.14
42
42
  signing_key:
43
43
  specification_version: 3
44
44
  summary: Zaphire!