diff replace_text_in_line.xml @ 22:3dc70b59608c draft

planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/text_processing/text_processing commit 2dc2df988bd2dde9f8d7f629b594186dbd4fdc2b
author bgruening
date Fri, 07 Mar 2025 20:44:20 +0000
parents 12615d397df7
children
line wrap: on
line diff
--- a/replace_text_in_line.xml	Fri Aug 16 10:41:54 2024 +0000
+++ b/replace_text_in_line.xml	Fri Mar 07 20:44:20 2025 +0000
@@ -14,6 +14,7 @@
       -r
       --sandbox
       #for $replacement in $replacements:
+        -e '$replacement.sed_options'
         -e
         's/$replacement.find_pattern/$replacement.replace_pattern/g'
       #end for
@@ -47,10 +48,20 @@
                     <add source="&#39;" target="&#39;&quot;&#39;&quot;&#39;" />
                     <add source="/" target="\/"/>
                 </mapping>
-
             </sanitizer>
-
-        </param>
+         </param>
+         <param name="sed_options" type="text" size="20" optional="true" label="Additional sed commands before replacement" help="Provide additional sed commands before the replacement (e.g., ':a;N;$!ba;')." >
+            <sanitizer>
+              <valid initial="string.printable">
+                  <remove value="&#39;"/>  <!-- Removes single quotes -->
+                  <remove value="/"/>     <!-- Removes slashes -->
+              </valid>
+              <mapping initial="none">
+                  <add source="&#39;" target="&#39;&quot;&#39;&quot;&#39;" />  <!-- Escapes single quotes -->
+                  <add source="/" target="\/"/>                         <!-- Escapes slashes -->
+              </mapping>
+            </sanitizer>
+         </param>
       </repeat>
     </inputs>
     <outputs>
@@ -59,8 +70,11 @@
     <tests>
          <test>
             <param name="infile" value="replace_text_in_line1.txt" />
-            <param name="find_pattern" value="CTC." />
-            <param name="replace_pattern" value="FOOBAR" />
+            <repeat name="replacements">
+              <param name="find_pattern" value="CTC." />
+              <param name="replace_pattern" value="FOOBAR" />
+              <param name="sed_options" value="" />
+            </repeat>
             <output name="outfile" file="replace_text_in_line_results1.txt" />
         </test>
         <test>
@@ -68,13 +82,24 @@
             <repeat name="replacements">
               <param name="find_pattern" value="CTC." />
               <param name="replace_pattern" value="FOOBAR" />
+              <param name="sed_options" value="" />
             </repeat>
             <repeat name="replacements">
               <param name="find_pattern" value="chr" />
               <param name="replace_pattern" value="domain" />
+              <param name="sed_options" value="" />
             </repeat>
             <output name="outfile" file="replace_text_in_line_results2.txt" />
         </test>
+        <test>
+            <param name="infile" value="replace_text_in_line1.txt" />
+            <repeat name="replacements">
+            <param name="find_pattern" value="\n" />
+            <param name="replace_pattern" value="" />
+            <param name="sed_options" value=":a;N;$!ba" />
+            </repeat>
+            <output name="outfile" file="replace_text_in_line_results3.txt" />
+        </test>
     </tests>
     <help>
 <![CDATA[
@@ -155,7 +180,9 @@
 - **\|** Separates alternate possibilities.
 
 
-**Note**: SED uses extended regular expression syntax, not Perl syntax. **\\d**, **\\w**, **\\s** etc. are **not** supported.
+**Note**: SED uses extended regular expression syntax, not Perl syntax. **\\d**, **\\w**, **\\s** etc. are **not** supported. However, you can use SED FAQ to perform commands using special characters.
+        More complex options can look like `sed -e '$!N;s/foo/bar/;'`. Here, `$!N;` is an optional part which you only need to set in very special cases. The `foo` part is the search string, and the `bar` part is the replacement string.
+        Please read the SED FAQ here: https://www.pement.org/sed/sedfaq3.html#s3.2
 
 ]]>
     </help>