aboutsummaryrefslogtreecommitdiff
path: root/escape.f90
diff options
context:
space:
mode:
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