大体社内でPerlのことを書くのは私です。佐藤です。
結局5.14.1はインストールしてません。mod_perlとか入れなおすの面倒だし…(不精
Perlはいいですよね。データ型と対応する括弧({},[],())とかシジルが厳密d…
こういうことを話すと大体引かれるのが困った物なので適当なところにして、
最近ちょっとしたモジュールを書いてます。
以下説明とソースに続きます。
結局5.14.1はインストールしてません。mod_perlとか入れなおすの面倒だし…(不精
Perlはいいですよね。データ型と対応する括弧({},[],())とかシジルが厳密d…
こういうことを話すと大体引かれるのが困った物なので適当なところにして、
最近ちょっとしたモジュールを書いてます。
以下説明とソースに続きます。
=head1 DESCRIPTION
デザインとコードが混ざったコードって見づらくて、ちょっと書いたやつ出てk(ryって思いませんか。
特にPHPのechoだらけのレガシーコードとか、Tableレイアウト多用テンプレートとか。
僕は思ったので、建設的に、HTMLとCSSを分離させるようなモジュールを書こうかと思い立ちました。
多分広いCPANを見わたせば似たような上位互換なモジュールは存在して、
外人にDisられるオチにはなると思いますが、とりあえず作ってみればいいかなっていうスタンスですね!
最低自分では使うし!
後はついでにHTMLとCSSをくっつけてHTML内にスタイルを記述してくれるコードを書けば、
携帯用の見づらくてメンテしづらいコードを自分で作る必要がなくなりますよね!
動機、以上!
=cut
とりあえず下記に今出来ている、マージ部分のみを載せてみます。
テストも書いていないしで、エラーの塊だと思いますが興味がある方は続きも見てみてください。
以下ソース
デザインとコードが混ざったコードって見づらくて、ちょっと書いたやつ出てk(ryって思いませんか。
特にPHPのechoだらけのレガシーコードとか、Tableレイアウト多用テンプレートとか。
僕は思ったので、建設的に、HTMLとCSSを分離させるようなモジュールを書こうかと思い立ちました。
多分広いCPANを見わたせば似たような上位互換なモジュールは存在して、
外人にDisられるオチにはなると思いますが、とりあえず作ってみればいいかなっていうスタンスですね!
最低自分では使うし!
後はついでにHTMLとCSSをくっつけてHTML内にスタイルを記述してくれるコードを書けば、
携帯用の見づらくてメンテしづらいコードを自分で作る必要がなくなりますよね!
動機、以上!
=cut
とりあえず下記に今出来ている、マージ部分のみを載せてみます。
テストも書いていないしで、エラーの塊だと思いますが興味がある方は続きも見てみてください。
以下ソース
sub marge_styles{
my $styles = shift;
my %styles_class = %$styles;
my %return_style;
for my $class(keys %styles_class){
my %styles;
my @styles = @{$styles_class{$class}};
map{
if($_){
my @elements = split ';' , $_;
if(!%styles){
for(@elements){
my $element =(split ':',$_)[0];
my $value =(split ':',$_)[1];
$styles{$element} = $value;
}
}else{
my %tmp_styles;
for(@elements){
my $element =(split ':',$_)[0];
my $value =(split ':',$_)[1];
$tmp_styles{$element} = $value;
if($styles{$element} and $styles{$element} ne $value){
delete $styles{$element};
}
}
for my $element(keys %tmp_styles){
my $value = $tmp_styles{$element};
if($styles{$element} and $styles{$element} ne $value){
delete $styles{$element};
}
}
}
}
}@styles;
my $css = "";
for my $element(keys %styles){
my $value = $styles{$element};
$css .= $element . ':' . $value . ';';
}
$return_style{$class} = $css;
}
return \%return_style;
}