Summary Files Commits Branches @commit @diff @stats
path: root / awk-edits / #strings.awk
diff options
context:
space:
mode:
Commit0fbac293a5b3ab2e1360d8dc2743c1ae71bc128f (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-08-18 19:02:23 +0300
Committer
 Syndamia <kamen@syndamia.com>
2025-08-18 19:02:23 +0300
Files13c6679e365a6f5fb8928b82b176017d85dee1db /awk-edits/#strings.awk
syndamia.com-0fbac293a5b3ab2e1360d8dc2743c1ae71bc128f.tar
syndamia.com-0fbac293a5b3ab2e1360d8dc2743c1ae71bc128f.tar.gz
syndamia.com-0fbac293a5b3ab2e1360d8dc2743c1ae71bc128f.zip
Parent6f20ac5169469d42f5c945e3de01b297dc028c02 (diff)
chore: Remove outdated files
1 files changed, 0 insertions, 130 deletions
-rw-r--r--awk-edits/#strings.awk130
diff --git a/awk-edits/#strings.awk b/awk-edits/#strings.awk
deleted file mode 100644
index 1441e41..0000000
--- a/awk-edits/#strings.awk
+++ /dev/null
@@ -1,130 +0,0 @@
-# gosub(regexp, replacement [, target])
-# Aka global original sub
-# Behaves like gsub, however doesn't try regexp on previoud replacements
-# and returns the result string, rather than doing it inplace.
-function gosub(regexp, replacement, target) {
- if (!length(target)) {
- target = $0;
- }
-
- result = "";
- matched = "";
- while (match(target, regexp)) {
- result = result substr(target, 1, RSTART - 1);
- matched = substr(target, RSTART, RLENGTH);
- target = substr(target, RSTART + RLENGTH);
-
- sub(regexp, replacement, matched);
- result = result matched;
- }
-
- return result target;
-}
-
-# gesub(regexp, exregexp, replacement [, target])
-# Aka global excluding sub
-# Behaves like gsub, however substitutes only where exregexp doesn't match
-# and returns the result string, rather than doing it inplace.
-function gesub(regexp, exregexp, replacement, target) {
- if (!length(target)) {
- target = $0;
- }
-
- result = "";
- while (match(target, exregexp)) {
- beg = substr(target, 1, RSTART - 1);
- exclude = substr(target, RSTART, RLENGTH);
- target = substr(target, RSTART + RLENGTH);
- gsub(regexp, replacement, beg);
- result = result beg exclude;
- }
-
- gsub(regexp, replacement, target);
-
- return result target;
-}
-
-# glsub(lbregexp, regexp, largexp, replacement [, target])
-# Aka global sub with non-capturing look-around (lookbehind and lookahead)
-# Behaves kind of like gsub, however substitution of regexp with replacement
-# only happens, when regexp is preceded by lbregexp and succeeded by laregexp.
-# Only regexp get's replaced, the matches of lbregexp and laregexp are left
-# as-is. Overlapping of the lookahead and lookbehind substrings is supported,
-# but any sort of overlapping which includes regexp isn't.
-# This function is quite slow, try to use as little as possible.
-# Returns the result string, rather than doing it inplace.
-function glsub(lbregexp, regexp, laregexp, replacement, target) {
- if (!length(target)) {
- target = $0;
- }
-
- result = ""
- while (match(target, lbregexp regexp)) {
- result = result substr(target, 1, RSTART - 1);
- matched = substr(target, RSTART, RLENGTH);
- target = substr(target, RSTART + RLENGTH);
-
- match(target, laregexp);
- if (RSTART == 1) {
- match(matched, regexp);
- result = result substr(matched, 1, RSTART - 1);
- matched = substr(matched, RSTART);
- sub(/.*/, replacement, matched);
- }
- result = result matched;
- }
-
- return result target;
-}
-
-# gbsub(lbrace, rbrace, replacement [, target ])
-# Aka global brace sub
-# Properly substitutes recursive braced expressions, i.e.
-# for "((1+2) * (3/(4-9)))", substitution is done first
-# on "(1+2)", then on "(4-9)", afterwards on "(3/SOMETHING)"
-# (where "(4-9)" turns into "SOMETHING" after substitution),
-# and finally, the whole equation (with it's inner stuff
-# substituted) is substituted.
-# This is useful when one of the braces can exist as-is, but
-# can also be paired with a special (opening/closing) brace.
-# For example, in bash parameter expansion is specified with
-# "${...}", however "}" can also be the closing brace of a function.
-function gbsub(lbrace, rbrace, replacement, target) {
- if (!length(target)) {
- target = $0;
- }
-
- result = substr(target, 1, match(target, lbrace) - 1);
- depth = 1;
- LLN = 0;
- while (!(LLN == -1 && depth == 1)) {
- match(target, lbrace); LST = RSTART; LLN = RLENGTH;
- match(target, rbrace);
-
- # rbrace, pop stack
- if (depth > 1 && (LST == 0 || LST > RSTART)) {
- depth--;
- level[depth] = level[depth] substr(target, 1, RSTART + RLENGTH - 1);
- sub(/.*/, replacement, level[depth]);
- if (depth > 1) {
- level[depth - 1] = level[depth - 1] level[depth];
- }
- else {
- result = result level[1];
- level[1] = "";
- }
- target = substr(target, RSTART + RLENGTH);
- }
- # lbrace, push stack
- else if (LST > 0 && LST < RSTART) {
- if (depth > 1) prev = depth - 1;
- else prev = depth;
-
- level[prev] = level[prev] substr(target, 1, LST - 1);
- level[depth++] = substr(target, LST, LLN);
- target = substr(target, LST + LLN);
- }
- }
-
- return result target;
-}