aboutsummaryrefslogtreecommitdiff
path: root/escape.f90
diff options
context:
space:
mode:
authorJeffrey Armstrong <jeff@approximatrix.com>2020-05-05 11:56:54 -0400
committerJeffrey Armstrong <jeff@approximatrix.com>2020-05-05 11:56:54 -0400
commitb063cac571202757ec25f2c6e2a772684b88d4ae (patch)
treebcdd9426a90d8e9bec4498bffd2f97686ba28d41 /escape.f90
parent0ade9914918238b8da35e995fe9782a517988ae2 (diff)
downloadLR-87-b063cac571202757ec25f2c6e2a772684b88d4ae.tar.gz
LR-87-b063cac571202757ec25f2c6e2a772684b88d4ae.zip
Added input handling with escaping, all untested.
Diffstat (limited to 'escape.f90')
-rw-r--r--escape.f9037
1 files changed, 37 insertions, 0 deletions
diff --git a/escape.f90 b/escape.f90
new file mode 100644
index 0000000..d960459
--- /dev/null
+++ b/escape.f90
@@ -0,0 +1,37 @@
+module escaper
+
+ character(*), parameter::need_escape = " $&`:<>[]{}+#%@/;=?\^|~',"//'"'
+
+contains
+
+ subroutine escape_string(text)
+ implicit none
+
+ character(*), intent(inout)::text
+ integer::i
+ character(3)::replace_text
+ integer::replace_code
+
+ i=1
+ do while(i < len_trim(text))
+
+ if(index(need_escape, text(i:i)) > 0) then
+ replace_code = iachar(text(i:i))
+ write(replace_text, '(A1,Z2)') "%", replace_code
+ if(i == 1) then
+ text = replace_text//text(2:len_trim(text))
+ else if(i == len_trim(text)) then
+ text = text(1:(i-1))//replace_text
+ else
+ text = text(1:(i-1))//replace_text//text((i+1):len_trim(text))
+ end if
+ i = i + 3
+ else
+ i = i + 1
+ end if
+
+ end do
+
+ end subroutine escape_string
+
+end module escaper \ No newline at end of file