/
CasecastProcessor.cs
50 lines (45 loc) · 1.27 KB
/
CasecastProcessor.cs
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Daramkun.DaramRenamer.Processors.Filename
{
[Serializable]
public class CasecastProcessor : IProcessor
{
public string Name => "process_casecast_text";
public bool CannotMultithreadProcess => false;
[Localized ( "casecast" )]
public Casecast Casecast { get; set; } = Casecast.AllToLowercase;
public bool Process ( FileInfo file )
{
string filename = Path.GetFileNameWithoutExtension ( file.ChangedFilename );
string ext = Path.GetExtension ( file.ChangedFilename );
switch ( Casecast)
{
case Casecast.AllToUppercase:
file.ChangedFilename = $"{filename.ToUpper ()}{ext}";
break;
case Casecast.AllToLowercase:
file.ChangedFilename = $"{filename.ToLower ()}{ext}";
break;
case Casecast.UppercaseFirstLetter:
{
string [] fn = filename.Split ( ' ' );
for ( int i = 0; i < fn.Length; ++i )
{
char [] chars = fn [ i ].ToArray ();
chars [ 0 ] = char.ToUpper ( chars [ 0 ] );
fn [ i ] = new string ( chars );
}
file.ChangedFilename = $"{string.Join ( " ", fn )}{ext}";
}
break;
default: return false;
}
return true;
}
}
}