Overview
Comment: | Got title of zeroth column working, not all consequences handled yet (I suspect) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | v1.55 |
Files: | files | file ages | folders |
SHA1: |
be362b3b7ec3bb2243eb929df994a3ad |
User & Date: | matt on 2013-09-05 00:30:50 |
Other Links: | branch diff | manifest | tags |
Context
2013-09-05
| ||
17:36 | First pass on revtag tool check-in: 67a802fc2e user: mrwellan tags: v1.55 | |
00:30 | Got title of zeroth column working, not all consequences handled yet (I suspect) check-in: be362b3b7e user: matt tags: v1.55 | |
2013-09-04
| ||
16:48 | Added version tracking in executable to refdb check-in: 69ac7e9d8f user: mrwellan tags: v1.55 | |
Changes
Modified txtdb/nada3/Sheet3.dat from [da39a3ee5e] to [2e8bf819e7].
> > > > > > > > | 1 2 3 4 5 6 7 8 | [zeroth title] row1name row2name [col1title] row1name row1value row2nameNoValue row3name row3value |
Modified txtdb/txtdb.scm from [8e3db0be7e] to [5a31465a98].
︙ | ︙ | |||
75 76 77 78 79 80 81 | (sheet-name (car (find-section dat 'http://www.gnumeric.org/v10.dtd:Name))) ;; (safe-name (string->safe-filename sheet-name)) (cells (find-section dat 'http://www.gnumeric.org/v10.dtd:Cells)) (remaining (remove-section (remove-section dat 'http://www.gnumeric.org/v10.dtd:Name) 'http://www.gnumeric.org/v10.dtd:Cells)) (rownums (make-hash-table)) ;; num -> name (colnums (make-hash-table)) ;; num -> name | | > > | > | > > > > | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | (sheet-name (car (find-section dat 'http://www.gnumeric.org/v10.dtd:Name))) ;; (safe-name (string->safe-filename sheet-name)) (cells (find-section dat 'http://www.gnumeric.org/v10.dtd:Cells)) (remaining (remove-section (remove-section dat 'http://www.gnumeric.org/v10.dtd:Name) 'http://www.gnumeric.org/v10.dtd:Cells)) (rownums (make-hash-table)) ;; num -> name (colnums (make-hash-table)) ;; num -> name (cols (make-hash-table)) ;; name -> ( (name val) ... ) (col0title "")) (for-each (lambda (cell) (let ((rownum (string->number (car (find-section cell 'Row)))) (colnum (string->number (car (find-section cell 'Col)))) (valtype (let ((res (find-section cell 'ValueType))) (if res (car res) #f))) (value (let ((res (cdr (filter (lambda (x)(not (list? x))) cell)))) (if (null? res) "" (car res))))) ;; If colnum is 0 Then this is a row name, if rownum is 0 then this is a col name (cond ((and (not (eq? 0 rownum)) (eq? 0 colnum)) ;; a blank in column zero is handled with the special name "row-N" (hash-table-set! rownums rownum (if (equal? value "") (conc "row-" rownum) value))) ((and (not (eq? 0 colnum)) (eq? 0 rownum)) (hash-table-set! colnums colnum (if (equal? value "") (conc "col-" colnum) value))) ((and (eq? 0 rownum) (eq? 0 colnum)) (set! col0title value)) (else (let ((colname (hash-table-ref/default colnums colnum (conc "col-" colnum))) (rowname (hash-table-ref/default rownums rownum (conc "row-" rownum)))) (hash-table-set! cols colname (cons (list rowname value) (hash-table-ref/default cols colname '())))))))) cells) (let ((ref-colnums (map (lambda (c) (list (cdr c)(car c))) (hash-table->alist colnums)))) (with-output-to-file (conc targdir "/" sheet-name ".dat") (lambda () (print "[" col0title "]") (for-each (lambda (colname) (print "[" colname "]") (for-each (lambda (row) (let ((key (car row)) (val (cadr row))) (if (string-search comment-rx key) (print val) |
︙ | ︙ | |||
213 214 215 216 217 218 219 | (comment-rx (regexp "^#.*")) ;; This means a cell name cannot start with # (cell-rx (regexp "^(\\S+) (.*)$")) ;; One space only for the cellname content separator (blank-rx (regexp "^\\s*$")) (continue-rx (regexp ".*\\\\$")) (var-no-val-rx (regexp "^(\\S+)\\s*$")) (inp (open-input-file fname)) (cmnt-indx (make-hash-table)) | | > > | | > > > | | | 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 | (comment-rx (regexp "^#.*")) ;; This means a cell name cannot start with # (cell-rx (regexp "^(\\S+) (.*)$")) ;; One space only for the cellname content separator (blank-rx (regexp "^\\s*$")) (continue-rx (regexp ".*\\\\$")) (var-no-val-rx (regexp "^(\\S+)\\s*$")) (inp (open-input-file fname)) (cmnt-indx (make-hash-table)) (blnk-indx (make-hash-table)) (first-section #f)) ;; used for zeroth title (let loop ((inl (read-line inp)) (section ".............") (res '())) (if (eof-object? inl) (begin (close-input-port inp) (cons (list first-section first-section first-section) (reverse res))) (regex-case inl (continue-rx _ (loop (conc inl (read-line inp)) section res)) (comment-rx _ (let ((curr-indx (+ 1 (hash-table-ref/default cmnt-indx section 0)))) (hash-table-set! cmnt-indx section curr-indx) (loop (read-line inp) section (cons (list (conc "#CMNT" curr-indx) section inl) res)))) (blank-rx _ (let ((curr-indx (+ 1 (hash-table-ref/default blnk-indx section 0)))) (hash-table-set! blnk-indx section curr-indx) (loop (read-line inp) section (cons (list (conc "#BLNK" curr-indx) section " ") res)))) (section-rx (x sname) (begin (if (not first-section) (set! first-section sname)) (loop (read-line inp) sname res))) (cell-rx (x k v) (loop (read-line inp) section (cons (list k section v) res))) (var-no-val-rx (x k) (loop (read-line inp) section (cons (list k section "") res))) (else (begin |
︙ | ︙ | |||
262 263 264 265 266 267 268 | (let* ((values (hash-table-keys expressions)) ;; note, values are the id numbers (new-max (+ 1 (if (null? values) 0 (apply max values))))) (hash-table-set! expressions val new-max) (list 'ExprID new-max))))) (else '(ValueType "60")))) (define (dat->cells dat) | | | 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 | (let* ((values (hash-table-keys expressions)) ;; note, values are the id numbers (new-max (+ 1 (if (null? values) 0 (apply max values))))) (hash-table-set! expressions val new-max) (list 'ExprID new-max))))) (else '(ValueType "60")))) (define (dat->cells dat) (let* ((indx (common:sparse-list-generate-index (cdr dat))) (row-indx (car indx)) (col-indx (cadr indx)) (rowdat (map (lambda (row)(list (car row) " " (car row))) row-indx)) (coldat (map (lambda (col)(list " " (car col) (car col))) col-indx)) (exprs (make-hash-table))) (list (cons 'http://www.gnumeric.org/v10.dtd:Cells (map (lambda (item) |
︙ | ︙ | |||
539 540 541 542 543 544 545 546 547 548 549 550 551 552 | (lambda () (map print sheet-names)))))) (let ((dotfile (conc (get-environment-variable "HOME") "/.txtdbrc"))) (if (file-exists? dotfile) (load dotfile))) (main) #| (define x (refdb:read-gnumeric-xml "testdata-stripped.xml")) | > > > | 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 | (lambda () (map print sheet-names)))))) (let ((dotfile (conc (get-environment-variable "HOME") "/.txtdbrc"))) (if (file-exists? dotfile) (load dotfile))) (let ((debugcontrolf (conc (get-environment-variable "HOME") "/.refdbrc"))) (if (file-exists? debugcontrolf) (load debugcontrolf))) (main) #| (define x (refdb:read-gnumeric-xml "testdata-stripped.xml")) |
︙ | ︙ |