change regular expression in &de_er
[chise/perl.git] / Chise_utils / Chise_utils.pm
index 1c2aca0..5967978 100644 (file)
@@ -234,12 +234,15 @@ sub get_chars_for{
 sub de_er{
     my($er)=@_;
     my($output_char,$atr,$value);
+    my($prefix,$suffix);
+    $er=~/^(amp|&)?(.+?)(;)?$/
+       and $prefix=$1,$er=$2,$suffix=$3;
+    $prefix or $prefix="",$suffix or $suffix="";
     if($er=~/^\d+$/){
-       # only for debug.
        $output_char=pack("U",$er);
     }elsif($er=~/^U[\+\-]([a-fA-F\d]+)/){
        $output_char=pack("U",hex($1));
-    }elsif($er=~/(?:I\-)?($er_prefix_re)\-?([0-9a-fA-F]+)/){
+    }elsif($er=~/^(?:I\-)?($er_prefix_re)\-?([0-9a-fA-F]+)$/){
        ($atr,$value)=($1,$2);
        unless($er_alias{$atr}=~/daikanwa|gt/){
            $value=hex($value);
@@ -247,9 +250,9 @@ sub de_er{
        ($output_char)=&get_chars_matching($er_alias{$atr},$value);
     }
     if($output_char){
-      return $output_char;
+       return $output_char;
     }else{
-      return $er;
+       return $prefix.$er.$suffix;
     }
 }