From f56ffe480d905db44185b9c66b7f21d03280df63 Mon Sep 17 00:00:00 2001 From: hollorol Date: Wed, 31 Jul 2024 23:12:49 +0200 Subject: [PATCH] initial commit --- Makefile | 8 ++++ README.md | 4 ++ textmagicscripts/edit | 11 +++++ textmagicscripts/google_link_to_wget | 7 +++ textmagicscripts/lower | 7 +++ textmagicscripts/mtalign | 42 +++++++++++++++++ textmagicscripts/number_line | 3 ++ textmagicscripts/regex | 8 ++++ textmagicscripts/sanitize | 40 ++++++++++++++++ textmagicscripts/snake-to-cammel/Makefile | 8 ++++ .../snake-to-cammel/snake-to-cammel.c | 43 +++++++++++++++++ textmagicscripts/snake_to_cammel | Bin 0 -> 16104 bytes textmagicscripts/space-to-snake/Makefile | 8 ++++ .../space-to-snake/space-to-snake.c | 39 ++++++++++++++++ textmagicscripts/space_to_snake | Bin 0 -> 16104 bytes textmagicscripts/upper | 7 +++ tm | 44 ++++++++++++++++++ 17 files changed, 279 insertions(+) create mode 100644 Makefile create mode 100644 README.md create mode 100755 textmagicscripts/edit create mode 100755 textmagicscripts/google_link_to_wget create mode 100755 textmagicscripts/lower create mode 100755 textmagicscripts/mtalign create mode 100755 textmagicscripts/number_line create mode 100755 textmagicscripts/regex create mode 100755 textmagicscripts/sanitize create mode 100644 textmagicscripts/snake-to-cammel/Makefile create mode 100644 textmagicscripts/snake-to-cammel/snake-to-cammel.c create mode 100755 textmagicscripts/snake_to_cammel create mode 100644 textmagicscripts/space-to-snake/Makefile create mode 100644 textmagicscripts/space-to-snake/space-to-snake.c create mode 100755 textmagicscripts/space_to_snake create mode 100755 textmagicscripts/upper create mode 100755 tm diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7fec7bd --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ +DEST ?= $(HOME)/.local +install: + cp -r ./textmagicscripts $(DEST)/bin/ + cp ./tm $(DEST)/bin/ +uninstall: + rm -r $(DEST)/bin/textmagicsripts + rm $(DEST)/bin/tm + diff --git a/README.md b/README.md new file mode 100644 index 0000000..bd10bfd --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +dependencies: +- xclip +- rofi +- python3 diff --git a/textmagicscripts/edit b/textmagicscripts/edit new file mode 100755 index 0000000..834de50 --- /dev/null +++ b/textmagicscripts/edit @@ -0,0 +1,11 @@ +#!/bin/bash + +set -euo pipefail + +cat > /tmp/hollorol_edit + +st -e nvim /tmp/hollorol_edit + +cat /tmp/hollorol_edit + + diff --git a/textmagicscripts/google_link_to_wget b/textmagicscripts/google_link_to_wget new file mode 100755 index 0000000..b357a7d --- /dev/null +++ b/textmagicscripts/google_link_to_wget @@ -0,0 +1,7 @@ +#!/bin/bash + +while read LINK; do + DOCNAME=$(curl -s "$LINK" | grep -oP "'title': '.*?'" | sed -E "s/'title': '(.*)'/\1/") + DOCID=$(echo "$LINK" | sed -E 's/.*d\/(.*)\/view.*/\1/') + echo "wget -O $DOCNAME \"https://drive.usercontent.google.com/download?id=$DOCID""&confirm=t\"" +done diff --git a/textmagicscripts/lower b/textmagicscripts/lower new file mode 100755 index 0000000..63847a8 --- /dev/null +++ b/textmagicscripts/lower @@ -0,0 +1,7 @@ +#!/usr/bin/env python3 + +import sys + +if __name__ == "__main__": + for line in sys.stdin: + print(line.lower(),end='') diff --git a/textmagicscripts/mtalign b/textmagicscripts/mtalign new file mode 100755 index 0000000..a041890 --- /dev/null +++ b/textmagicscripts/mtalign @@ -0,0 +1,42 @@ +#!/usr/bin/python3 + +import re +import sys +import os +import copy + +ISPIPE = re.compile(r'(? colsizes[ind]: + colsizes[ind] = cell_size + return colsizes + +def pad_cells_and_center(rows): + pad = 1 + cells_to_pad = copy.deepcopy(rows) + colsizes = calc_colnums(rows) + for row_id,row in enumerate(cells_to_pad): + for col_ind,cell in enumerate(row): + cell_size = len(cell.strip()) + numspaces = (colsizes[col_ind] - cell_size) + pad + if row_id == 1: + cells_to_pad[row_id][col_ind] = ' ' * pad + '-' * colsizes[col_ind] + ' ' * pad + continue + cells_to_pad[row_id][col_ind] = ' ' * pad + cell.strip() + ' '* numspaces + return(cells_to_pad) + +if __name__ == "__main__": + table = [] + for row_string in sys.stdin: + table.append(ISPIPE.split(row_string.strip())[1:-1]) + table = pad_cells_and_center(table) + for row in ['|' + '|'.join(r) + '|' for r in table]: + print(row) + diff --git a/textmagicscripts/number_line b/textmagicscripts/number_line new file mode 100755 index 0000000..a10a886 --- /dev/null +++ b/textmagicscripts/number_line @@ -0,0 +1,3 @@ +#!/bin/bash + +nl -s ". " diff --git a/textmagicscripts/regex b/textmagicscripts/regex new file mode 100755 index 0000000..c6f81d5 --- /dev/null +++ b/textmagicscripts/regex @@ -0,0 +1,8 @@ +#!/bin/bash + +set -eou pipefail + +cat > /tmp/regex_tmp_hr +regex=$(rofi -dmenu -window-title 'regular expression') + + 127: # case ß + return False + + return ( + my_char.isalnum() or + char_num == 95 or + char_num == 47 or + char_num == 46 or + char_num == 45 + ) and (char_num < 127) + + +def sanitize(filename): + """ + A simple filename sanitizer + """ + spaceless_unicode = ["_" if i == " " else i for i in filename] + spaceless_unicode = unid.normalize("NFKD", "".join(spaceless_unicode)) + ret = [i if test_special_char(i) else "" for i in spaceless_unicode] + return "".join(ret) + + +if __name__ == "__main__": + for row in sys.stdin: + print(sanitize(row)) diff --git a/textmagicscripts/snake-to-cammel/Makefile b/textmagicscripts/snake-to-cammel/Makefile new file mode 100644 index 0000000..5750c49 --- /dev/null +++ b/textmagicscripts/snake-to-cammel/Makefile @@ -0,0 +1,8 @@ +DEST=$(HOME)/.local/bin +SRC=snake-to-cammel.c +OUT=../snake_to_cammel + +$(OUT): $(SRC) + gcc -pedantic -Wall -Wextra $(SRC) -o $(OUT) +install: + cp $(OUT) $(DEST) diff --git a/textmagicscripts/snake-to-cammel/snake-to-cammel.c b/textmagicscripts/snake-to-cammel/snake-to-cammel.c new file mode 100644 index 0000000..796337c --- /dev/null +++ b/textmagicscripts/snake-to-cammel/snake-to-cammel.c @@ -0,0 +1,43 @@ +/* + * This simple program is created by Roland Hollós (hollorol@rolandhollos.net) + */ +#include +#include +#include + +#define MAX_LINE_LEN 10000 + +int +main() +{ + char s[MAX_LINE_LEN]; + char out[MAX_LINE_LEN]; + while(fgets(s, MAX_LINE_LEN, stdin) != NULL){ + int string_length = strlen(s); + int k = 0; + int under = 0; + for(int i = 0; i < string_length; ++i) + { + /* if((s[i] >= 65) && (s[i] <= 90)) */ + if((s[i] == '_') && !under){ + under = 1; + continue; + } + + if((s[i] <= 122) && (s[i] >= 90) && under) + { + out[k] = s[i] - 32; + k++; + under = 0; + continue; + } + + out[k] = s[i]; + k++; + under = 0; + } + out[k] = '\0'; + printf("%s", out); + } + return 0; +} diff --git a/textmagicscripts/snake_to_cammel b/textmagicscripts/snake_to_cammel new file mode 100755 index 0000000000000000000000000000000000000000..b8f4c86b734acfedc85afc14119702265324f3dd GIT binary patch literal 16104 zcmeHOeQX>@6`woTi9-|LB~6N*(0CORa0tHGiDO)nkn_jc>yYo*kRZyk_O0y`_hIh# zh#i$Sm6Ix#iD*SsBGIC>5-I}zCGA-kW)E zv$vc<6p263KI`_){NDS`$D7%^S?|oFu{|BZKtQmRiO&hl4TTjFB}46JC;=)en#D4> z)`+!Y5#;ZYn6gKe0;`g#V6m$V9XO{t z_w|V22{C~f^D(^=J{VTCU%IY`d&b|We&+ZGyKj8|=}q71ZtUbTkb^!b=+9FE^O(l5 zLLb%tXT=G^mVmxyT}=)2nA}}JiUr%Sq8O67hv2G}z?T75%75DeIJT>l{|Mk3e7tfR z0L=?R{uA(7R{~!Q*mAL2)JK((=dI`;u-xE57*#yLN+OW`<&aLiaTSISSDRKa#*HZIF1d= zvU z`q*3cQhj{qJCK>#2;G{A!{u`Mdyo%21a&+0BY*Z77<+)DKX#*j9|YnK7IEg(^i-js zk6oF$aHmihi_Kk$-2z-(iQQCc9@Xsk;4&VY*UyDsJXwy69Y#Jh`pugnzXUun&Tk(p zwjY1AwHP@1NCOh=O-1nNj5c;@Ja$VzclvDkQ4|7>HQi^Jvk?fW+9g2iyr|$0)7Pi2>223Bj88CkANQmKLUOP{0RIv5y1CR z8*=azyQXYAzH`NQE>&}d!Z7F~pwELI1g(QU_%1!9K^osHq6Cf~5`p1xV9nCS6;A{f zhY`nj_E^R`bRa41FT{GVqyM?T6be!FtqgZmR_zYmd#vJw*tL55r?#$_#ULLZ)5Qzm z=YGG0+%LoDNvQ8Zd^&Ea3_l)hTehgIF#t^hz!yIPegymo_!00U;77oZfFA)r0)7Pi z2>gFWfcFRTen8&qw}ZO7l)FtE5OKdJ%Gni4S1aZ0J6uC~ev(>EdES4B&tE8PfA3Bq zgZcBcsgL*SUBCxR5Z+7pD%n4xVDTL3dr4Q3UPYP}(ZmexH^djsD7sS4b1Cml{3zkW zR59b{sbSpiDe~hzid_HS3#vb0mag!gQuc3%`0yH3<~h#r7%KB$BK!N4=XO&y|8vFr z$GsId(LCrN{RPtOr$tq&v#ss3T5Y@4n=sQ_1MZluuWM-BNJ;koXN_^WN4#6`S}@K5 zuslqG(a7OG(53v>0v;40ao*cL!Y4iWR>Ju{fUJ}*xCUT9adTAVdE9XKbwI2VJg=2i zh=(D8_40ki_-X0C(z#CBg`0`-2;CasY&k%<{CehcIxCnR{=1(-r zo=Sfk@D(sm_}t7oGG8WtZya7H|D&{TTmJ6~IKKlN+vD|r6L5{nbgSEdb6sw{Du{80 zZ+p*uArALt?S@DO_OYA23BxuA1OPcZ-`^kU6LX*)Y2`m<)rGUEAEY6K{*oB^J8k!vn( ze$A@0Gj)AtDrF_1X@=2psAX@=i0x}PVB3BB(S0p@yV?MTlM_ZvC#&9mNEn@a_P4g| zG4^+K9FBDx-7T$qV!-eo4v6yR|9`XLUmh`VobjZ9VZ}|`6taVK_MphFju{j|^0Yz` z0#SuR)HwoZT=Ag-Bc96`gJwF82M)USgBKigF!DJo4wa|jV)W*6#HE7{a7ck;gQpit z9!V%Z4pH1390DOCxsjA@_JX#vN)K`hj!szFArVPuY%4O5&PRr_nIS7{kGP=Td;(6) zB;o|Mw070u43qAIW^PbK;v;FOLTNjzEZ?xQxkM&ilrg}TwUQX{f%O%!!9$Q*Q2bT1Djj047Yq8GPu@bKCkas^ZN~MKl`zM1o*gitJ;An>FRl`X_EOq&aR3 z{{a$}@S(2_XWh%^D!u-kXFUVlkc-dj>?zn4io$*>cQ?=YJQ#59as9mhb$ZkHbPpgQ??c`#Z z$N8l|MvU8EA61sx1^C|bmQ(%Y&czDm*EonuU|Uh#+L^n`B(FLZ_(N*g1AyW>p4-pg mzj%Le+a-}MbNHYJver{L*Q>0!7B9`O#2+@0)gFQ;EB*oIReuWr literal 0 HcmV?d00001 diff --git a/textmagicscripts/space-to-snake/Makefile b/textmagicscripts/space-to-snake/Makefile new file mode 100644 index 0000000..543e25a --- /dev/null +++ b/textmagicscripts/space-to-snake/Makefile @@ -0,0 +1,8 @@ +DEST=$(HOME)/.local/bin +SRC=space-to-snake.c +OUT=space_to_snake + +../$(OUT): $(SRC) + gcc -pedantic -Wall -Wextra $(SRC) -o ../$(OUT) +install: + cp ../$(OUT) $(DEST) diff --git a/textmagicscripts/space-to-snake/space-to-snake.c b/textmagicscripts/space-to-snake/space-to-snake.c new file mode 100644 index 0000000..f1c1524 --- /dev/null +++ b/textmagicscripts/space-to-snake/space-to-snake.c @@ -0,0 +1,39 @@ +/* + * This simple program is created by Roland Hollós (hollorol@rolandhollos.net) + * It is works like this: +* ez itt egy nagyon hosszu valtozo == ez_itt_egy_nagyon_hosszu_valtozo_ + */ +#include +#include +#include + +#define MAX_LINE_LEN 10000 + +int +main() +{ + char s[MAX_LINE_LEN]; + char out[MAX_LINE_LEN]; + + while(fgets(s, MAX_LINE_LEN, stdin) != NULL){ + int string_length = strlen(s); + for(int i = 0; i < string_length; ++i) + { + /* if((s[i] >= 65) && (s[i] <= 90)) */ + if(s[i] == ' '){ + out[i] = '_'; + continue; + } + + if((s[i] >= 65) && (s[i] <= 90)) + { + out[i] = s[i] + 32; + } + out[i] = s[i]; + + } + out[string_length] = '\0'; + printf("%s", out); + } + return 0; +} diff --git a/textmagicscripts/space_to_snake b/textmagicscripts/space_to_snake new file mode 100755 index 0000000000000000000000000000000000000000..a5f861e78f28e2e4efe12a2a5701ce11c8e6b8e7 GIT binary patch literal 16104 zcmeHOU2Ggz6~1fNiQ6XGO&U`tA@L|}zyZ9r^J5H2$U62q<0$`eAgL(B*gLjY?2p+U zw{}$8R8Fe6A*huK4H6G&K?)K)v=XX9K*()cH$~7oJRnyB$%cJFxZJQm;CSrG~;kxKOyMYX|*%fwhw|3xkUVyaaw z#Ia7TQu9#1!{J3`XD**uATTe{q1GHYRzdz`SA-btpugNeemO< zWsCm|GR*tAzq!VtiSsYWX;qD>WKYY6##EvqmCOtcHw?G7G_-7p=CjdtPRA4%^+9uL z`|g9P;;0%YPW-976dy_}>3@HI;_b0DKRk8z$DP-&c6a@1#V;>DA#IQk*^rREObMz} znZ}B2-1C1<9cAuL;3ezLbpJt9P8Uq6Pz*~-DW~=zj#?RhA-Hn(8|UCDu5$Jx;5B^w zasq_rCsF?lKC8>{^T91v%T-g%Rm!|oef^f5S9v>;%;1Vdbp;WZt%N z-MiXT*^Jd~_M|K{*`Lm4xD&%QEo(?)7s7bbUx-UIjumP%PDKW6Xn7LDSgAUh`^D2g zz%W;+{qE^1`QDK8-n-aUO!4=E@Db*f>8op5_pZnaD*CPjgLV(!-OF$dret zu@RZ}@X|NwWZdXFq4`>rm|LPY_^Zbusy#eiA0m;MTOxbsdt4L&1{nx45M&_8K#+kT z13?CY4E#?S&_}OU>nE#TYg9@a?W1GU?RMQ=OKQSH_+C5!CyhA_tP@zjTdV`i4GsSs#7p+TQMX^LXu;1s{Z`?t! z_Le?&O@I0Qt@_Kem3nAGzjVu9iU$51bsMNIO!tNBI&S-a5MK3$y_O87^Ke^?7RA$!Vv}O`GOjLb@dgwv)UF@IyuRILpLHOv8Uv1irM7%{!oH{-| zRVe6Vug{#jRVa+bXJ3!s0I%Nr&dK-<{dD-HV^w6ZSsMyF#Kf_x$rlR+(Zup}r|T8~!fEd@??(pXPokVCr8Vn?Um4 z#(g0|KSu%2R3m=CvktZtJ7tX7! z3LzvAfdm-{G7w}S$Uu;RAOk@Lf(!&12r>|4;QuoNvOiGv1Ik{%&3w8G;KMmiJQCm#6k9t`#WyodCWD9<5i9^u4jY;X^-oc${B6)LRG_~T=K(#Nl7 zUakXF9qGa`g#E;=F}E(`M!T;=sz%AYcC|`9f&%p`*Ol-m9Q&ok>qPjoD3ptTuJbzQ zv~!P|)})2oSgxH3$Np2wKb~(nZcB>$>7|v+j(x3?>qYok6!?-C%E1~WL@Qz3%99Si zOx4CpmCfMG?ayupA5qIxz0ZCJ_$3vQ;`fcTwwHLRc(8X4{-HVe6X2;|f1KY3uX);) z;!nUYu2`mIo(umX@%R%b{`ykm;3Jqnv6xu8_&xATFi+&YnboX*jqUw;xWx8{dEd74 zzbp9s5j@4?x4#Tt<2Jo;1HAO*W!Y9D+Em_xw%sQUGnX?* z3@c;jMpR$UOj|}`D4iaGi>GG5(k?O051PGJgPm>2XUuO|h|DlL_qXke8}Z#826o+d z9NyiwtE(L}UYs!EI&1Zg{mR(BbI-Q6oyMNd&I9poqq}X}&Nw{$?*_zV@Be?<@9(@} zP&B3&1q>@;+NN^Ok6%3~(YtRMlu*vg3MCAZibmYm2oPN9I|W7}pEU-|OoHAw=-LA- zyyajF<*fud&){J6XQd1<4J)yioRygwnSmO2eTMP%4@qN!w-*(9XFyASJvx zVdVx@G?TThXn$rXI+)82S~+{fL-h>kLcO8sMolkU%3+b6wpz z=6XmOJ(%faFS^g#)G~sj;f*52DvDX2#^m*0Ss$-V>nL2R_$_gzmVfsIWgW$8$5zUO z_u)fp7x8ape?bj8ugJPaxE2(={)gCKkp2(v75Tmsj(#`2{_?vmsEHw?-~Vgi|Aw`Y z#4qbZ!Fu+S^`Sq06M9-3iodKM1+TF`#YlM;e_6*R!OED0;&$9nEwv+X+ zpziUfocaBq14lWL_KUwO{QDy7Y;MMhRmy}v!pG~cv7ca!j6A~XVmD`@^ZI|24Fn}# zX+r9PFZlfBcUtfRYTP5zzfdos;O$@Tmjr1&>lOd}|2354FXN{)wq~Sp_ln>DRVcmw z)tYN9NYC!P;`jdplwSW<&9xT%xz`zG$(zuBLSYd;{IyYB_sV;fetW44&cHY9@t1Y> z6gH8Ph@D%zT^IgCC}{3U|FZrqz9&m32a!CApN!+rpd%CUm-peu8_7$ldKZdE@fW-a zjn`k+(=+VfRP=NU;wLx{&R&06pVqRY#3{{)pVSw?nK+5RDduYG=kWKpx0w59b7@wI ze_fGr3luAf7mIV(RXInU8~iB;wh}C@<0XFi{-x_fVs{+*aE)%%AS->1OTVs`*5c*; P7t#+KWVz45S5^N4-sExY literal 0 HcmV?d00001 diff --git a/textmagicscripts/upper b/textmagicscripts/upper new file mode 100755 index 0000000..b81e74a --- /dev/null +++ b/textmagicscripts/upper @@ -0,0 +1,7 @@ +#!/usr/bin/env python3 + +import sys + +if __name__ == "__main__": + for line in sys.stdin: + print(line.upper(),end='') diff --git a/tm b/tm new file mode 100755 index 0000000..f24ec4b --- /dev/null +++ b/tm @@ -0,0 +1,44 @@ +#!/bin/bash + +set -eou pipefail + +SCRIPTLOC="$HOME/.local/bin/textmagicscripts" + +printResult () { + scriptname="$1" + script=$(echo $scriptname | head -c -3) + eval "xclip -o | $SCRIPTLOC"/"$script | xclip -sel c" + active_window_id=$(xdotool getactivewindow) + if [ -z "$(xprop -id $active_window_id WM_CLASS | grep -o terminal | head -n 1)" ] + then + xdotool key ctrl+v + else + xdotool key ctrl+shift+v + fi + +} + +export -f printResult + + +find $SCRIPTLOC -maxdepth 1 -type f -exec basename {} \; | while read line; +do + for i in {p,c} + do + echo ${line}_$i + done +done | \ + rofi -dmenu --window-title "TexMagics" -matching regex | \ + while read scriptname; + do + insertmode=$(echo $scriptname | tail -c 2) + + case $insertmode in + p) + printResult $scriptname;; + c) + script=$(echo $scriptname | head -c -3) + eval "xclip -o | $SCRIPTLOC"/"$script | xclip -sel c";; + esac + done +