feature name
def feature_name(class_name)
class_name.split(/::/).map {|const|
const.scan(/[A-Z](?:(?![A-Z][a-z])[A-Za-z])*/).map {|i| i.downcase }.join("_")
}.join("/")
end
require "rubygems"
require "spec"
describe "feature_name" do
it "should generate filename from class_name" do
feature_name("A").should == "a"
feature_name("Foo").should == "foo"
feature_name("FooBar").should == "foo_bar"
feature_name("FOOBar").should == "foo_bar"
feature_name("Foo::Bar").should == "foo/bar"
feature_name("Foo::BarBaz").should == "foo/bar_baz"
end
end
def feature_name_(class_name)
class_name.split(/::/).map {|const|
const.downcase
}.join("/")
end
require "rubygems"
require "spec"
describe "feature_name_" do
it "should generate filename from class_name" do
feature_name_("A").should == "a"
feature_name_("Foo").should == "foo"
feature_name_("FooBar").should == "foobar"
feature_name_("FOOBar").should == "foobar"
feature_name_("Foo::Bar").should == "foo/bar"
feature_name_("Foo::BarBaz").should == "foo/barbaz"
end
endアンダースコアださいなぁ…… どうせ逆変換できないなら後者でいい感じかなぁ。。