RubyonをC#で書き直す。

Rubyonというのは、うちのホームページで使っているルビ(ふりがな)タグ用のラッパーだ。アップロードする前にホームページ原稿を探し回り、[漢字<かんじ>]というパターンの記述(記号は半角)を発見したら、ただちにルビタグに書き換えるというものだ。

簡単なものなので、うちではRubyで書いて使っていた。これをC#で書き直してみる。

開発環境
MonoDevelop (MonoベースのIDEツール for Linux/Mac/Windows)
PC環境
Ubuntu Linux 8.10 (.NETなのでWindowsでも動くと思われる)
// Main.cs created with MonoDevelop
// User: username at 6:48 2009/02/04
//
// To change standard headers go to Edit->Preferences->Coding->Standard Headers
//
using System;
using System.IO;
using System.Text.RegularExpressions;
namespace rubyon
{
	class MainClass
	{

		static string rubyFilter(string str){
			string str2 = Regex.Replace(str,@"\[([^\[<>\]]+)<([^\[<>\]]+)>\]","<ruby><rb>$1</rb><rp>(</rp><rt>$2</rt><rp>)</rp></ruby>");
			return str2;
		}

		static string fileRead(string fn){
			string seq = "";
			// ファイルからテキストを読み出し。
			using(StreamReader r = new StreamReader(@fn)){
				string line;
				while( (line = r.ReadLine()) != null){
					// 1行ずつ読み出し。
					//Console.WriteLine(line);
					seq = seq + rubyFilter(line) + "\n";
				}
			}
			return seq;
		}

		static void fileWrite(string fn,string str){
			// ファイルにテキストを書き出し。
			using(StreamWriter w = new StreamWriter(@fn)){
				w.Write(str);
			}
		}

		public static void Main(string[] args)
		{
			Console.WriteLine("ディレクトリ情報です。");
			DirectoryInfo dir = new DirectoryInfo(".");
			foreach(FileInfo f in dir.GetFiles())
			{
				if(Regex.IsMatch(f.Name,".html$", RegexOptions.IgnoreCase)){
					string name = f.Name;
					string ext  = f.Extension;
					DateTime t = f.CreationTime;
					Console.WriteLine("{0}を処理します。({1}/{2})",name,ext,t.ToString("hh:mm:ss"));
					string str = fileRead(name);
					fileWrite(name,str);
				}
			}
		}
	}
}

どうかな。

現在あなたが見ているこのページは、既にこのC#版の改訂版で加工されている。ふ、バッチリだぜ B)