Unicode-LineBreak
view release on metacpan or search on metacpan
lib/POD2/JA/Unicode/LineBreak.pod view on Meta::CPAN
"eol" |ä»»æåå² |åå²ä½ç½®ã®åã®ç©ºç½æå
"eop" |å¼·å¶åå² |æ¹è¡ã¨ãã®åã®ç©ºç½æå
"eot" |ããã¹ãçµç«¯ |ããã¹ãçµç«¯ã®ç©ºç½æå (ã¨æ¹è¡)
-----------------------------------------------------------------
ãµãã«ã¼ãã³ã¯ãããã¹ãã®æçãä¿®æ£ãã¦è¿ããªããã°ãªããªãããªã«ãä¿®æ£ããªãã£ããã¨ã示ãã«ã¯ãC<undef> ãè¿ãã°ããã
ãªããC<"sot">ãC<"sop">ãC<"sol"> ã®æèã§ã®ä¿®æ£ã¯ãã®å¾ã®åå²ä½ç½®ã®æ±ºå®ã«å½±é¿ããããã»ãã®æèã§ã®ä¿®æ£ã¯å½±é¿ããªãã
B<注æ>:
æååã®å¼æ°ã¯å®éã«ã¯æ¸è¨ç´ ã¯ã©ã¹ã¿åã§ããã
L<Unicode::GCString~[ja]> åç
§ã
ãã¨ãã°æ¬¡ã®ã³ã¼ãã¯ãè¡æ«ã®ç©ºç½ãåãé¤ãã¦è¡æããããã
sub fmt {
if ($_[1] =~ /^eo/) {
return "\n";
}
return undef;
}
my $lb = Unicode::LineBreak->new(Format => \&fmt);
$output = $lb->break($text);
=head2 ã¦ã¼ã¶å®ç¾©ã®è¡åå²åä½
ä»»æåå²ã«ãã£ã¦çããè¡ã CharMaxãColMaxãColMin ã®ããããã®å¶éãè¶
ããã¨è¦è¾¼ã¾ããã¨ãã¯ãå¼ãç¶ãæååã«å¯¾ãã¦B<ç·æ¥åå²>ãå®è¡ã§ããã
L</Urgent> ãªãã·ã§ã³ã«ãµãã«ã¼ãã³ã¸ã®åç
§ãæå®ããå ´åããã®ãµãã«ã¼ãã³ã¯ 2 ã¤ã®å¼æ°ãåããªããã°ãªããªãã
@åå²å¾ = &ãµãã«ã¼ãã³(SELF, STR);
SELF 㯠Unicode::LineBreak ãªãã¸ã§ã¯ããSTR ã¯åå²ãã¹ã Unicode æååã
ãµãã«ã¼ãã³ã¯ãæåå STR ãåå²ããçµæã®é
åãè¿ããªããã°ãªããªãã
B<注æ>:
æååã®å¼æ°ã¯å®éã«ã¯æ¸è¨ç´ ã¯ã©ã¹ã¿åã§ããã
L<Unicode::GCString~[ja]> åç
§ã
ãã¨ãã°æ¬¡ã®ã³ã¼ãã¯ãè¥å¹²ã®åå¦ç©è³ª (ããã³ã®ãããª) ã®åç§°ã«ãã¤ãã³ãæ¿å
¥ããè¡æãã§ããããã«ããã
sub hyphenize {
return map {$_ =~ s/yl$/yl-/; $_} split /(\w+?yl(?=\w))/, $_[1];
}
my $lb = Unicode::LineBreak->new(Urgent => \&hyphenize);
$output = $lb->break("Methionylthreonylthreonylglutaminylarginyl...");
L</Prep> ãªãã·ã§ã³ã« [REGEX, SUBREF] ã®é
ååç
§ãæå®ããå ´åããµãã«ã¼ãã³ã¯ 2 ã¤ã®å¼æ°ãåããªããã°ãªããªãã
@åå²å¾ = &ãµãã«ã¼ãã³(SELF, STR);
SELF 㯠Unicode::LineBreak ãªãã¸ã§ã¯ããSTR 㯠REGEX ã«ãããããåå²ãã¹ã Unicode æååã
ãµãã«ã¼ãã³ã¯ãæåå STR ãåå²ããçµæã®é
åãè¿ããªããã°ãªããªãã
ãã¨ãã°æ¬¡ã®ã³ã¼ãã¯ãHTTP URL ã [CMOS] ã®è¦åãç¨ãã¦åå²ããã
my $url = qr{http://[\x21-\x7E]+}i;
sub breakurl {
my $self = shift;
my $str = shift;
return split m{(?<=[/]) (?=[^/]) |
(?<=[^-.]) (?=[-~.,_?\#%=&]) |
(?<=[=&]) (?=.)}x, $str;
}
my $lb = Unicode::LineBreak->new(Prep => [$url, \&breakurl]);
$output = $lb->break($string);
=head3 ç¶æ
ã®ä¿å
Unicode::LineBreak ãªãã¸ã§ã¯ãã¯ããã·ã¥åç
§ã¨ãã¦ãµãã¾ãã
ä»»æã®è¦ç´ ãããªãã¸ã§ã¯ãã®å卿éä¸ä¿åã§ããã
ãã¨ãã°æ¬¡ã®ã³ã¼ãã¯ã段è½ã空è¡ã§åããã
sub paraformat {
my $self = shift;
my $action = shift;
my $str = shift;
if ($action eq 'sot' or $action eq 'sop') {
$self->{'line'} = '';
} elsif ($action eq '') {
$self->{'line'} = $str;
} elsif ($action eq 'eol') {
return "\n";
} elsif ($action eq 'eop') {
if (length $self->{'line'}) {
return "\n\n";
} else {
return "\n";
}
} elsif ($action eq 'eot') {
return "\n";
}
return undef;
}
my $lb = Unicode::LineBreak->new(Format => \¶format);
$output = $lb->break($string);
=head2 æååé·ã®ç®åº
L</Sizing> ãªãã·ã§ã³ã«ãµãã«ã¼ãã³ã¸ã®åç
§ãæå®ããå ´åããã®ãµãã«ã¼ãã³ã¯ 5 ã¤ã®å¼æ°ãåããªããã°ãªããªãã
$æ¡æ° = &ãµãã«ã¼ãã³(SELF, LEN, PRE, SPC, STR);
SELF 㯠Unicode::LineBreak ãªãã¸ã§ã¯ããLEN ã¯å
è¡ããæååã®é·ããPRE ã¯å
è¡ãã Unicode æååãSPC ã¯è¿½å ãããç©ºç½æåãSTR ã¯å¦çãã Unicode æååã
ãµãã«ã¼ãã³ã¯ C<PRE.SPC.STR> ã®æ¡æ°ãç®åºãã¦è¿ããªããã°ãªããªãã
æ¡æ°ã¯æ´æ°ã§ãªãã¦ããããæ¡æ°ã®åä½ã¯éæã«é¸ã¹ãããL</ColMin> ãªãã·ã§ã³ããã³ L</ColMax> ãªãã·ã§ã³ã®ããã¨ä¸è´ãããªããã°ãªããªãã
B<注æ>:
æååã®å¼æ°ã¯å®éã«ã¯æ¸è¨ç´ ã¯ã©ã¹ã¿åã§ããã
L<Unicode::GCString~[ja]> åç
§ã
ãã¨ãã°æ¬¡ã®ã³ã¼ãã¯ãè¡ã« 8 æ¡ãã¨ã®ã¿ãã¹ãããããããã®ã¨ãã¦å¦çããã
sub tabbedsizing {
my ($self, $cols, $pre, $spc, $str) = @_;
my $spcstr = $spc.$str;
while ($spcstr->lbc == LB_SP) {
( run in 0.699 second using v1.01-cache-2.11-cpan-71847e10f99 )