changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > org > meta / annotate babel.org

changeset 8: 06698c6708de
parent: 4728f14839e4
child: 995df3d48af0
author: Richard Westhaver <ellis@rwest.io>
date: Wed, 04 Sep 2024 16:59:32 -0400
permissions: -rw-r--r--
description: fixes
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 #+title: babel
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 #+author: Richard Westhaver
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 #+description: Core Library of Babel
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 #+setupfile: ../clean.theme
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
5
 #+property: header-args :exports both :eval no
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
6
 Welcome to the CC [[https://www.gnu.org/software/emacs/manual/html_node/org/Library-of-Babel.html][Library of Babel]]. This file contains a collection of
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
7
 code blocks which may be used by authors throughout our public
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
8
 documentation.
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
10
 This library depends on the [[vc:core][core]] being properly installed and the
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
11
 =core/emacs= init system loaded in emacs. See [[vc:home][home]] for details.
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
12
 
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
13
 To load the library itself use ~C-c C-v i~ while visiting this file in
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
14
 an org-mode buffer or =org-babel-lob-ingest= from elisp.
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
15
 * echo                                                                 :util:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
16
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
17
 :ID:       70334979-e1fd-442d-815f-9eeb7d21ef4f
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
18
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
19
 #+name: echo
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
20
 #+begin_src emacs-lisp :var input=""
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
21
 input
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
22
 #+end_src
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
23
 * read                                                                   :fs:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
24
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
25
 :ID:       dade8198-f8ff-4ae9-a52d-becdc1a9c3ce
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
26
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
27
 #+name: read
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
28
 #+begin_src emacs-lisp :var file="" :var format=""
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
29
 (if (string= format "csv")
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
30
     (with-temp-buffer
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
31
       (org-table-import (expand-file-name file) nil)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
32
       (org-table-to-lisp))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
33
   (with-temp-buffer
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
34
     (insert-file-contents (expand-file-name file))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
35
     (buffer-string)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
36
 #+end_src
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
37
 * write                                                                  :fs:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
38
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
39
 :ID:       a866820f-e67c-49aa-ba7d-697c4f708654
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
40
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
41
 #+name: write
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
42
 #+begin_src emacs-lisp :var data="" :var file="" :var ext='()
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
43
 (cl-flet ((echo (r) (if (stringp r) r (format "%S" r))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
44
   (with-temp-file file
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
45
     (case (and (listp data)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
46
                (or ext (intern (file-name-extension file))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
47
       ('tsv (insert (orgtbl-to-tsv data '(:fmt echo))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
48
       ('csv (insert (orgtbl-to-csv data '(:fmt echo))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
49
       (t    (org-babel-insert-result data)))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
50
 nil
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
51
 #+end_src
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
52
 * json                                                                 :json:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
53
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
54
 :ID:       063109d3-3bb1-45b3-b963-6b306776798c
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
55
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
56
 #+name: json
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
57
 #+begin_src emacs-lisp :var file='() :var url='()
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
58
 (require 'json)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
59
 (cond
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
60
  (file
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
61
   (org-babel-with-temp-filebuffer file
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
62
     (goto-char (point-min))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
63
     (json-read)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
64
  (url
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
65
   (require 'w3m)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
66
   (with-temp-buffer
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
67
     (w3m-retrieve url)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
68
     (goto-char (point-min))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
69
     (json-read))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
70
 #+end_src
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
71
 
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
72
 * headline                                                              :org:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
73
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
74
 :ID:       e21d6130-804d-4ac7-bccf-8303fd33f509
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
75
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
76
 #+name: headline
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
77
 #+begin_src emacs-lisp :var headline="" :var file='()
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
78
 (save-excursion
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
79
   (when file (get-file-buffer file))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
80
   (org-open-link-from-string (org-make-link-string headline))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
81
   (save-restriction
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
82
     (org-narrow-to-subtree)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
83
     (buffer-string)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
84
 #+end_src
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
85
 * transpose                                                           :table:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
86
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
87
 :ID:       e35c9901-73b6-4794-8900-42860378c7dd
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
88
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
89
 #+name: transpose
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
90
 #+begin_src emacs-lisp :var table=""
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
91
   (apply #'mapcar #'list (list table))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
92
 #+end_src
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
93
 * all-to-string                                                       :table:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
94
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
95
 :ID:       a122b2bd-abd6-4486-97c8-242e6534e5a8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
96
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
97
 #+name: all-to-string
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
98
 #+begin_src emacs-lisp :var tbl='()
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
99
 (defun all-to-string (tbl)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
100
   (if (listp tbl)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
101
       (mapcar #'all-to-string tbl)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
102
     (if (stringp tbl)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
103
         tbl
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
104
       (format "%s" tbl))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
105
 (all-to-string tbl)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
106
 #+end_src
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
107
 * systemd-list-units                                                     :os:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
108
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
109
 :ID:       3b23c98d-a286-4988-846d-2dab3d25803d
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
110
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
111
 #+name: systemd-list-units
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
112
 #+begin_src sh :results replace
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
113
 systemctl list-units --state=running | grep -v systemd | awk '{print $1}' | grep service
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
114
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
115
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
116
 * wc-dir-lines                                                           :fs:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
117
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
118
 :ID:       70008815-9634-48ca-b672-b8dcf2a44074
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
119
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
120
 #+name: wc-dir-lines
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
121
 #+begin_src shell :var dir="."
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
122
 cd $dir && cat * | wc -l
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
123
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
124
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
125
 * wc-dir-words                                                           :fs:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
126
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
127
 :ID:       be755790-f367-4654-87e5-cd2927bfef45
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
128
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
129
 #+name: wc-dir-words
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
130
 #+begin_src shell :var dir="."
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
131
 cd $dir && cat * | wc -w
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
132
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
133
 
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
134
 * buffer-name                                                          :util:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
135
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
136
 :ID:       7e9f492e-224a-4cf5-b36d-828ccedc630a
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
137
 :END:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
138
 #+name: buffer-name
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
139
 #+begin_src emacs-lisp
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
140
 (buffer-name)
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
141
 #+end_src
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
142
 * tokei-dir-lines                                                        :fs:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
143
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
144
 :ID:       670e9855-f8d2-43eb-86af-3ef7292f90b9
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
145
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
146
 #+name: tokei-dir-lines
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
147
 #+begin_src shell :var src="" :results output replace
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
148
   cd ~/comp/$src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
149
   input=`tokei -C -o json`
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
150
   echo $input | jq -r '.["Total"] | .code, .comments, .blanks'
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
151
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
152
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
153
 * tokei-dir-langs                                                        :fs:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
154
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
155
 :ID:       ff9682f0-bb64-427f-a87d-e0c655f9fdc9
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
156
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
157
 #+name: tokei-dir-langs
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
158
 #+begin_src shell :var src="org" :results output replace
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
159
   cd ~/comp/$src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
160
   input=`tokei -C -o json`
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
161
   echo $input | jq -r '.["Total"].children | keys[]'
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
162
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
163
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
164
 * sum-str-nums                                                         :util:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
165
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
166
 :ID:       d3c4ac69-337f-430b-a4db-760504f099ea
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
167
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
168
 #+name: sum-str-nums
6
f747ffac7f40 meta and task work
Richard Westhaver <ellis@rwest.io>
parents: 5
diff changeset
169
 #+begin_src emacs-lisp :var s=tokei-dir-lines()
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
170
   (let ((tot 0))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
171
     (cl-loop
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
172
      with tot = 0
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
173
      for i in (split-string s) do
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
174
      (setf tot (+ tot (string-to-number i)))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
175
      finally return tot))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
176
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
177
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
178
 * org-task-tbl                                                          :org:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
179
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
180
 :ID:       0ee5b499-6f0b-4e15-8c6e-4876e90c20a9
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
181
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
182
 #+name: org-task-tbl
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
183
 #+begin_src emacs-lisp
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
184
   (let* ((ast (org-element-parse-buffer)) ;; built up the abstract syntax tree of the org buffer
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
185
          item-types ; all occuring item types. It could be that some task has more item types than another.
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
186
          tasks ; accumulation list for the tasks
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
187
          current-task ; name of the current task (header of level 1)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
188
          task-items) ; items of the current task
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
189
     (org-element-map ast 'headline
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
190
       (lambda (hl)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
191
         (cl-case (org-element-property :level hl)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
192
           (1 ; We assume here that headers of level 1 are tasks.
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
193
            (when current-task ; registering the old task
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
194
              (setq tasks (cons (cons current-task (nreverse task-items)) tasks)))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
195
            (setq current-task (org-element-property :raw-value hl) ; preparing the new task
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
196
                  task-items nil))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
197
           (2 ; item
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
198
            (let ((item-type (org-element-property :raw-value hl)))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
199
              (setq item-types (cons item-type item-types))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
200
              (setq task-items (cons (cons item-type (org-element-property :todo-keyword hl))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
201
                                     task-items)))))))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
202
     (setq tasks (nreverse (cons (cons current-task (nreverse task-items)) tasks)) ;add the last task
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
203
           item-types (sort (cl-remove-duplicates (nreverse item-types) :test 'string-equal) ; list of unique item types
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
204
                            #'string<)) ;;Sorting the items lexicographical. Other criteria could be applied.
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
205
       ;;;;;;;;;;
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
206
     ;; generating the output table:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
207
     (apply
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
208
      #'list
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
209
      (cons "Item" (mapcar #'car tasks)) ; header
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
210
      'hline
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
211
      ;; rows:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
212
      (mapcar
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
213
       ;; mapping the items to the todo states associated to the tasks:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
214
       (lambda (item-type)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
215
         (cons item-type
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
216
               (mapcar
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
217
                (lambda (task)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
218
                  (let ((todo-status (cdr (assoc-string item-type task))))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
219
                    todo-status))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
220
                tasks)))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
221
       item-types)))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
222
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
223
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
224
 * org-headlines-map                                                     :org:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
225
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
226
 :ID:       05955228-ca76-48bc-b769-f648b4310a9c
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
227
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
228
 #+name: org-headlines-map
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
229
 #+begin_src elisp
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
230
   (org-element-map (org-element-parse-buffer 'headline)
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
231
       'headline
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
232
     (lambda(hl)
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
233
       (let ((parent (org-element-property :parent hl)))
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
234
         (and (eq (org-element-type parent) 'headline)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
235
              (list (org-element-property :title parent) (org-element-property :title hl))))))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
236
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
237
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
238
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
239
 * make-files-tbl                                                     :org:fs:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
240
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
241
 :ID:       e2ff9dcf-8340-48b8-a1a6-e0036cbcc495
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
242
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
243
 #+name: ls-files
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
244
 #+begin_src sh :results silent :var dir=(expand-file-name "~/comp") name="org"
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
245
   ls -lh $dir/$name --time-style=long-iso \
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
246
     |awk '{if (NR!=1) print $8, $5, $6"-"$7}' \
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
247
     |awk 'BEGIN{print "file size updated"}{print $0}'
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
248
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
249
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
250
 #+name: make-files-tbl
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
251
 #+begin_src python :var tab=ls-files() :results table :colnames yes :hlines yes :exports results :eval no-export
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
252
 return tab
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
253
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
254
 
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
255
 * env-table                                                              :os:
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
256
 :PROPERTIES:
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
257
 :ID:       4c824478-0eaa-49b9-905f-2c9a6d4220eb
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
258
 :END:
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
259
 #+begin_src sh :results table replace
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
260
   for i in $(env);
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
261
   do
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
262
       echo "$i|" | sed '0,/=/s//|/'
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
263
   done
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
264
 #+end_src
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
265
 
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
266
 * get-env                                                                :os:
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
267
 :PROPERTIES:
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
268
 :ID:       8c1ecc68-ca25-4e72-81d8-415a43e59ae4
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
269
 :END:
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
270
 #+name: get-env
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
271
 #+begin_src elisp :results output :var key="HOME"
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
272
 (princ (getenv key))
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
273
 #+end_src
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
274
 
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
275
 #+RESULTS: get-env
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
276
 : /home/ellis
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
277
 
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
278
 * org-current-h1-title                                                  :org:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
279
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
280
 :ID:       ae61e7ed-c9ed-414c-8a5f-12b1702f018e
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
281
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
282
 #+name: org-current-h1-title
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
283
 #+begin_src emacs-lisp :results value
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
284
   (org-element-property :title (save-excursion (org-up-heading-safe) (org-element-at-point)))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
285
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
286
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
287
 #+RESULTS: org-current-h1-title
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
288
 : org-current-h1-title
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
289
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
290
 * get-emacs-version                                                   :emacs:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
291
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
292
 :ID:       af3d83a1-31bd-41b4-be35-c1f33507fd8d
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
293
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
294
 #+name: get-emacs-version
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
295
 #+begin_src elisp :results output
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
296
   (princ (concat (format "%s\n" (emacs-version))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
297
 		 (format "Org v%s" (org-version))))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
298
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
299
 
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
300
 * vc-log                                                                 :vc:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
301
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
302
 :ID:       b2d9f6f0-2ac7-4e45-abbe-b32cc2d0f7aa
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
303
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
304
 #+name: vc-log
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
305
 #+header: :var limit=-1
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
306
 #+header: :var buf=(buffer-name (current-buffer))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
307
 #+begin_src emacs-lisp
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
308
 ;; Most of this code is copied from vc.el vc-print-log
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
309
 (require 'vc)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
310
 (when (vc-find-backend-function
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
311
        (vc-backend (buffer-file-name (get-buffer buf))) 'print-log)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
312
   (let ((limit -1)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
313
         (vc-fileset nil)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
314
         (backend nil)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
315
         (files nil))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
316
     (with-current-buffer (get-buffer buf)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
317
       (setq vc-fileset (vc-deduce-fileset t)) ; FIXME: Why t? --Stef
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
318
       (setq backend (car vc-fileset))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
319
       (setq files (cadr vc-fileset)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
320
     (with-temp-buffer
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
321
       (let ((status (vc-call-backend
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
322
                      backend 'print-log files (current-buffer))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
323
         (when (and (processp status)   ; Make sure status is a process
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
324
                    (= 0 (process-exit-status status))) ; which has not terminated
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
325
           (while (not (eq 'exit (process-status status)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
326
             (sit-for 1 t)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
327
         (buffer-string)))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
328
 #+end_src
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
329
 * hg-rev                                                                 :vc:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
330
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
331
 :ID:       8119cf43-f2e7-4829-939c-fc4e8531ae6c
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
332
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
333
 #+name: hg-rev
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
334
 #+begin_src sh :var src="org"
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
335
 cd ~/comp/$src && hg log -l 1 --template '{node|short}'
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
336
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
337
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
338
 #+RESULTS: hg-rev
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
339
 : 2b6f731f3684
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
340
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
341
 * hg-id-num                                                              :vc:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
342
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
343
 :ID:       9602faee-5522-445b-a568-be603e20a978
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
344
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
345
 #+name: hg-id-num
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
346
 #+begin_src shell :var src="org"
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
347
 cd ~/comp/$src && hg id -n
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
348
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
349
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
350
 #+RESULTS: hg-id-num
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
351
 : 36+
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
352
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
353
 * hg-log-age                                                             :vc:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
354
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
355
 :ID:       8492f4fb-51a6-4221-8705-a15eb5a50ed4
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
356
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
357
 #+name: hg-log-age
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
358
 #+begin_src shell :var src="."
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
359
   cd ~/comp/$src && hg log -l1 --template "{date|age}"
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
360
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
361
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
362
 #+RESULTS: hg-log-age
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
363
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
364
 * sh-ob-tangle                                                          :org:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
365
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
366
 :ID:       7b311df4-83a3-489d-89a0-929928bce051
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
367
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
368
 #+name: sh-ob-tangle
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
369
 #+begin_src sh
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
370
   emacs -Q --batch --eval "
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
371
       (progn
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
372
 	(require 'ob-tangle)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
373
 	(dolist (file command-line-args-left)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
374
 	  (with-current-buffer (find-file-noselect file)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
375
 	    (org-babel-tangle))))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
376
     " "$@"
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
377
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
378
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
379
 * make-dot-tree                                                         :dot:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
380
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
381
 :ID:       5588f446-2d7a-4261-b829-68effd3778ac
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
382
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
383
 #+name: make-dot-tree
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
384
 #+begin_src emacs-lisp :var table=org-headlines-map() :results output
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
385
   (mapcar #'(lambda (x)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
386
 		(princ (format "\"%s\" -> \"%s\";\n" (cl-first x) (cl-second x))))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
387
 	  table)
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
388
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
389
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
390
 * gen-dot-tree                                                          :dot:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
391
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
392
 :ID:       a51c943d-0f01-4c8f-96ec-db28ae7fef26
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
393
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
394
 #+name: gen-dot-tree
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
395
 #+begin_src dot :file /tmp/tree.png :cmdline -Kdot -Tpng :var input=make-dot-tree() :eval no-export
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
396
 digraph {
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
397
    rankdir=TB;
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
398
    splines=true;
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
399
    node [shape=box];
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
400
    $input
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
401
   }
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
402
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
403
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
404
 * user-slime                                                           :lisp:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
405
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
406
 :ID:       9ffd1d10-ffad-486e-9d7d-82422342b9ff
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
407
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
408
 #+name: user-slime
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
409
 #+begin_src emacs-lisp :results silent :eval no-export
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
410
   (unless (slime-connected-p) (slime))
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
411
   (slime-eval '(ql:quickload :user))
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
412
   (slime-repl-set-package "USER")
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
413
 #+end_src
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
414
 * std-slime                                                            :lisp:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
415
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
416
 :ID:       334dae41-5c35-48bd-8368-71d79f5e48d8
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
417
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
418
 #+name: std-slime
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
419
 #+begin_src emacs-lisp :results silent :eval no-export
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
420
   (unless (slime-connected-p) (slime))
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
421
   (slime-eval '(ql:quickload :std))
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
422
   (slime-repl-set-package "STD-USER")
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
423
 #+end_src
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
424
 * test-slime                                                           :lisp:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
425
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
426
 :ID:       ff559b09-1c18-422c-a0ae-681180f685cf
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
427
 :END:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
428
 #+name: std-slime
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
429
 #+begin_src emacs-lisp :results silent :eval no-export
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
430
   (unless (slime-connected-p) (slime))
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
431
   (slime-eval '(ql:quickload :core/tests))
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
432
   (slime-repl-set-package "CORE/TESTS")
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
433
 #+end_src
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
434
 * cargo-update-dir                                                     :rust:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
435
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
436
 :ID:       67dc87bb-a27b-46e4-a02f-58daac514630
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
437
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
438
 #+name: cargo-update-dir
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
439
 #+begin_src sh :var dir=()
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
440
 # update all crates in dir
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
441
 set -eu
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
442
 case $0 in
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
443
    (/*) dir=${0%/*}/;;
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
444
    (*/*) dir=./${0%/*};;
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
445
    (*) dir=.;;
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
446
 esac
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
447
 
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
448
 find "$dir/.." -name Cargo.toml -execdir cargo update \;
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
449
 #+end_src
5
6538a100c792 weekend warrior
Richard Westhaver <ellis@rwest.io>
parents: 2
diff changeset
450
 * rust-target-triple                                                   :rust:
2
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
451
 :PROPERTIES:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
452
 :ID:       02f96ff2-c607-4889-979c-943203b8ad65
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
453
 :END:
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
454
  #+name: rust-target-triple
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
455
  #+begin_src shell
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
456
  rustc -vV | sed -n -e 's/^host: //p'
a4e233714062 meta and task updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
457
  #+end_src
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
458
 * post-align-table                                                    :table:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
459
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
460
 :ID:       d8a3cc05-a4ec-4820-935d-63f676ee32a3
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
461
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
462
 #+NAME: post-align-tables
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
463
 #+header: :var text="|5|22222|\n|0||\n|12|45|\n|---\n|||\n#+TBLFM:@>$1=vsum(@1..@-1)\n\n|1|22222|\n|0||\n|12|45|\n"
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
464
 #+BEGIN_SRC emacs-lisp :results value :exports both
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
465
   (with-temp-buffer
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
466
     (erase-buffer)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
467
     (cl-assert text nil "PostAlignTables received nil instead of text ")
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
468
     (insert text)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
469
     (beginning-of-buffer)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
470
     (org-mode)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
471
     (while
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
472
         (search-forward-regexp org-table-any-line-regexp nil t)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
473
       (org-table-align)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
474
       (org-table-recalculate 'iterate)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
475
       (goto-char (org-table-end)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
476
     (buffer-string))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
477
 #+END_SRC
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
478
 * insert-table-from-file                                           :table:fs:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
479
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
480
 :ID:       bde8705d-0969-493d-91b9-51a93ae09efa
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
481
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
482
 #+NAME: insert-table-from-file
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
483
 #+HEADER: :var tname="table" fname="/tmp/tbl.org" newcaption="" newattr="" newname=""
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
484
 #+BEGIN_SRC elisp :results output drawer
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
485
   (let* ((klist (cl-remove-if (lambda (x) (equal (cadr x) ""))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
486
     			    `(("ATTR_LATEX" ,newattr) ("CAPTION" ,newcaption) ("NAME" ,newname))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
487
          (tbl
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
488
           (with-temp-buffer
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
489
     	  (org-mode)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
490
     	  (insert-file-contents fname)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
491
     	  (goto-char (point-min))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
492
     	  (unless (re-search-forward
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
493
     		   (concat "^[ \t]*#\\+\\(tbl\\)?name:[ \t]*"
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
494
     			   (regexp-quote tname) "[ \t]*$")
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
495
     		   nil t)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
496
     	    (user-error "Can't find table named %s in file" tname fname))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
497
     	  (forward-line 0)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
498
     	  (let ((tstart (match-beginning 0))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
499
     	        tend)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
500
     	    (while (looking-at "^[ \t]*#\\+\\([^:]+\\): *\\(.*\\)")
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
501
     	      (add-to-list 'klist `(,(upcase (match-string 1)) ,(match-string 2)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
502
     	      (delete-region (point) (line-end-position))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
503
     	      (kill-line))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
504
     	    (unless (looking-at org-table-line-regexp)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
505
     	      (looking-at "^.*$")
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
506
     	      (user-error "no table at location of %s, Looking-at: '%s'" tname (match-string 0)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
507
     	    (goto-char (org-table-end))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
508
     	    (while (looking-at-p "^[ \t]*#\\+TBLFM:")
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
509
     	      (forward-line 1))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
510
     	    (buffer-substring tstart (point))))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
511
     (setq klist (nreverse klist)) ;; reverse for giving priority to new user settings
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
512
     (dolist (elem '("NAME" "CAPTION" "ATTR_LATEX"))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
513
       (when (assoc elem klist)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
514
         (princ (format "#+%s: %s\n" elem (cadr (assoc elem klist))))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
515
     (princ tbl))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
516
 #+END_SRC
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
517
 * filter-table                                                        :table:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
518
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
519
 :ID:       cec80330-99c3-4dab-9b13-bb0a520ace73
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
520
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
521
 #+NAME: filter-table
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
522
 #+HEADER: :var tbl="" col=0 vals=""
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
523
 #+BEGIN_SRC elisp :results value  :colnames y
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
524
   (let ((lst (split-string vals)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
525
     (concatenate 'list  (loop for row in tbl
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
526
                               if (member (let ((field (nth col row)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
527
                                            (if (numberp field)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
528
                                                (number-to-string field)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
529
                                              field)) lst)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
530
                               collect row into newtbl
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
531
                               ;; else do (princ (format "%s: %s\n" (nth col row) lst))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
532
                               finally return newtbl)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
533
 #+END_SRC
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
534
 * filter-table-re                                                  :table:rx:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
535
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
536
 :ID:       61e82902-3108-4cee-8e02-3e9d6770f5cb
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
537
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
538
 #+NAME: filter-table-re
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
539
 #+HEADER: :var tbl="" col=0 vals=".*"
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
540
 #+BEGIN_SRC elisp :results value  :colnames y
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
541
   (let ((lst (split-string vals)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
542
     (concatenate 'list  (loop for row in tbl
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
543
                               if (let* ((rawfield (nth col row))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
544
                                         (field (if (numberp rawfield)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
545
                                                    (number-to-string rawfield)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
546
                                                  rawfield)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
547
                                    (loop for regx in lst
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
548
                                          when(string-match-p regx field) return 't
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
549
                                          finally return nil))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
550
                               collect row into newtbl
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
551
                               ;; else do (princ (format "%s: %s\n" (nth col row) lst))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
552
                               finally return newtbl)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
553
 #+END_SRC
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
554
 * group-table                                                         :table:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
555
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
556
 :ID:       d1cb8d5d-14bc-4fbe-baf0-ff819d51ec4c
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
557
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
558
 #+NAME: group-table
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
559
 #+HEADER: :var tbl="" grp="Name" op="sum" rescols="B"
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
560
 #+BEGIN_SRC python :results output verbatim drawer :colnames no
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
561
   import pandas as pd
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
562
   import numpy as np
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
563
   import orgbabelhelper as obh
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
564
   import sys
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
565
   import re
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
566
 
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
567
   df = obh.orgtable_to_dataframe(tbl)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
568
   grparr = re.split(r",\s*", grp)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
569
   #print re.split(r",\s*", rescols) + [grp]
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
570
   df = df[re.split(r",\s*", rescols) + grparr]
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
571
   for elem in grparr:
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
572
       assert elem in df.columns, "Error: group column %s not in table columns %s" % (elem, ",".join(df.columns))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
573
 
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
574
   if op == "sum":
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
575
       res = df.groupby(grparr).sum()
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
576
   else:
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
577
       error("operation %s not implemented" % op)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
578
       sys.exit(1)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
579
 
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
580
   print(obh.dataframe_to_orgtable(res))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
581
 
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
582
 #+END_SRC
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
583
 * insert-file                                                            :fs:
8
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
584
 :PROPERTIES:
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
585
 :ID:       57196c4d-a275-4023-8462-a5847676347c
Richard Westhaver <ellis@rwest.io>
parents: 7
diff changeset
586
 :END:
7
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
587
 #+NAME: lobInsertFile
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
588
 #+HEADER: :var filename="/tmp/foo"
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
589
 #+begin_src elisp :results value raw drawer
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
590
   (cl-labels ((wrap-src
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
591
   	      (lang)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
592
   	      (list (format "#+BEGIN_SRC %s :eval never :exports source\n" lang)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
593
                       "#+END_SRC\n")))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
594
     (let ((wrappers
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
595
   	 (pcase (file-name-extension filename)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
596
   	   ("py" (wrap-src "python"))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
597
   	   (".el" (wrap-src "emacs-lisp"))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
598
   	   (t '("#+BEGIN_EXAMPLE\n" "#+END_EXAMPLE\n")))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
599
       (with-temp-buffer
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
600
         (goto-char (point-min))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
601
         (insert (format-time-string "# inserted at %Y-%m-%d %H:%M:%S\n"))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
602
         (insert (car wrappers))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
603
         (insert-file-contents filename)
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
604
         (goto-char (point-max))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
605
         (insert (car (cdr wrappers)))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
606
         (buffer-string))))
4728f14839e4 publishing updates
Richard Westhaver <ellis@rwest.io>
parents: 6
diff changeset
607
 #+end_src