61 lines
956 B
Perl
61 lines
956 B
Perl
#-*-perl-*-
|
|
|
|
package Unicode::GCString;
|
|
require 5.008;
|
|
|
|
=encoding utf-8
|
|
|
|
=cut
|
|
|
|
### Pragmas:
|
|
use strict;
|
|
use warnings;
|
|
use vars qw($VERSION @EXPORT_OK @ISA);
|
|
|
|
### Exporting:
|
|
use Exporter;
|
|
our @EXPORT_OK = qw();
|
|
our %EXPORT_TAGS = ('all' => [@EXPORT_OK]);
|
|
|
|
### Inheritance:
|
|
our @ISA = qw(Exporter);
|
|
|
|
### Other modules:
|
|
use Unicode::LineBreak;
|
|
|
|
### Globals
|
|
|
|
# The package version
|
|
our $VERSION = '2013.10';
|
|
|
|
use overload
|
|
'@{}' => \&as_arrayref,
|
|
'${}' => \&as_scalarref,
|
|
'""' => \&as_string,
|
|
'.' => \&concat,
|
|
#XXX'.=' => \&concat, #FIXME:segfault
|
|
'cmp' => \&cmp,
|
|
'<>' => \&next,
|
|
;
|
|
|
|
sub new {
|
|
my $class = shift;
|
|
|
|
my $self;
|
|
if (scalar @_ <= 2) {
|
|
$self = __PACKAGE__->_new(@_);
|
|
} else {
|
|
my $str = shift;
|
|
my $lb = Unicode::LineBreak->new(@_);
|
|
$self = __PACKAGE__->_new($str, $lb);
|
|
}
|
|
bless $self, $class;
|
|
}
|
|
|
|
sub as_arrayref {
|
|
my @a = shift->as_array;
|
|
return \@a;
|
|
}
|
|
|
|
1;
|