Statistics
| Revision:

root / tmp / org.txm.groovy.core / src / groovy / org / txm / macro / txt / ChangeEncodingMacro.groovy @ 499

History | View | Annotate | Download (2.5 kB)

1 321 mdecorde
// Copyright © 2010-2013 ENS de Lyon.
2 321 mdecorde
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of
3 321 mdecorde
// Lyon 2, University of Franche-Comté, University of Nice
4 321 mdecorde
// Sophia Antipolis, University of Paris 3.
5 321 mdecorde
//
6 321 mdecorde
// The TXM platform is free software: you can redistribute it
7 321 mdecorde
// and/or modify it under the terms of the GNU General Public
8 321 mdecorde
// License as published by the Free Software Foundation,
9 321 mdecorde
// either version 2 of the License, or (at your option) any
10 321 mdecorde
// later version.
11 321 mdecorde
//
12 321 mdecorde
// The TXM platform is distributed in the hope that it will be
13 321 mdecorde
// useful, but WITHOUT ANY WARRANTY; without even the implied
14 321 mdecorde
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 321 mdecorde
// PURPOSE. See the GNU General Public License for more
16 321 mdecorde
// details.
17 321 mdecorde
//
18 321 mdecorde
// You should have received a copy of the GNU General
19 321 mdecorde
// Public License along with the TXM platform. If not, see
20 321 mdecorde
// http://www.gnu.org/licenses.
21 321 mdecorde
22 321 mdecorde
package org.txm.macro.txt
23 321 mdecorde
24 321 mdecorde
import org.kohsuke.args4j.*
25 321 mdecorde
import groovy.transform.Field
26 499 mdecorde
import org.txm.rcp.swt.widget.parameters.*
27 321 mdecorde
import org.txm.utils.CharsetDetector
28 321 mdecorde
29 321 mdecorde
@Field @Option(name="inputDirectory", usage="Dossier qui contient les fichiers à traiter", widget="Folder", required=true, def="")
30 321 mdecorde
File inputDirectory
31 321 mdecorde
32 321 mdecorde
@Field @Option(name="inputEncoding", usage="Input encoding", widget="String", required=false, def="")
33 321 mdecorde
String inputEncoding
34 321 mdecorde
35 321 mdecorde
@Field @Option(name="outputEncoding", usage="Output encoding", widget="String", required=true, def="UTF-8")
36 321 mdecorde
String outputEncoding
37 321 mdecorde
38 321 mdecorde
if (!ParametersDialog.open(this)) return;
39 321 mdecorde
40 321 mdecorde
File outDir = new File(inputDirectory, "out") // write result in "out" folder
41 321 mdecorde
if (outDir.exists()) {
42 321 mdecorde
        if (!outDir.deleteDir()) {
43 321 mdecorde
                println "Could not delete directory: $outDir"
44 321 mdecorde
                return;
45 321 mdecorde
        }
46 321 mdecorde
}
47 321 mdecorde
if (!outDir.mkdir()) {
48 321 mdecorde
        println "Could not create directory: $outDir"
49 321 mdecorde
        return;
50 321 mdecorde
}
51 321 mdecorde
println "Writing result in : $outDir"
52 321 mdecorde
53 321 mdecorde
def processFile(File file, File outfile, String fromEncoding, String toutputEncoding) {
54 321 mdecorde
        String text = file.getText(fromEncoding)
55 321 mdecorde
        outfile.withWriter(toutputEncoding) {writer -> // read with the "fromEncoding"
56 321 mdecorde
                writer.write(text) // write with the "toutputEncoding"
57 321 mdecorde
        }
58 321 mdecorde
}
59 321 mdecorde
60 321 mdecorde
try {
61 321 mdecorde
inputDirectory.eachFile { file ->
62 321 mdecorde
        if (!file.isHidden() && !file.isDirectory()) {
63 321 mdecorde
                String e = inputEncoding
64 321 mdecorde
                if (inputEncoding == null || inputEncoding.length() == 0) {
65 321 mdecorde
                        CharsetDetector detector = new CharsetDetector(file)
66 321 mdecorde
                        e = detector.getEncoding()
67 321 mdecorde
                }
68 321 mdecorde
69 321 mdecorde
                File outfile = new File(outDir, file.getName())
70 321 mdecorde
                println "$e -> $outputEncoding : "+outfile.getName()
71 321 mdecorde
                processFile(file, outfile, e, outputEncoding)
72 321 mdecorde
        }
73 321 mdecorde
}
74 321 mdecorde
} catch (UnsupportedEncodingException e) {
75 321 mdecorde
        println "ERROR: Unsupported encoding: "+e
76 321 mdecorde
}