From f5bcaaf2ec5122f619909273094c464432b0a862 Mon Sep 17 00:00:00 2001 From: Benjamin VAUDOUR Date: Tue, 28 Dec 2021 11:28:59 +0000 Subject: [PATCH] =?UTF-8?q?Adapation=20du=20rc.elv=20au=20nouvel=20emplace?= =?UTF-8?q?ment=20de=20mon=20module=20perso=20+=20suppression=20de=20l?= =?UTF-8?q?=E2=80=99ancien?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/moi/alias.elv | 6 - lib/moi/completion.elv | 19 -- lib/moi/completion/arc.elv | 48 --- lib/moi/completion/archiver.elv | 30 -- lib/moi/completion/desarchiver.elv | 12 - lib/moi/completion/kcp.elv | 41 --- lib/moi/completion/mpv.elv | 59 ---- lib/moi/completion/pacman.elv | 105 ------- lib/moi/completion/ssh.elv | 102 ------- lib/moi/completion/sudo.elv | 10 - lib/moi/completion/use.elv | 24 -- lib/moi/util/common.elv | 42 --- lib/moi/util/condition.elv | 20 -- lib/moi/util/file.elv | 58 ---- lib/moi/util/format.elv | 203 ------------- lib/moi/util/ip.elv | 153 ---------- lib/moi/util/list.elv | 296 ------------------- lib/moi/util/map.elv | 94 ------ lib/moi/util/option.elv | 74 ----- lib/moi/util/pdf.elv | 459 ----------------------------- lib/moi/util/strutil.elv | 114 ------- rc.elv | 28 +- 22 files changed, 16 insertions(+), 1981 deletions(-) delete mode 100644 lib/moi/alias.elv delete mode 100644 lib/moi/completion.elv delete mode 100644 lib/moi/completion/arc.elv delete mode 100644 lib/moi/completion/archiver.elv delete mode 100644 lib/moi/completion/desarchiver.elv delete mode 100644 lib/moi/completion/kcp.elv delete mode 100644 lib/moi/completion/mpv.elv delete mode 100644 lib/moi/completion/pacman.elv delete mode 100644 lib/moi/completion/ssh.elv delete mode 100644 lib/moi/completion/sudo.elv delete mode 100644 lib/moi/completion/use.elv delete mode 100644 lib/moi/util/common.elv delete mode 100644 lib/moi/util/condition.elv delete mode 100644 lib/moi/util/file.elv delete mode 100644 lib/moi/util/format.elv delete mode 100644 lib/moi/util/ip.elv delete mode 100644 lib/moi/util/list.elv delete mode 100644 lib/moi/util/map.elv delete mode 100644 lib/moi/util/option.elv delete mode 100644 lib/moi/util/pdf.elv delete mode 100644 lib/moi/util/strutil.elv diff --git a/lib/moi/alias.elv b/lib/moi/alias.elv deleted file mode 100644 index 7b523c8..0000000 --- a/lib/moi/alias.elv +++ /dev/null @@ -1,6 +0,0 @@ -var dir = ~/.config/elvish/aliases - -for file [(set _ = ?(put $dir/*.elv))] { - var content = (cat $file | slurp) - eval $content -} diff --git a/lib/moi/completion.elv b/lib/moi/completion.elv deleted file mode 100644 index 6f28ec3..0000000 --- a/lib/moi/completion.elv +++ /dev/null @@ -1,19 +0,0 @@ -#use github.com/zzamboni/elvish-completions/builtins -#use github.com/zzamboni/elvish-completions/cd -#use github.com/zzamboni/elvish-completions/git -#set git:git-command = hub -#set git:git-completions[checkout] = [ { git:MODIFIED; git:BRANCHES &all } ... ] -#git:init -#use github.com/zzamboni/elvish-completions/ssh - -#use github.com/xiaq/edit.elv/compl/go - -use ./completion/arc -use ./completion/archiver -use ./completion/desarchiver -use ./completion/kcp -use ./completion/mpv -use ./completion/pacman -use ./completion/ssh -use ./completion/sudo -use ./completion/use diff --git a/lib/moi/completion/arc.elv b/lib/moi/completion/arc.elv deleted file mode 100644 index b72f5b0..0000000 --- a/lib/moi/completion/arc.elv +++ /dev/null @@ -1,48 +0,0 @@ -use moi/util/condition -use moi/util/file - -var commands = [ - help - archive - unarchive - extract - ls -] - -var extensions = [ tar bz2 zip gz lz4 sz xz zst rar ] - -fn -comp-commands { all $commands } - -fn -comp-archive-files {|m| - var type = (condition:cset (eq $m '') prefix deep-prefix) - file:match-extensions &type=$type $m $@extensions -} - -fn -comp-inline-files {|archive| - try { - arc ls $archive | eawk {|_ @argv| put $argv[-1] } - } except e { - nop - } -} - -fn complete {|@argv| - var c cmd = (count $argv) $argv[1] - if (== $c 2) { - -comp-commands - } elif (== $c 3) { - if (not (has-value [help archive] $cmd)) { - -comp-archive-files $argv[-1] - } - } else { - if (eq $cmd archive) { - edit:complete-filename $@argv - } elif (eq $cmd extract) { - var archive = $argv[2] - -comp-inline-files $archive - } - } -} - -set edit:completion:arg-completer[arc] = $complete~ - diff --git a/lib/moi/completion/archiver.elv b/lib/moi/completion/archiver.elv deleted file mode 100644 index 4722adc..0000000 --- a/lib/moi/completion/archiver.elv +++ /dev/null @@ -1,30 +0,0 @@ -var options = [ - z - l - x - b - g - h -] - -var description = [ - &z='zst compression (default)' - &l='lz4 compression' - &x='xz compression' - &b='bz2 compression' - &g='gzip compression' - &h='display help' -] - -fn -options { - each {|o| - put [&short=$o &desc=$description[$o]] - } $options -} - -fn complete {|@argv| - edit:complete-getopt $argv [(-options)] [ $edit:complete-filename~ ...] -} - -set edit:completion:arg-completer[archiver] = $complete~ - diff --git a/lib/moi/completion/desarchiver.elv b/lib/moi/completion/desarchiver.elv deleted file mode 100644 index ce879f9..0000000 --- a/lib/moi/completion/desarchiver.elv +++ /dev/null @@ -1,12 +0,0 @@ -use moi/util/condition -use moi/util/file - -var extensions = [ tar bz2 zip gz lz4 sz xz zst rar ] - -fn complete {|@argv| - var m = $argv[-1] - var type = (condition:cset (eq $m '') prefix deep-prefix) - file:match-extensions &type=$type $m $@extensions -} - -set edit:completion:arg-completer[desarchiver] = $complete~ diff --git a/lib/moi/completion/kcp.elv b/lib/moi/completion/kcp.elv deleted file mode 100644 index 8a8da0b..0000000 --- a/lib/moi/completion/kcp.elv +++ /dev/null @@ -1,41 +0,0 @@ -fn -remotes-packages { kcp -lN } - -var options = [ - -h - -v - -i - -di - -u - -l - -lN - -lS - -lI - -lO - -lx - -lxS - -lxI - -lxO - -lf - -s - -g - -V -] - -var np = [ - -i - -di - -s - -g - -V -] - -fn complete {|@argv| - var c = (count $argv) - if (== $c 2) { - all $options - } elif (and (== $c 3) (has-value $np $argv[-2])) { - -remotes-packages - } -} - -set edit:completion:arg-completer[kcp] = $complete~ diff --git a/lib/moi/completion/mpv.elv b/lib/moi/completion/mpv.elv deleted file mode 100644 index 6952fe3..0000000 --- a/lib/moi/completion/mpv.elv +++ /dev/null @@ -1,59 +0,0 @@ -use moi/util/condition -use moi/util/file - -var extensions = [ - aac - ape - avi - divx - flac - flv - m3u - m4a - m4v - mp3 - mp4 - mpeg - mpg - mkv - mng - mov - qt - oga - ogg - ogm - ogv - opus - ra - rv - ts - vob - wav - webm - wmv - wma - wmx -] - -fn -files {|m| - var type = (condition:cset (eq $m '') prefix deep-prefix) - file:match-extensions &type=$type $m $@extensions -} - -fn complete {|@argv| - var c = (count $argv) - if (== $c 2) { - put --speed - -files $argv[-1] - } elif (== $c 3) { - if (eq $argv[-2] --speed) { - put 0.8 0.9 1.0 1.1 1.2 - } else { - -files $argv[-1] - } - } else { - -files $argv[-1] - } -} - -set edit:completion:arg-completer[mpv] = $complete~ diff --git a/lib/moi/completion/pacman.elv b/lib/moi/completion/pacman.elv deleted file mode 100644 index 7598386..0000000 --- a/lib/moi/completion/pacman.elv +++ /dev/null @@ -1,105 +0,0 @@ -use moi/util/condition -use moi/util/file -use moi/util/list - -fn -local-packages { pacman -Q | eawk {|_ p @_| put $p } } - -fn -repo-packages { - var packages = [(pacman -Ss | list:ploop &step=2 {|_ v| - put $v - } | eawk {|_ p @_| - put $p - })] - var spackages = [&] - use str - peach {|p| - str:split '/' $p - } $packages | peach {|e| - set spackages[$e] = $nil - } - keys $spackages - all $packages -} - -fn -downloaded-packages {|m| - var type = (condition:cset (eq $m '') prefix deep-prefix) - file:match-extensions &type=$type $m tar.zst tar.xz tar.gz tar.bz2 -} - -fn -local-file {|m| edit:complete-filename $m } - -var options = [ - -h - -V - -Q - -Qs - -Ql - -Qi - -Qm - -Qdt - -Qo - -R - -Rsn - -S - -Ss - -Si - -Sii - -Syu - -Syyu - -U - -D -] - -var asdeps = [ - -S - -U - -D -] - -var lpack = [ - -Q - -Qs - -Ql - -Qi - -D - -R - -Rsn -] - -var rpack = [ - -S - -Ss - -Si - -Sii -] - -var dpack = [ - -U -] - -var fpack = [ - -Qo -] - -fn complete {|@argv| - var c = (count $argv) - if (< $c 3) { - all $options - } else { - var cmd = $argv[1] - if (and (== $c 3) (has-value $asdeps $cmd)) { - put --asdeps --asexplicit - } - if (has-value $lpack $cmd) { - -local-packages - } elif (has-value $rpack $cmd) { - -repo-packages - } elif (has-value $dpack $cmd) { - -downloaded-packages $argv[-1] - } elif (has-value $fpack $cmd) { - -local-file $argv[-1] - } - } -} - -set edit:completion:arg-completer[pacman] = $complete~ diff --git a/lib/moi/completion/ssh.elv b/lib/moi/completion/ssh.elv deleted file mode 100644 index 2d282b9..0000000 --- a/lib/moi/completion/ssh.elv +++ /dev/null @@ -1,102 +0,0 @@ -use re -use str -use moi/util/condition -use moi/util/file -use moi/util/ip -use moi/util/list -use moi/util/map -use moi/util/option - -var options-ssh = [ 1 2 4 6 A D f g I i L l m o v a b C c e F k N n p q R s T t X x ] -var options-scp = [ 3 4 6 B C p q r v c F i l o P S ] - -var names = [ - benjamin - luence -] - -fn -kh { - cat ~/.ssh/known_hosts | peach {|l| - put [(str:split ' ' $l)] - } | peach {|e| - var domains @_ = $@e - str:split ',' $domains - } -} - -fn -port {|cmd @argv| - var o = (condition:cset (eq $cmd 'ssh') '-p' '-P') - var margs = (option:map $argv) - var p = (map:value-of $margs $o &default=[]) - if (list:empty $p) { - put 22 - } else { - put $p[-1] - } -} - -fn -complete-names {|| each {|n| put $n'@' } $names } - -fn -complete-domains {|name hosts| - each {|h| - put $name@$h - } $hosts -} - -fn -complete-remote-dir {|port address dir| - var cmd = (printf ^ - 'for f in %s*; do if [[ -d $f ]]; then echo $f/; else echo $f; fi; done' ^ - $dir) - try { - ssh -p $port $address $cmd | each {|f| - put $address':'$f - } - } except e { - } -} - -fn -complete-args {|hosts cmd @argv| - var arg = $argv[-1] - var i = (str:index $arg @) - if (< $i 0) { - -complete-names - all $hosts - if (eq $cmd scp) { - edit:complete-filename $cmd $@argv - } - return - } - var n h = $arg[..$i] $arg[(+ $i 1)..] - if (eq $cmd scp) { - set i = (str:index $h :) - if (>= $i 0) { - var d = $h[(+ $i 1)..] - set h = $h[..$i] - if (list:includes $h $hosts) { - var p = (-port $cmd @argv) - -complete-remote-dir $p $n@$h $d - } - return - } - } - - -complete-domains $n $hosts -} - -fn complete {|@argv| - var @hosts = (-kh) - var cmd = $argv[0] - var is-ssh = (eq $cmd ssh) - var po = (condition:cset $is-ssh -p -P) - if (<= (count $argv) 2) { - all (condition:cset $is-ssh $options-ssh $options-scp) - -complete-args $hosts $@argv - } elif (eq $argv[-2] $po) { - put 22 - } else { - -complete-args $hosts $@argv - } -} - -set edit:completion:arg-completer[scp] = $complete~ -set edit:completion:arg-completer[ssh] = $complete~ diff --git a/lib/moi/completion/sudo.elv b/lib/moi/completion/sudo.elv deleted file mode 100644 index 3d95d63..0000000 --- a/lib/moi/completion/sudo.elv +++ /dev/null @@ -1,10 +0,0 @@ -fn complete {|@argv| - if (and (> (count $argv) 2) (has-key $edit:completion:arg-completer $argv[1])) { - $edit:completion:arg-completer[$argv[1]] (all $argv[1:]) - } else { - edit:complete-sudo $@argv - } -} - -set edit:completion:arg-completer[sudo] = $edit:complete-sudo~ -#edit:completion:arg-completer[sudo] = $-complete~ diff --git a/lib/moi/completion/use.elv b/lib/moi/completion/use.elv deleted file mode 100644 index 5662cfb..0000000 --- a/lib/moi/completion/use.elv +++ /dev/null @@ -1,24 +0,0 @@ -var libdir = $E:HOME/.config/elvish/lib -var builtin_modules = [ - builtin - epm - file - math - path - re - readline-binding - store - str - unix -] - -set edit:completion:arg-completer[use] = {|@argv| - use str - use path - all $builtin_modules - put $libdir/**.elv | each {|f| - if (path:is-regular $f) { - str:trim-prefix $f $libdir/ - } - } | each {|f| str:trim-suffix $f .elv } -} diff --git a/lib/moi/util/common.elv b/lib/moi/util/common.elv deleted file mode 100644 index ff85236..0000000 --- a/lib/moi/util/common.elv +++ /dev/null @@ -1,42 +0,0 @@ -edit:add-var ++~ {|n| + $n 1 } -edit:add-var --~ {|n| + $n 1 } - -edit:add-var sign~ {|n| - if (> $n 0) { - put 1 - } elif (< $n 0) { - put -1 - } else { - put 0 - } -} -edit:add-var neg~ {|n| * $n -1 } -edit:add-var abs~ {|n| - if (< $n 0) { - neg $n - } else { - put $n - } -} - -edit:add-var sum~ {|@numbers| - var s = 0 - each {|e| set s = (+ $s e) } (to-list $numbers) -} - -fn -minmax {|t @numbers| - var l = (to-list $@numbers) - if (== (count $l) 0) { - return - } - var m = $l[0] - each {|n| - if ($t $n $m) { - set m = $n - } - } $l[1..] - put $m -} - -edit:add-var min~ {|@numbers| -minmax $'<~' $@numbers } -edit:add-var max~ {|@numbers| -minmax $'>~' $@numbers } diff --git a/lib/moi/util/condition.elv b/lib/moi/util/condition.elv deleted file mode 100644 index 93f5e5f..0000000 --- a/lib/moi/util/condition.elv +++ /dev/null @@ -1,20 +0,0 @@ -fn cset {|c t f| - if $c { - put $t - } else { - put $f - } -} - -fn mset {|c t f| - all (cset $c $t $f) -} - -fn call {|c t f @argv| - var v = (cset $c $t $f) - if (is (kind-of $v) fn) { - $v $@argv - } else { - put $v - } -} diff --git a/lib/moi/util/file.elv b/lib/moi/util/file.elv deleted file mode 100644 index 4497d3b..0000000 --- a/lib/moi/util/file.elv +++ /dev/null @@ -1,58 +0,0 @@ -use str -use ./list -use ./map - -var search-type = [ - &exact= {|m| ls $m 2>/dev/null } - &match= {|m| put *$m* } - &prefix= {|m| put $m* } - &suffix= {|m| put *$m } - &deep-match= {|m| put **$m** } - &deep-prefix= {|m| put $m** } - &deep-suffix= {|m| put **$m } -] - -fn -less {|f1 f2| - var fl1 fl2 = (str:to-lower $f1) (str:to-lower $f2) - var c = (str:compare $fl1 $fl2) - if (== $c 0) { - set c = (str:compare $f1 $f2) - } - put (< $c 0) -} - -fn -get-results {|sort result| - if $sort { - keys $result | order $-less~ - } else { - keys $result - } -} - -fn -search {|&sort=$false &type=exact @motive| - var f result = $search-type[$type] [&] - if (list:empty $motive) { - set result = (put * | map:to-set) - } else { - peach {|m| - try { - $f $m | peach {|e| - set result[$e] = $nil - } - } except e { } - } $motive - } - -get-results $sort $result -} - -fn match-files {|&sort=$false &type=prefix @motive| -search &sort=$sort &type=$type $@motive } - -fn match-extensions {|&sort=$false &type=deep-prefix motive @extensions| - var result = [&] - -search &type=$type $motive | peach {|f| - if (list:contains {|e| str:has-suffix $f .$e } $extensions) { - set result[$f] = $nil - } - } - -get-results $sort $result -} diff --git a/lib/moi/util/format.elv b/lib/moi/util/format.elv deleted file mode 100644 index 542494a..0000000 --- a/lib/moi/util/format.elv +++ /dev/null @@ -1,203 +0,0 @@ -use math -use re -use str - -fn chars {|v| - str:split '' $v -} - -fn len {|v| - chars $v | count -} - -fn string {|v| - var k = (kind-of $v) - if (eq $k 'string') { - put $v - } elif (eq $k 'number') { - to-string $v - } elif (eq $k 'bool') { - if $v { - put 'X' - } else { - put '' - } - } elif (eq $k 'list') { - each $string~ $v | str:join '' - } elif (eq $v $nil) { - put '' - } else { - to-string $v - } -} - -fn int {|v| - var k = (kind-of $v) - if (eq $k 'string') { - try { - var n = (math:trunc $v) - var s @_ = (str:split '.' (to-string $n)) - put $s - } except e { - fail (printf '%s n’est pas un nombre' $v) - } - } elif (eq $k 'number') { - int (to-string $v) - } elif (eq $k 'bool') { - if $v { - put 1 - } else { - put 0 - } - } elif (eq $v $nil) { - put 0 - } else { - put 0 - } -} - -fn repeat {|n s| - use builtin - builtin:repeat $n $s | str:join '' -} - -fn blank {|n| - repeat $n ' ' -} - -fn left {|str size| - var l = (len $str) - if (< $l $size) { - string [ $str (blank (- $size $l)) ] - } elif (== $l $size) { - put $str - } else { - string [ (chars $str) ][..$size] - } -} - -fn right {|str size| - var l = (len $str) - if (< $l $size) { - string [ (blank (- $size $l)) $str ] - } elif (== $l $size) { - put $str - } else { - string [ (chars $str) ][(- $l $size)..] - } -} - -fn center {|str size| - var l = (len $str) - if (< $l $size) { - var d = (- $size $l) - var b = (math:trunc (/ $d 2)) - var e = (- $d $b) - string [ (blank $b) $str (blank $e) ] - } elif (== $l $size) { - put $str - } else { - var d = (- $l $size) - var b = (math:trunc (/ $d 2)) - var e = (+ $b $size) - string [ (chars $str) ][$b..$e] - } -} - -var -align = [ - ¢er=$center~ - &right=$right~ - &left=$left~ -] - -fn column {|&align=left name @label| - var c = [ - &name=$name - &align=$-align[$align] - &size=0 - &label='' - ] - if (> (count $label) 0) { - set c[label] = $label[0] - set c[size] = (count $label[0]) - } - put $c -} - -fn update-props {|props data| - each {|d| - set @props = (each {|c| - var n = $c[name] - if (has-key $d $n) { - var v = (string $d[$n]) - var l = (count $v) - if (< $c[size] $l) { - set c[size] = $l - } - } - put $c - } $props) - } $data - put $props -} - -fn line-header {|&sep=' ' props| - var @data = (each {|c| - $c[align] $c[label] $c[size] - } $props) - str:join $sep $data -} - -fn line {|&sep=' ' props line| - var @data = (each {|c| - var n v = $c[name] '' - if (has-key $line $n) { - set v = (string $line[$n]) - } - $c[align] $v $c[size] - } $props) - str:join $sep $data -} - -fn list {|&with-header=$true &csep=' ' &hsep='-' &recompute=$true props data| - if $recompute { - set props = (update-props $props $data) - } - if $with-header { - echo (line-header &sep=$csep $props) - if (bool $hsep) { - var s = (* (- (count $props) 1) (count $csep)) - each {|c| - set s = (+ $s $c[size]) - } $props - echo (repeat (math:trunc (/ $s (count $hsep))) $hsep) - } - } - each {|d| - echo (line &sep=$csep $props $d) - } $data -} - -fn size {|size| - var u = 0 - var m = [ - &10=Kio - &20=Mio - &30=Gio - ] - while (< $u 30) { - var p = (math:pow 2 (+ $u 10)) - if (< $size $p) { - break - } - set u = (to-string (+ $u 10)) - } - if (== $u 0) { - put $size - } else { - var p = (math:pow 2 $u) - var e = (/ $size $p) - printf '%.1f%s' $e $m[$u] - } - -} diff --git a/lib/moi/util/ip.elv b/lib/moi/util/ip.elv deleted file mode 100644 index a1157a1..0000000 --- a/lib/moi/util/ip.elv +++ /dev/null @@ -1,153 +0,0 @@ -use re -use str - -fn is-ipv4 {|arg| - if (not (re:match '^([0-9]{1,3}\.){3}[0-9]{1,3}$' $arg)) { - put $false - } else { - use ./list - not (str:split '.' $arg | list:contains {|p| > $p 255 }) - } -} - -fn is-ipv6 {|arg| - var p = '[0-9a-fA-F]{1,4}' - var g1 g2 = '('$p':)' '(:'$p')' - var cases = [ - $g1'{7,7}'$p - $g1'{1,7}:' - $g1'{1,6}:'$p - $g1'{1,5}'$g2'{1,2}' - $g1'{1,4}'$g2'{1,3}' - $g1'{1,3}'$g2'{1,4}' - $g1'{1,2}'$g2'{1,5}' - $p':'$g2'{1,6}' - ':'$g2'{1,7}' - '::' - ] - var r = '^('(str:join '|' $cases)')$' - put (re:match $r $arg) -} - -fn is-ip {|arg| or (is-ipv4 $arg) (is-ipv6 $arg) } - -fn -long-part6 {|p| - use str - set p = (str:to-lower $p) - var c = (- 4 (count $p)) - put (repeat $c '0' | str:join '')$p -} - -fn -middle-part6 {|p| - while (and (> (count $p) 1) (eq $p[0] 0)) { - set p = $p[1..] - } - put $p -} - -fn -find-max0 {|parts| - use ./list - var idx s = -1 1 - var ci cs f = -1 0 $false - list:loop {|i p| - if (eq $p 0) { - condition:call $f { set cs = (+ $cs 1) } { set ci cs f = $i 1 $true } - } elif $f { - set f = $false - if (> $cs $s) { - set idx s = $ci $cs - } - } - } $parts - if (and $f (> $cs $s)) { - set idx s = $ci $cs - } - put $idx $s -} - -fn long6 {|ip| - if (not (is-ipv6 $ip)) { - fail 'Not an IPv6' - } - if (eq $ip '::') { - repeat 8 '0000' | str:join ':' - return - } - var c = (- 7 (str:count $ip ':')) - if (> $c 0) { - var i = (str:index $ip '::') - var z = (repeat $c ':' | str:join '') - set ip = (str:join '' [$ip[..$i] $z $ip[{$i}..]]) - } - str:split ':' $ip | each $-long-part6~ | str:join ':' -} - -fn middle6 {|ip| - str:split ':' (long6 $ip) | each $-middle-part6~ | str:join ':' -} - -fn short6 {|ip| - var parts = [(str:split ':' (middle6 $ip))] - var i s = (-find-max0 $parts) - if (>= $i 0) { - var left right = $parts[..$i] $parts[(+ $i $s)..] - if (== (count $left) 0) { - set left = [''] - } - if (== (count $right) 0) { - set right = [''] - } - set parts = [$@left '' $@right] - } - str:join ':' $parts -} - -fn is-ip {|arg| or (is-ipv4 $arg) (is-ipv6 $arg) } - -fn -cmp {|e1 e2| - use ./list - use ./condition - var c = 0 - list:loop {|i p1| - var p2 = $e2[$i] - set c = (condition:cset (< $p1 $p2) -1 (condition:cset (> $p1 $p2) 1 0)) - if (!= $c 0) { - break - } - } $e1 - put $c -} - -fn cmp4 {|ip1 ip2| - if (or (not (is-ipv4 $ip1)) (not (is-ipv4 $ip2))) { - fail 'Not an IPv4 '$ip1' → '$ip2 - } - -cmp [(str:split . $ip1)] [(str:split . $ip2)] -} - -fn cmp6 {|ip1 ip2| - if (or (not (is-ipv6 $ip1)) (not (is-ipv6 $ip2))) { - fail 'Not an IPv6: '$ip1' → '$ip2 - } - -cmp [(str:split : (middle6 $ip1))] [(str:split : (middle6 $ip2))] -} - -fn cmp {|ip1 ip2| - if (is-ipv4 $ip1) { - if (is-ipv4 $ip2) { - cmp4 $ip1 $ip2 - } else { - put -1 - } - } elif (is-ipv6 $ip1) { - if (is-ipv4 $ip2) { - put 1 - } elif (is-ipv6 $ip2) { - cmp6 $ip1 $ip2 - } else { - put -1 - } - } else { - fail 'Not an IP: '$ip1' → '$ip2 - } -} diff --git a/lib/moi/util/list.elv b/lib/moi/util/list.elv deleted file mode 100644 index 0774ef5..0000000 --- a/lib/moi/util/list.elv +++ /dev/null @@ -1,296 +0,0 @@ -use builtin -use str - -fn -p {|@argv| - var c = (count $argv) - if (== $c 0) { - put [ (all) ] - } elif (== $c 1) { - put $argv[0] - } else { - fail '0 or 1 argument needed given '$c' arguments: ['(each {|e| put '"'$e'"' } $argv | str:join ', ')']' - } -} - -fn -r {|step begin end| - if (> $step 0) { - builtin:range &step=$step $begin (+ $end 1) - } else { - var d = (+ $begin $end) - builtin:range &step=(* $step -1) $end (+ $begin 1) | each {|e| - $d $e } - } -} - -fn to-list {|@argv| - try { - -p $@argv - } except e { - put $argv - } -} - -fn range {|&step=1 b @r| - if (== $step 0) { - fail 'bad value: step must be positive, but is 0' - } - var c = (count $r) - if (> $c 1) { - fail 'usage: list:range &step=1 begin? end' - } - var e = 0 - if (== $c 0) { - if (> $step 0) { - set b e = $e $b - } - } else { - set e = $r[0] - } - -r $step $b $e -} - -fn indexes {|&from=$false &step=1 @argv| - if (== $step 0) { - fail 'bad value: step must be positive, but is 0' - } - var l = (-p $@argv) - var c = (count $l) - if (not $from) { - range &step=$step (- $c 1) - } else { - if (< $from 0) { - set from = (+ $c $from) - } - if (> $step 0) { - if (< $from 0) { - set from = 0 - } - range &step=$step $from (- $c 1) - } else { - if (>= $from $c) { - set from = (- $c 1) - } - range &step=$step $from 0 - } - } -} - -fn -for {|&from=$false &step=1 @argv| - var l = (-p $@argv) - indexes &from=$from &step=$step $l | each {|i| put [ $i $l[$i] ] } -} - -fn loop {|&from=$false &step=1 &end=$false cb @argv| - if (not $end) { - -for &from=$from &step=$step $@argv | each {|e| $cb $@e } - } else { - -for &from=$from &step=$step $@argv | each {|e| - var i v = $@e - if ($end $i $v) { - break - } - $cb $i $v - } - } -} -fn ploop {|&from=$false &step=1 cb @argv| - -for &from=$from &step=$step $@argv | peach {|e| $cb $@e } -} -fn reverse {|@argv| loop &step=-1 {|_ e| put $e } $@argv } -fn reach {|cb @argv| reverse $@argv | each {|e| cb $e } } - -fn empty {|@argv| == (count (-p $@argv)) 0 } -fn not-empty {|@argv| not (empty $@argv) } - -fn filter {|cb @argv| - each {|v| - if ($cb $v) { - put $v - } - } (-p $@argv) -} -fn filter-not {|cb @argv| filter {|v| not ($cb $v) } $@argv } -fn first {|&from=$false &reverse=$false cb @argv| - var f = {|v| - if ($cb $v) { - put $v - break - } - } - var l = (-p $@argv) - if (not $from) { - if $reverse { - reach $f $l - } else { - each $f $l - } - } else { - var c = (count $l) - if (< $from 0) { - set from = (+ $c $from) - } - if $reverse { - var e = (+ $from 1) - if (> $e $c) { - set e = $c - } elif (< $e 0) { - set e = 0 - } - reach $f $l[..$e] - } else { - var b = $from - if (> $b $c) { - set b = $c - } elif (< $b 0) { - set b = 0 - } - each $f $l[$b..] - } - } -} - -fn filter-index {|cb @argv| - loop {|i v| - if ($cb $v) { - put $i - } - } $@argv -} -fn filter-index-not {|cb @argv| filter-index {|v| not ($cb $v) } $@argv } -fn first-index {|&from=$false &reverse=$false cb @argv| - var idx = -1 - var step = 1 - if $reverse { - set step = -1 - } - loop &from=$from &step=$step {|i v| - if ($cb $v) { - set idx = $i - break - } - } $@argv - put $idx -} - -fn search {|cb @argv| - loop {|i v| - if ($cb $i $v) { - put $v - } - } $@argv -} -fn search-not {|cb @argv| search {|i v| not ($cb $i $v) } $@argv } -fn search-first {|&from=$false &reverse=$false cb @argv| - var step = 1 - if $reverse { - set step = -1 - } - loop &from=$from &step=$step {|i v| - if ($cb $i $v) { - put $v - break - } - } $@argv -} - -fn search-index {|cb @argv| - loop {|i v| - if ($cb $i $v) { - put $i - } - } $@argv -} -fn search-index-not {|cb @argv| search-index {|i v| not ($cb $i $v) } $@argv } -fn search-first-index {|&from=$false &reverse=$false cb @argv| - var idx = -1 - var step = 1 - if $reverse { - set step = -1 - } - loop &from=$from &step=$step {|i v| - if ($cb $i $v) { - set idx = $i - break - } - } $@argv - put $idx -} - -fn contains {|cb @argv| - var e = $false - each {|v| - if ($cb $v) { - set e = $true - break - } - } (-p $@argv) - put $e -} -fn contains-not {|cb @argv| contains {|v| not ($cb $v) } $@argv } - -fn exists {|cb @argv| - var e = $false - loop {|i v| - if ($cb $i $v) { - set e = $true - break - } - } $@argv - put $e -} -fn exists-not {|cb @argv| exists {|i v| $cb $i $v } $@argv } - -fn includes {|v @argv| contains {|e| is $v $e } $@argv } -fn includes-not {|v @argv| contains-not {|e| is $v $e } $@argv } - -fn reduce {|v cb @argv| - each {|e| set v = ($cb $v $e) } (to-list $@argv) - put $v -} - -fn remove-duplicate {|@argv| - var done = [&] - each {|v| - put [&v=$v &e=(has-key $done $v)] - set done[$v] = $nil - } (-p $@argv) | each {|v| - assoc $v k (not $v[e]) - } | each {|v| - if $v[k] { - put $v[v] - } - } -} -fn premove-duplicate {|@argv| - var done = [&] - peach {|v| - set done[$v] = $nil - } (-p $@argv) - keys $done -} - -fn swap {|i j @argv| - var l = (-p $@argv) - var c = (count $l) - set i j = (-i $i $c) (-i $j $c) - if (or (== $i $c) (== $j $c)) { - fail 'Index out of range' - } - if (== $i $j) { - all $l - } else { - if (> $i $j) { - set i j = $j $i - } - take $i $l - put $l[j] - all $l[(+ $i 1)..$j] - put $l[$i] - drop (+ $j 1) $l - } -} - -fn less {|cb| - var l = {|a b| < ($cb $a $b) 0 } - put $l -} -fn sort {|cb @argv| order &less-than=(less $cb) (-p $@argv) } diff --git a/lib/moi/util/map.elv b/lib/moi/util/map.elv deleted file mode 100644 index 4d3497f..0000000 --- a/lib/moi/util/map.elv +++ /dev/null @@ -1,94 +0,0 @@ -fn empty {|container| == (count $container) 0 } - -fn values {|container| keys $container | each {|v| put $container[$v] } } -fn pvalues {|container| keys $container | peach {|v| put $container[$v] } } - -fn value-of {|container k &default=$nil| - if (has-key $container $k) { - put $container[$k] - } else { - put $default - } -} - -fn unzip {|container| - var lkeys lvalues = [] [] - keys $container | each {|k| - set lkeys = [(all $lkeys) $k] - set lvalues = [(all $lvalues) $container[$k]] - } - put $lkeys $lvalues -} - -fn zip {|lkeys lvalues| - var ck cv = (count $lkeys) (count $lvalues) - var c = $ck - if (> $ck $cv) { - set c = $cv - } - var result = [&] - range $c | peach {|i| - put [&k=$lkeys[$i] &i=$i] - } | peach {|e| - assoc $e v $lvalues[$e[i]] - } | each {|e| - set result[$e[k]] = $e[v] - } - put $result -} - -fn to-map {|@argv| - use ./list - var container = (list:to-list $@argv) - zip [(range (count $container))] $container -} - -fn to-set {|@argv| - use ./list - var m = [&] - each {|k| set m[$k] = $nil } (list:to-list $@argv) - put $m -} - -fn mdissoc {|container @argv| - each {|k| - set container = (dissoc $container $k) - } $argv - put $container -} - -fn massoc {|&replace=$true container @argv| - each {|e| - var k v = $@e - if (or $replace (not (has-key $container $k))) { - set container[$k] = $v - } - } $argv - put $container -} - -fn add {|container key @values| - use ./list - var values = (list:to-list $values) - if (has-key $container $key) { - set container[$key] = [(all $container[$key]) $@values] - } else { - set container[$key] = $values - } - put $container -} - -fn join {|container container2| - keys $container2 | each {|k| - set container[$k] = $container2[$k] - } - put $container -} - -fn sorted-keys {|&reverse=$false &less-than=$nil container| - keys $container | order &reverse=$reverse &less-than=$less-than -} - -fn sorted-values {|&reverse=$false &less-than=$nil container| - values $container | order &reverse=$reverse &less-than=$less-than -} diff --git a/lib/moi/util/option.elv b/lib/moi/util/option.elv deleted file mode 100644 index 1134f10..0000000 --- a/lib/moi/util/option.elv +++ /dev/null @@ -1,74 +0,0 @@ -use re -use str -use ./list - -fn is-moptions {|o| re:match '^\-\w{2,}$' $o } -fn is-soption {|o| re:match '^\-\w$' $o } -fn is-loption {|o| re:match '^\-\-\w+(=.*)?$' $o } -fn is-option {|o| or (is-soption $o) (is-loption $o) (is-moptions $o) } - -fn -splitm {|o| each {|e| put -$e } $o[1:] } - -fn -splitl {|o| - if (str:contains $o '=') { - var opt @value = (str:split '=' $o) - put $opt - str:join '=' $value - } else { - put $o - } -} - -fn split {|o| - if (is-moptions $o) { - -splitm $o - } elif (is-loption $o) { - -splitl $o - } else { - put $o - } -} - -fn -joins {|opt| - var o = (each {|o| put $o[1:] } $opt | str:join '') - if (not-eq $o '') { put -$o } -} - -fn join {|@opt| - var opt = (list:-p $@opt) - var cb = {|o| or (is-soption $o) (is-moptions $o) } - var idx = [(list:filter-index-not $cb $opt)] - var i0 = 0 - each {|i| - -joins $opt[{$i0}:$i] - put $opt[$i] - set i0 = (+ $i 1) - } $idx - -joins $opt[{$i0}:] -} - -fn expand {|@argv| each $split~ (list:-p $@argv) } - -fn map {|@argv| - use ./map - set argv = [(expand $@argv)] - var result i c = [&] 0 (count $argv) - while (< $i $c) { - var o = $argv[$i] - if (is-option $o) { - var k v = $o [] - if (< $i (- $c 1)) { - var e = $argv[(+ $i 1)] - if (not (is-option $e)) { - set v = [$@v $e] - set i = (+ $i 1) - } - } - set result = (map:add $result $k $@v) - } else { - set result = (map:add $result '' [$o]) - } - set i = (+ $i 1) - } - put $result -} diff --git a/lib/moi/util/pdf.elv b/lib/moi/util/pdf.elv deleted file mode 100644 index bbd1957..0000000 --- a/lib/moi/util/pdf.elv +++ /dev/null @@ -1,459 +0,0 @@ -use path -use re -use str - -fn is-pdf {|file| - eq (path:ext $file) '.pdf' -} - -fn exist {|file| - or (path:is-dir &follow-symlink=$true $file) (path:is-regular &follow-symlink=$true $file) -} - -fn not-exist {|file| - not (exist $file) -} - -fn is-pdf-exist {|file| - and (is-pdf $file) (exist $file) -} - -fn is-number {|v| - re:match '^\d+$' (to-string $v) -} - -fn is-page-selection {|v| - re:match '^(r?\d+|z)(-(r?\d+|z))?(,(r?\d+|z)(-(r?\d+|z))?)*(:(even|odd))?$' (to-string $v) -} - -fn is-rotate-selection {|v| - re:match '^(\+|-)?\d+(:(r?\d+|z)(-(r?\d+|z))?(,(r?\d+|z)(-(r?\d+|z))?)*(:(even|odd))?)?$' (to-string $v) -} - -fn is-object {|v| - re:match '^ \d+\ 0\ R$' $v -} - -fn is-selection {|v| - or (is-page-selection $v) (is-rotate-selection $v) -} - -fn version {|in| - var version = (head -n 1 $in) - set version @_ = (str:split "\r" $version) - str:trim-prefix $version '%PDF-' -} - -fn json {|in| - qpdf $in --json | from-json -} - -fn form {|in| - var json = (json $in) - put $json[acroform] -} - -fn encryption {|in| - var json = (json $in) - put $json[encrypt] -} - -fn objects {|in| - var json = (json $in) - put $json[objects] -} - -fn -format {|dict o| - var t = (kind-of $o) - if (eq $t string) { - if (has-key $dict $o) { - set o = $dict[$o] - } - } elif (eq $t list) { - set @o = (all $o | each {|e| - if (has-key $dict $e) { - put $dict[$e] - } else { - put $e - } - }) - } elif (eq $t map) { - keys $o | each {|k| - set o[$k] = (-format $dict $o[$k]) - } - } - put $o -} - - -fn -deep {|&dict=$nil objects @keys| - if (== (count $keys) 0) { - if (not-eq $dict $nil) { - put (-format $dict $objects) $true - } else { - put $objects $true - } - return - } - if (not-eq $dict $nil) { - set objects = (-format $dict $objects) - } - var id @next = $@keys - var t = (kind-of $objects) - if (eq $t map) { - if (has-key $objects $id) { - -deep &dict=$dict $objects[$id] $@next - } - } elif (eq $t list) { - if (and (is-number $id) (< $id (count $objects))) { - -deep &dict=$dict $objects[$id] $@next - } - } else { - put $nil $false - } -} - -fn -object {|&extend=$false objects id| - var dict = $nil - if $extend { - set dict = $objects - } - var o _ = (-deep &dict=$dict $objects $id) - put $o -} - -fn deep {|&extend=$false in @keys| - var dict = (objects $in) - if $extend { - -deep &dict=$dict $dict $@keys - } else { - -deep $dict $@keys - } -} - -fn contains {|in @keys| - var _ ok = (deep $in $@keys) - put $ok -} - -fn value {|&extend=$false in @keys| - var v _ = (deep &extend=$extend $in $@keys) - put $v -} - -fn object {|&extend=$false in key| - -object &extend=$extend (objects $in) $key -} - -fn -filter {|&extend=$false objects cond| - var out = [&] - keys $objects | each {|k| - var o = (-object &extend=$extend $objects $k) - if ($cond $o) { - set out[$k] = $o - } - } - put $out -} - -fn filter {|&extend=$false in cond| - -filter &extend=$extend (objects $in) $cond -} - -fn font-filter {|o| - and ^ - (eq (kind-of $o) map) ^ - (has-key $o /Type) ^ - (eq $o[/Type] /Font) -} - -fn fonts {|in| - var dict = (objects $in) - var fonts = (-filter $dict $font-filter~) - keys $fonts | each {|id| - var f = $fonts[$id] - keys $f | each {|k| - var v = $f[$k] - if (has-key $dict $v) { - set f[$k] = $dict[$v] - } - } - var fd = $f[/FontDescriptor] - keys $fd | each {|k| - var v = $fd[$k] - if (and (not-eq $k /FontFile2) (has-key $dict $v)) { - set fd[$k] = $dict[$v] - } - } - set f[/FontDescriptor] = $fd - set f[id] = $id - put $f - } -} - -fn image-filter {|o| - and ^ - (eq (kind-of $o) map) ^ - (has-key $o /Subtype) ^ - (eq $o[/Subtype] /Image) -} - -fn images {|in| - var json = (json $in) - var dict = $json[objects] - all $json[pages] | each {|p| - var n = $p[pageposfrom1] - all $p[images] | each {|i| - var id = $i[object] - var img = (-object $dict $id) - keys $img | each {|k| - var v = $img[$k] - if (has-key $dict $v) { - set img[$k] = $dict[$v] - } - } - if (has-key $img /ColorSpace) { - var @cs = (all $img[/ColorSpace] | each {|v| - if (has-key $dict $v) { - put $dict[$v] - } else { - put $v - } - }) - set img[/ColorSpace] = $cs - } - if (has-key $img /DecodeParms) { - var dp = $img[/DecodeParms] - keys $dp | each {|k| - var v = $dp[$k] - if (has-key $dict $v) { - set dp[$k] = $dict[$v] - } - } - set img[/DecodeParms] = $dp - } - set img[id] = $id - set img[page] = $n - set img[name] = $i[name] - put $img - } - } -} - -fn trailer {|&extend=$false in| - object &extend=$extend $in 'trailer' -} - -fn pages {|in| - var json = (json $in) - put $json[pages] -} - -fn page {|in nb| - put (pages $in)[(- $nb 1)] -} - -fn nb-pages {|in| - qpdf --show-npages $in -} - -fn attachments {|in| - var data = [] - var json = (json $in) - var attachments = $json[attachments] - if (> (count $attachments) 0) { - set @data = (qpdf --list-attachments $in | eawk {|_ f @_| - put $f - }) - } - put $data -} - -fn parse-selection {|@selection| - var out = [] - var in = $nil - each {|e| - if (is-pdf $e) { - if (not-exist $e) { - fail (printf '%s: le fichier n’existe pas' $e) - } - if (not-eq $in $nil) { - set @out = $@out $in - } - set in = [ - &file=$e - &rotate=$nil - &selections=[] - ] - continue - } - if (eq $in $nil) { - fail (printf '%s: pas de fichier avant la sélection' $e) - } - var r rc = $in[rotate] $nil - if (is-page-selection $e) { - set rc = $false - } elif (is-rotate-selection $e) { - set rc = $true - } else { - fail (printf '%s: paramètre invalide' $e) - } - if (not-eq $r $rc) { - if (not-eq $r $nil) { - set @out = $@out $in - set in[selections] = [] - } - set in[rotate] = $rc - } - set in[selections] = [ (all $in[selections]) $e ] - } $selection - if (not-eq $in $nil) { - set @out = $@out $in - } - put $out -} - -fn -t { - mktemp -q /tmp/qpdf_XXXXXXXXXX.pdf -} - -fn rotate {|&empty=$false &out=$nil &keep=$false in @rotate| - var @args = $in - if (eq $out $nil) { - set @args = $@args --replace-input - } else { - set @args = $@args $out - } - if $empty { - set @args = $@args --empty - } - if $keep { - set @rotate = (each {|r| put --rotate=$r } $rotate) - qpdf $@args $@rotate - return - } - var tmp = [] - try { - var @tmp = (each {|r| - var t r @s = (-t) (str:split ':' $r) - set s = (str:join ':' $s) - if (eq $s '') { - qpdf $in $t --rotate=$r - } else { - qpdf $in $t --pages $in $s -- - qpdf $t --replace-input --rotate=$r - } - put $t - } $rotate) - qpdf $@args --pages $@tmp -- - } finally { - rm -f $@tmp - } -} - -fn -catarg {|selection| - var f r s = $selection[file] $selection[rotate] $selection[selections] - var out tmp = [] [] - if $r { - var t = (-t) - set @tmp = $t - set @out = $@out $t - rotate &out=$t $f $@s - } else { - set @out = $@out $f - if (> (count $s) 0) { - set @out = $@out (str:join ',' $s) - } - } - put $out $tmp -} - -fn cat {|&empty=$false &collate=$nil &out=$nil @selection| - var inputs = (parse-selection $@selection) - var pages tmp = [] [] - each {|in| - var a t = (-catarg $in) - set @pages = $@pages $@a - set @tmp = $@tmp $@t - } $inputs - try { - var in = $pages[0] - var @args = $in - if (eq $out $nil) { - set @args = $@args --replace-input - } else { - set @args = $@args $out - } - if $empty { - set @args = $@args --empty - } - if (bool $collate) { - var c = --collate - if (is-number $collate) { - set c = (str:join '=' [ $c $collate ]) - } - set @args = $@args $c - } - qpdf $@args --pages $@pages -- - } finally { - each {|t| - rm -f $t - } $tmp - } -} - -fn decrypt {|&out=$nil in @passwd| - var @args = $in - if (eq $out $nil) { - set @args = $@args --replace-input - } else { - set @args = $@args $out - } - set @args = $@args --decrypt - if (> (count $passwd) 0) { - set @args = $@args $passwd[0] - } - qpdf $@args -} - -fn -l0 {|n size| - set n = (to-string $n) - var l = (- $size (count $n)) - str:join '' [ (repeat $l 0) $n ] -} - -fn split {|&empty=$false &size=1 in out| - if (not-exist $out) { - mkdir $out - } - var args = [] - if $empty { - set @args = --empty - } - qpdf $@args --split-pages=$size $in $out'/%d.pdf' -} - -fn uncat {|&empty=$false in out @selection| - if (not-exist $out) { - mkdir $out - } - var i = 1 - var n = (count $selection) - set n = (count (to-string $n)) - each {|s| - cat &empty=$empty &out=$out'/'(-l0 $i $n)'.pdf' $in $s - set i = (+ $i 1) - } $selection -} - -fn raw-stream {|in out id| - qpdf $in --show-object=$id --raw-stream-data > $out -} - -fn filtered-stream {|in out id| - qpdf $in --show-object=$id --filtered-stream-data --normalize-content=n --stream-data=uncompress --decode-level=all > $out -} - -fn attachment {|in out id| - qpdf $in --show-attachment=$id > $out -} diff --git a/lib/moi/util/strutil.elv b/lib/moi/util/strutil.elv deleted file mode 100644 index 304e4a2..0000000 --- a/lib/moi/util/strutil.elv +++ /dev/null @@ -1,114 +0,0 @@ -use str -use ./list - -fn -repeat {|n s| - repeat $n $s | str:join '' -} - -fn left {|size s| - var ss = (count $s) - var d = (- $size $ss) - if (<= $d 0) { - put $s[:$size] - } else { - put $s(-repeat $d ' ') - } -} - -fn right {|size s| - var ss = (count $s) - var d = (- $size $ss) - if (<= $d 0) { - put $s[:$size] - } else { - put (-repeat $d ' ')$s - } -} - -fn center {|size s| - use math - var ss = (count $s) - var d = (- $size $ss) - if (<= $d 0) { - var l = (math:ceil (/ -$d 2)) - var r = (- (+ $ss $d) $l) - put $s[$l':'$r] - } else { - var l = (math:ceil (/ $d 2)) - var r = (- $d $l) - put (-repeat $l ' ')$s(-repeat $r ' ') - } -} - -fn -c2map {|col| - if (not-eq (kind-of $col) list) { - put [] - return - } - list:loop {|i c| - var k = (kind-of $c) - var cf = [&min=0] - if (is $k string) { - set cf[min] = $c - } elif (is $k map) { - if (has-key $c min) { - set cf[min] = $c[min] - } - if (has-key $c align) { - set cf[align] = $c[align] - } - } - set col[$i] = $cf - } $col - put $col -} - -fn -parsecols {|col &split=$false lst| - set col = (-c2map $col) - var cc lines = (count $col) $lst - if $split { - set lines = [ (eawk {|_ @args| put $args } $lst) ] - } - each {|l| - var cl = (count $l) - if (> $cl $cc) { - set col = [ $@col (range (- $cl $cc) | each {|_| put [&align=left &min=0] }) ] - set cc = $cl - } - list:loop {|i c| - var ccl = (+ (count $c) 1) - if (> $ccl $col[$i][min]) { - set col[$i][min] = $ccl - } - } $l - } $lines - put $col -} - -fn -format {|f e| - var cb = $left~ - if (has-key $f align) { - var a = $f[align] - if (is $a right) { - set cb = $right~ - } elif (is $a center) { - set cb = $center~ - } - } - $cb $f[min] $e -} - -fn -formatline {|col line| - list:loop {|i v| - -format $col[$i] $v - } $line | str:join '' -} - -fn format {|&col=[] &split=$false @lst| - var lines = (list:-p $@lst) - if $split { - set lines = [ (eawk {|l @args| put $args } $lines) ] - } - set col = (-parsecols $col $lines) - each {|l| -formatline $col $l } $lines -} diff --git a/rc.elv b/rc.elv index 27fca51..3914414 100644 --- a/rc.elv +++ b/rc.elv @@ -4,12 +4,12 @@ set-env EDITOR vim set-env VIEW 'vim -R' set-env CURRENT_SHELL 'elvish' set-env STARSHIP_CONFIG ~/.config/starship/starship.toml -set paths = [$@paths /home/benjamin/bin /home/benjamin/Go/bin ] +set @paths = $@paths /home/benjamin/bin /home/benjamin/Go/bin { - use moi/util/list - if (list:includes-not /usr/local/bin $paths) { - set paths = [ $@paths /usr/local/bin ] + use framagit.org/benjamin.vaudour/elv-lib/mods/list + if (list:contains-not /usr/local/bin $paths) { + set @paths = $@paths /usr/local/bin } } @@ -18,23 +18,27 @@ set notify-bg-job-success = $false set edit:insert:binding[Tab] = { edit:completion:smart-start; edit:navigation:trigger-filter } set edit:insert:binding[Ctrl-H] = $edit:histlist:start~ -set edit:prompt = { go-prompt } -set edit:rprompt = { nop } +#set edit:prompt = { go-prompt } +#set edit:rprompt = { nop } + +# Starship prompt : https://starship.rs/ #eval (starship init elvish) eval (starship init elvish --print-full-init | upgrade-scripts-for-0.17 -lambda | slurp) # Carapace completion : https://github.com/rsteube/carapace-bin eval (carapace _carapace|slurp) +# Initialisation des aliases et de l’autocomplétion +use framagit.org/benjamin.vaudour/elv-lib/alias +use framagit.org/benjamin.vaudour/elv-lib/completion + # On ajoute les modules natifs que j’utilise beaucoup +use math use str use re -use math - -use moi/completion -use moi/alias -use moi/util/common -use moi/util/format +#use framagit.org/benjamin.vaudour/elv-lib/mods/format +#use framagit.org/benjamin.vaudour/elv-lib/mods/list +#use framagit.org/benjamin.vaudour/elv-lib/mods/map { use ./aliases/get-uid uid