summaryrefslogtreecommitdiff
path: root/uri-absolution
blob: 1683071430be656a9db699032bc0d712891be7ee (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/sh
base_uri="$1"
domain="$(printf "%s\n" "$base_uri" | uricut -d)"
scheme="$(printf "%s\n" "$base_uri" | uricut -s)"
path="$(printf "%s\n" "$base_uri" | uricut -p)"
most_of_path="$(printf "%s\n" "$base_uri" | uricut -p | rev | cut -d/ -f2- | rev)"

### this is the verbose version for debugging.
### to enable debug mode, uncomment this, and comment out the next sed.
#sed \
#'s|^<>$|(blank input) '"${base_uri}"'|g;t
#s|^<[ \t]*\([A-Za-z][A-Za-z+.-]*:[^ \t]*\)>|(absolute) \1|g;t
#s|^<[ \t]*\(#[^ \t]*\)>|(fragmentid_relative) '"${base_uri}"'\1|g;t
#s|^<[ \t]*\(?[^ \t]*\)>|(querystring_relative) '"$scheme"'://'"$domain""$path"'\1|g;t
#s|^<[ \t]*\(//[^ \t]*\)>|(scheme_relative) '"$scheme"':\1|g;t
#s|^<[ \t]*\(/[^ \t]*\)>|(absolute_path) '"$scheme"'://'"$domain"'\1|g;t
#s|^<[ \t]*\([^ \t]*\)>|(same-dir path relative) '"$scheme"'://'"$domain""$most_of_path"'/\1|g'
#exit 0

sed -u \
's|^<>$|'"${base_uri}"'|g;t
s|^<[ \t]*\([A-Za-z][A-Za-z+.-]*:[^ \t]*\)>|\1|g;t
s|^<[ \t]*\(#[^ \t]*\)>|'"${base_uri}"'\1|g;t
s|^<[ \t]*\(?[^ \t]*\)>|'"$scheme"'://'"$domain""$path"'\1|g;t
s|^<[ \t]*\(//[^ \t]*\)>|'"$scheme"':\1|g;t
s|^<[ \t]*\(/[^ \t]*\)>|'"$scheme"'://'"$domain"'\1|g;t
s|^<[ \t]*\([^ \t]*\)>|'"$scheme"'://'"$domain""$most_of_path"'/\1|g;t
s|^<[ \t]*\(.*\)>|<\1> UNHANDLED|g'