Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 03ea9764

Von Moritz Bunkus vor fast 17 Jahren hinzugefügt

  • ID 03ea97647e3fbdea4323f4f2136bdfa87cb15c1b
  • Vorgänger 29bdcb7e
  • Nachfolger 346e542f

Parser für besondere Zeichen in special_chars umgeschrieben.

Unterschiede anzeigen:

SL/Locale.pm
105 105
}
106 106

  
107 107
sub _handle_markup {
108
  my $self = shift;
109
  my $str  = shift;
108
  my $self    = shift;
109
  my $str     = shift;
110 110

  
111
  if ($str eq "\\n") {
112
    return "\n";
113
  } elsif ($str eq "\\r") {
114
    return "\r";
115
  }
111
  my $escaped = 0;
112
  my $new_str = '';
113

  
114
  for (my $i = 0; $i < length $str; $i++) {
115
    my $char = substr $str, $i, 1;
116

  
117
    if ($escaped) {
118
      if ($char eq 'n') {
119
        $new_str .= "\n";
116 120

  
117
  $str =~ s/\\x(..)/chr(hex($1))/eg;
118
  $str =~ s/\\(.)/$1/g;
121
      } elsif ($char eq 'r') {
122
        $new_str .= "\r";
119 123

  
120
  return $str;
124
      } elsif ($char eq 's') {
125
        $new_str .= ' ';
126

  
127
      } elsif ($char eq 'x') {
128
        $new_str .= chr(hex(substr($str, $i + 1, 2)));
129
        $i       += 2;
130

  
131
      } else {
132
        $new_str .= $char;
133
      }
134

  
135
      $escaped  = 0;
136

  
137
    } elsif ($char eq '\\') {
138
      $escaped  = 1;
139

  
140
    } else {
141
      $new_str .= $char;
142
    }
143
  }
144

  
145
  return $new_str;
121 146
}
122 147

  
123 148
sub _read_special_chars_file {
......
160 185
    $scmap->{order}                                            = [ map { $self->_handle_markup($_) } split m/\s+/, $order ];
161 186
    $self->{special_chars_map}->{"${format}-reverse"}->{order} = [ grep { $_ } map { $scmap->{$_} } reverse @{ $scmap->{order} } ];
162 187
  }
188

  
189
  $main::lxdebug->dump(0, "scm", $self->{special_chars_map});
163 190
}
164 191

  
165 192
sub text {

Auch abrufbar als: Unified diff