File Coverage

blib/lib/Hydrogen/String.pm
Criterion Covered Total %
statement 197 508 38.7
branch 93 510 18.2
condition 2 36 5.5
subroutine 24 54 44.4
pod 39 39 100.0
total 355 1147 30.9


line stmt bran cond sub pod time code
1             # This file was autogenerated.
2 5     5   205242 use 5.008001;
  5         18  
3 5     5   25 use strict;
  5         17  
  5         175  
4 5     5   22 use warnings;
  5         8  
  5         319  
5 5     5   25 no warnings qw( void once );
  5         10  
  5         213  
6 5     5   521 use Hydrogen ();
  5         29  
  5         630  
7              
8             package Hydrogen::String;
9              
10             our $AUTHORITY = 'cpan:TOBYINK';
11             our $VERSION = '0.021001';
12              
13             =head1 NAME
14              
15             Hydrogen::String - a standard library for strings
16              
17             =head1 VERSION
18              
19             This documentation is for Hydrogen::String 0.021001,
20             which is based on Sub::HandlesVia::HandlerLibrary::String 0.050005.
21              
22             =cut
23              
24             =head1 FUNCTIONS
25              
26             Each function expects a string scalar as its first argument.
27              
28             =cut
29              
30 5         41 use Exporter::Shiny qw(
31             append
32             chomp
33             chop
34             clear
35             cmp
36             cmpi
37             contains
38             contains_i
39             ends_with
40             ends_with_i
41             eq
42             eqi
43             fc
44             ge
45             gei
46             get
47             gt
48             gti
49             inc
50             lc
51             le
52             lei
53             length
54             lt
55             lti
56             match
57             match_i
58             ne
59             nei
60             prepend
61             replace
62             replace_globally
63             reset
64             set
65             starts_with
66             starts_with_i
67             substr
68             trim
69             uc
70 5     5   33 );
  5         13  
71              
72             =head2 C<< append( $string, $tail ) >>
73              
74             Additional arguments: B<< Str >>.
75              
76             Appends another string to the end of the current string and updates the original value.
77              
78             =cut
79              
80             sub append {
81 4     4 1 266194 my $__REF__ = \$_[0];
82              
83             package Hydrogen::String::__SANDBOX__;
84 4         6 @_ = do {
85 4         8 my ( %tmp, $tmp );
86              
87 4 50       12 @_ == 2
88             or Hydrogen::croak(
89             "Wrong number of parameters in signature for %s: got %d, %s",
90             "append", scalar(@_), "expected exactly 2 parameters" );
91              
92             # Parameter $_[0] (type: Str)
93 4 50       4 do {
94              
95             package Hydrogen::String::__SANDBOX__;
96 4 50       13 defined( $_[0] ) and do {
97 4 50       17 ref( \$_[0] ) eq 'SCALAR'
98             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
99             }
100             }
101             or Hydrogen::croak(
102             "Type check failed in signature for append: %s should be %s",
103             "\$_[0]", "Str" );
104              
105             # Parameter $_[1] (type: Str)
106 4 50       5 do {
107              
108             package Hydrogen::String::__SANDBOX__;
109 4 50       10 defined( $_[1] ) and do {
110 4 50       36 ref( \$_[1] ) eq 'SCALAR'
111             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
112             }
113             }
114             or Hydrogen::croak(
115             "Type check failed in signature for append: %s should be %s",
116             "\$_[1]", "Str" );
117              
118 4         13 (@_);
119             };
120             (
121 4         6 ${$__REF__} = do {
  4         11  
122 4         26 my $shv_final_unchecked = $$__REF__ . $_[1];
123 4         7 do {
124 4 50       6 do {
125              
126             package Hydrogen::String::__SANDBOX__;
127 4 50       11 defined($shv_final_unchecked) and do {
128 4 50       16 ref( \$shv_final_unchecked ) eq 'SCALAR'
129             or ref( \( my $val = $shv_final_unchecked ) ) eq
130             'SCALAR';
131             }
132             }
133             or Hydrogen::croak(
134             "Type check failed for append: expected %s, got value %s",
135             "Str", $shv_final_unchecked );
136 4         8 $shv_final_unchecked;
137             };
138             }
139             );
140             }
141              
142             =head2 C<< chomp( $string ) >>
143              
144             Like C from L.
145              
146             =cut
147              
148             sub chomp {
149 0     0 1 0 my $__REF__ = \$_[0];
150              
151             package Hydrogen::String::__SANDBOX__;
152 0 0       0 @_ == 1
153             or Hydrogen::croak( "Wrong number of parameters for chomp; usage: "
154             . "Hydrogen::String::chomp( \$string )" );
155 0         0 1;
156 0         0 chomp($$__REF__);
157             }
158              
159             =head2 C<< chop( $string ) >>
160              
161             Like C from L.
162              
163             =cut
164              
165             sub chop {
166 0     0 1 0 my $__REF__ = \$_[0];
167              
168             package Hydrogen::String::__SANDBOX__;
169 0 0       0 @_ == 1
170             or Hydrogen::croak( "Wrong number of parameters for chop; usage: "
171             . "Hydrogen::String::chop( \$string )" );
172 0         0 1;
173 0         0 chop($$__REF__);
174             }
175              
176             =head2 C<< clear( $string ) >>
177              
178             Sets the string to the empty string.
179              
180             =cut
181              
182             sub clear {
183 1     1 1 9686 my $__REF__ = \$_[0];
184              
185             package Hydrogen::String::__SANDBOX__;
186 1 50       6 @_ == 1
187             or Hydrogen::croak( "Wrong number of parameters for clear; usage: "
188             . "Hydrogen::String::clear( \$string )" );
189 1         2 1;
190 1         3 ( ${$__REF__} = q() );
  1         4  
191             }
192              
193             =head2 C<< cmp( $string, $str ) >>
194              
195             Additional arguments: B<< Str >>.
196              
197             Returns C<< $string cmp $str >>.
198              
199             =cut
200              
201             sub cmp {
202 0     0 1 0 my $__REF__ = \$_[0];
203              
204             package Hydrogen::String::__SANDBOX__;
205 0         0 @_ = do {
206 0         0 my ( %tmp, $tmp );
207              
208 0 0       0 @_ == 2
209             or Hydrogen::croak(
210             "Wrong number of parameters in signature for %s: got %d, %s",
211             "cmp", scalar(@_), "expected exactly 2 parameters" );
212              
213             # Parameter $_[0] (type: Str)
214 0 0       0 do {
215              
216             package Hydrogen::String::__SANDBOX__;
217 0 0       0 defined( $_[0] ) and do {
218 0 0       0 ref( \$_[0] ) eq 'SCALAR'
219             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
220             }
221             }
222             or Hydrogen::croak(
223             "Type check failed in signature for cmp: %s should be %s",
224             "\$_[0]", "Str" );
225              
226             # Parameter $_[1] (type: Str)
227 0 0       0 do {
228              
229             package Hydrogen::String::__SANDBOX__;
230 0 0       0 defined( $_[1] ) and do {
231 0 0       0 ref( \$_[1] ) eq 'SCALAR'
232             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
233             }
234             }
235             or Hydrogen::croak(
236             "Type check failed in signature for cmp: %s should be %s",
237             "\$_[1]", "Str" );
238              
239 0         0 (@_);
240             };
241 0         0 $$__REF__ cmp $_[1];
242             }
243              
244             =head2 C<< cmpi( $string, $str ) >>
245              
246             Additional arguments: B<< Str >>.
247              
248             Returns C<< fc($string) cmp fc($str) >>. Uses C instead of C in versions of Perl older than 5.16.
249              
250             =cut
251              
252             sub cmpi {
253 0     0 1 0 my $__REF__ = \$_[0];
254              
255             package Hydrogen::String::__SANDBOX__;
256 0         0 @_ = do {
257 0         0 my ( %tmp, $tmp );
258              
259 0 0       0 @_ == 2
260             or Hydrogen::croak(
261             "Wrong number of parameters in signature for %s: got %d, %s",
262             "cmpi", scalar(@_), "expected exactly 2 parameters" );
263              
264             # Parameter $_[0] (type: Str)
265 0 0       0 do {
266              
267             package Hydrogen::String::__SANDBOX__;
268 0 0       0 defined( $_[0] ) and do {
269 0 0       0 ref( \$_[0] ) eq 'SCALAR'
270             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
271             }
272             }
273             or Hydrogen::croak(
274             "Type check failed in signature for cmpi: %s should be %s",
275             "\$_[0]", "Str" );
276              
277             # Parameter $_[1] (type: Str)
278 0 0       0 do {
279              
280             package Hydrogen::String::__SANDBOX__;
281 0 0       0 defined( $_[1] ) and do {
282 0 0       0 ref( \$_[1] ) eq 'SCALAR'
283             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
284             }
285             }
286             or Hydrogen::croak(
287             "Type check failed in signature for cmpi: %s should be %s",
288             "\$_[1]", "Str" );
289              
290 0         0 (@_);
291             };
292 0         0 Hydrogen::fc($$__REF__) cmp Hydrogen::fc( $_[1] );
293             }
294              
295             =head2 C<< contains( $string, $str ) >>
296              
297             Additional arguments: B<< Str >>.
298              
299             Returns true iff the string contains C<< $str >>.
300              
301             =cut
302              
303             sub contains {
304 0     0 1 0 my $__REF__ = \$_[0];
305              
306             package Hydrogen::String::__SANDBOX__;
307 0         0 @_ = do {
308 0         0 my ( %tmp, $tmp );
309              
310 0 0       0 @_ == 2
311             or Hydrogen::croak(
312             "Wrong number of parameters in signature for %s: got %d, %s",
313             "contains", scalar(@_), "expected exactly 2 parameters" );
314              
315             # Parameter $_[0] (type: Str)
316 0 0       0 do {
317              
318             package Hydrogen::String::__SANDBOX__;
319 0 0       0 defined( $_[0] ) and do {
320 0 0       0 ref( \$_[0] ) eq 'SCALAR'
321             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
322             }
323             }
324             or Hydrogen::croak(
325             "Type check failed in signature for contains: %s should be %s",
326             "\$_[0]", "Str" );
327              
328             # Parameter $_[1] (type: Str)
329 0 0       0 do {
330              
331             package Hydrogen::String::__SANDBOX__;
332 0 0       0 defined( $_[1] ) and do {
333 0 0       0 ref( \$_[1] ) eq 'SCALAR'
334             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
335             }
336             }
337             or Hydrogen::croak(
338             "Type check failed in signature for contains: %s should be %s",
339             "\$_[1]", "Str" );
340              
341 0         0 (@_);
342             };
343 0         0 index( $$__REF__, $_[1] ) != -1;
344             }
345              
346             =head2 C<< contains_i( $string, $str ) >>
347              
348             Additional arguments: B<< Str >>.
349              
350             Returns true iff the string contains C<< $str >> case-insensitvely.
351              
352             =cut
353              
354             sub contains_i {
355 0     0 1 0 my $__REF__ = \$_[0];
356              
357             package Hydrogen::String::__SANDBOX__;
358 0         0 @_ = do {
359 0         0 my ( %tmp, $tmp );
360              
361 0 0       0 @_ == 2
362             or Hydrogen::croak(
363             "Wrong number of parameters in signature for %s: got %d, %s",
364             "contains_i", scalar(@_), "expected exactly 2 parameters" );
365              
366             # Parameter $_[0] (type: Str)
367 0 0       0 do {
368              
369             package Hydrogen::String::__SANDBOX__;
370 0 0       0 defined( $_[0] ) and do {
371 0 0       0 ref( \$_[0] ) eq 'SCALAR'
372             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
373             }
374             }
375             or Hydrogen::croak(
376             "Type check failed in signature for contains_i: %s should be %s",
377             "\$_[0]", "Str" );
378              
379             # Parameter $_[1] (type: Str)
380 0 0       0 do {
381              
382             package Hydrogen::String::__SANDBOX__;
383 0 0       0 defined( $_[1] ) and do {
384 0 0       0 ref( \$_[1] ) eq 'SCALAR'
385             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
386             }
387             }
388             or Hydrogen::croak(
389             "Type check failed in signature for contains_i: %s should be %s",
390             "\$_[1]", "Str" );
391              
392 0         0 (@_);
393             };
394 0         0 index( Hydrogen::fc($$__REF__), Hydrogen::fc( $_[1] ) ) != -1;
395             }
396              
397             =head2 C<< ends_with( $string, $tail ) >>
398              
399             Additional arguments: B<< Str >>.
400              
401             Returns true iff the string ends with C<< $tail >>.
402              
403             =cut
404              
405             sub ends_with {
406 0     0 1 0 my $__REF__ = \$_[0];
407              
408             package Hydrogen::String::__SANDBOX__;
409 0         0 @_ = do {
410 0         0 my ( %tmp, $tmp );
411              
412 0 0       0 @_ == 2
413             or Hydrogen::croak(
414             "Wrong number of parameters in signature for %s: got %d, %s",
415             "ends_with", scalar(@_), "expected exactly 2 parameters" );
416              
417             # Parameter $_[0] (type: Str)
418 0 0       0 do {
419              
420             package Hydrogen::String::__SANDBOX__;
421 0 0       0 defined( $_[0] ) and do {
422 0 0       0 ref( \$_[0] ) eq 'SCALAR'
423             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
424             }
425             }
426             or Hydrogen::croak(
427             "Type check failed in signature for ends_with: %s should be %s",
428             "\$_[0]", "Str" );
429              
430             # Parameter $_[1] (type: Str)
431 0 0       0 do {
432              
433             package Hydrogen::String::__SANDBOX__;
434 0 0       0 defined( $_[1] ) and do {
435 0 0       0 ref( \$_[1] ) eq 'SCALAR'
436             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
437             }
438             }
439             or Hydrogen::croak(
440             "Type check failed in signature for ends_with: %s should be %s",
441             "\$_[1]", "Str" );
442              
443 0         0 (@_);
444             };
445 0         0 substr( $$__REF__, -length $_[1] ) eq $_[1];
446             }
447              
448             =head2 C<< ends_with_i( $string, $tail ) >>
449              
450             Additional arguments: B<< Str >>.
451              
452             Returns true iff the string ends with C<< $tail >> case-insensitvely.
453              
454             =cut
455              
456             sub ends_with_i {
457 0     0 1 0 my $__REF__ = \$_[0];
458              
459             package Hydrogen::String::__SANDBOX__;
460 0         0 @_ = do {
461 0         0 my ( %tmp, $tmp );
462              
463 0 0       0 @_ == 2
464             or Hydrogen::croak(
465             "Wrong number of parameters in signature for %s: got %d, %s",
466             "ends_with_i", scalar(@_), "expected exactly 2 parameters" );
467              
468             # Parameter $_[0] (type: Str)
469 0 0       0 do {
470              
471             package Hydrogen::String::__SANDBOX__;
472 0 0       0 defined( $_[0] ) and do {
473 0 0       0 ref( \$_[0] ) eq 'SCALAR'
474             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
475             }
476             }
477             or Hydrogen::croak(
478             "Type check failed in signature for ends_with_i: %s should be %s",
479             "\$_[0]", "Str" );
480              
481             # Parameter $_[1] (type: Str)
482 0 0       0 do {
483              
484             package Hydrogen::String::__SANDBOX__;
485 0 0       0 defined( $_[1] ) and do {
486 0 0       0 ref( \$_[1] ) eq 'SCALAR'
487             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
488             }
489             }
490             or Hydrogen::croak(
491             "Type check failed in signature for ends_with_i: %s should be %s",
492             "\$_[1]", "Str" );
493              
494 0         0 (@_);
495             };
496 0         0 Hydrogen::fc( substr( $$__REF__, -length $_[1] ) ) eq Hydrogen::fc( $_[1] );
497             }
498              
499             =head2 C<< eq( $string, $str ) >>
500              
501             Additional arguments: B<< Str >>.
502              
503             Returns C<< $string eq $str >>.
504              
505             =cut
506              
507             sub eq {
508 0     0 1 0 my $__REF__ = \$_[0];
509              
510             package Hydrogen::String::__SANDBOX__;
511 0         0 @_ = do {
512 0         0 my ( %tmp, $tmp );
513              
514 0 0       0 @_ == 2
515             or Hydrogen::croak(
516             "Wrong number of parameters in signature for %s: got %d, %s",
517             "eq", scalar(@_), "expected exactly 2 parameters" );
518              
519             # Parameter $_[0] (type: Str)
520 0 0       0 do {
521              
522             package Hydrogen::String::__SANDBOX__;
523 0 0       0 defined( $_[0] ) and do {
524 0 0       0 ref( \$_[0] ) eq 'SCALAR'
525             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
526             }
527             }
528             or Hydrogen::croak(
529             "Type check failed in signature for eq: %s should be %s",
530             "\$_[0]", "Str" );
531              
532             # Parameter $_[1] (type: Str)
533 0 0       0 do {
534              
535             package Hydrogen::String::__SANDBOX__;
536 0 0       0 defined( $_[1] ) and do {
537 0 0       0 ref( \$_[1] ) eq 'SCALAR'
538             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
539             }
540             }
541             or Hydrogen::croak(
542             "Type check failed in signature for eq: %s should be %s",
543             "\$_[1]", "Str" );
544              
545 0         0 (@_);
546             };
547 0         0 $$__REF__ eq $_[1];
548             }
549              
550             =head2 C<< eqi( $string, $str ) >>
551              
552             Additional arguments: B<< Str >>.
553              
554             Returns C<< fc($string) eq fc($str) >>. Uses C instead of C in versions of Perl older than 5.16.
555              
556             =cut
557              
558             sub eqi {
559 0     0 1 0 my $__REF__ = \$_[0];
560              
561             package Hydrogen::String::__SANDBOX__;
562 0         0 @_ = do {
563 0         0 my ( %tmp, $tmp );
564              
565 0 0       0 @_ == 2
566             or Hydrogen::croak(
567             "Wrong number of parameters in signature for %s: got %d, %s",
568             "eqi", scalar(@_), "expected exactly 2 parameters" );
569              
570             # Parameter $_[0] (type: Str)
571 0 0       0 do {
572              
573             package Hydrogen::String::__SANDBOX__;
574 0 0       0 defined( $_[0] ) and do {
575 0 0       0 ref( \$_[0] ) eq 'SCALAR'
576             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
577             }
578             }
579             or Hydrogen::croak(
580             "Type check failed in signature for eqi: %s should be %s",
581             "\$_[0]", "Str" );
582              
583             # Parameter $_[1] (type: Str)
584 0 0       0 do {
585              
586             package Hydrogen::String::__SANDBOX__;
587 0 0       0 defined( $_[1] ) and do {
588 0 0       0 ref( \$_[1] ) eq 'SCALAR'
589             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
590             }
591             }
592             or Hydrogen::croak(
593             "Type check failed in signature for eqi: %s should be %s",
594             "\$_[1]", "Str" );
595              
596 0         0 (@_);
597             };
598 0         0 Hydrogen::fc($$__REF__) eq Hydrogen::fc( $_[1] );
599             }
600              
601             =head2 C<< fc( $string ) >>
602              
603             Returns C<< fc($string) >>.
604              
605             =cut
606              
607             sub fc {
608 0     0 1 0 my $__REF__ = \$_[0];
609              
610             package Hydrogen::String::__SANDBOX__;
611 0 0       0 @_ == 1
612             or Hydrogen::croak( "Wrong number of parameters for fc; usage: "
613             . "Hydrogen::String::fc( \$string )" );
614 0         0 Hydrogen::fc($$__REF__);
615             }
616              
617             =head2 C<< ge( $string, $str ) >>
618              
619             Additional arguments: B<< Str >>.
620              
621             Returns C<< $string ge $str >>.
622              
623             =cut
624              
625             sub ge {
626 0     0 1 0 my $__REF__ = \$_[0];
627              
628             package Hydrogen::String::__SANDBOX__;
629 0         0 @_ = do {
630 0         0 my ( %tmp, $tmp );
631              
632 0 0       0 @_ == 2
633             or Hydrogen::croak(
634             "Wrong number of parameters in signature for %s: got %d, %s",
635             "ge", scalar(@_), "expected exactly 2 parameters" );
636              
637             # Parameter $_[0] (type: Str)
638 0 0       0 do {
639              
640             package Hydrogen::String::__SANDBOX__;
641 0 0       0 defined( $_[0] ) and do {
642 0 0       0 ref( \$_[0] ) eq 'SCALAR'
643             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
644             }
645             }
646             or Hydrogen::croak(
647             "Type check failed in signature for ge: %s should be %s",
648             "\$_[0]", "Str" );
649              
650             # Parameter $_[1] (type: Str)
651 0 0       0 do {
652              
653             package Hydrogen::String::__SANDBOX__;
654 0 0       0 defined( $_[1] ) and do {
655 0 0       0 ref( \$_[1] ) eq 'SCALAR'
656             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
657             }
658             }
659             or Hydrogen::croak(
660             "Type check failed in signature for ge: %s should be %s",
661             "\$_[1]", "Str" );
662              
663 0         0 (@_);
664             };
665 0         0 $$__REF__ ge $_[1];
666             }
667              
668             =head2 C<< gei( $string, $str ) >>
669              
670             Additional arguments: B<< Str >>.
671              
672             Returns C<< fc($string) ge fc($str) >>. Uses C instead of C in versions of Perl older than 5.16.
673              
674             =cut
675              
676             sub gei {
677 0     0 1 0 my $__REF__ = \$_[0];
678              
679             package Hydrogen::String::__SANDBOX__;
680 0         0 @_ = do {
681 0         0 my ( %tmp, $tmp );
682              
683 0 0       0 @_ == 2
684             or Hydrogen::croak(
685             "Wrong number of parameters in signature for %s: got %d, %s",
686             "gei", scalar(@_), "expected exactly 2 parameters" );
687              
688             # Parameter $_[0] (type: Str)
689 0 0       0 do {
690              
691             package Hydrogen::String::__SANDBOX__;
692 0 0       0 defined( $_[0] ) and do {
693 0 0       0 ref( \$_[0] ) eq 'SCALAR'
694             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
695             }
696             }
697             or Hydrogen::croak(
698             "Type check failed in signature for gei: %s should be %s",
699             "\$_[0]", "Str" );
700              
701             # Parameter $_[1] (type: Str)
702 0 0       0 do {
703              
704             package Hydrogen::String::__SANDBOX__;
705 0 0       0 defined( $_[1] ) and do {
706 0 0       0 ref( \$_[1] ) eq 'SCALAR'
707             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
708             }
709             }
710             or Hydrogen::croak(
711             "Type check failed in signature for gei: %s should be %s",
712             "\$_[1]", "Str" );
713              
714 0         0 (@_);
715             };
716 0         0 Hydrogen::fc($$__REF__) ge Hydrogen::fc( $_[1] );
717             }
718              
719             =head2 C<< get( $string ) >>
720              
721             Gets the current value of the string.
722              
723             =cut
724              
725             sub get {
726 1     1 1 33658 my $__REF__ = \$_[0];
727              
728             package Hydrogen::String::__SANDBOX__;
729 1 50       4 @_ == 1
730             or Hydrogen::croak( "Wrong number of parameters for get; usage: "
731             . "Hydrogen::String::get( \$string )" );
732 1         7 $$__REF__;
733             }
734              
735             =head2 C<< gt( $string, $str ) >>
736              
737             Additional arguments: B<< Str >>.
738              
739             Returns C<< $string gt $str >>.
740              
741             =cut
742              
743             sub gt {
744 0     0 1 0 my $__REF__ = \$_[0];
745              
746             package Hydrogen::String::__SANDBOX__;
747 0         0 @_ = do {
748 0         0 my ( %tmp, $tmp );
749              
750 0 0       0 @_ == 2
751             or Hydrogen::croak(
752             "Wrong number of parameters in signature for %s: got %d, %s",
753             "gt", scalar(@_), "expected exactly 2 parameters" );
754              
755             # Parameter $_[0] (type: Str)
756 0 0       0 do {
757              
758             package Hydrogen::String::__SANDBOX__;
759 0 0       0 defined( $_[0] ) and do {
760 0 0       0 ref( \$_[0] ) eq 'SCALAR'
761             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
762             }
763             }
764             or Hydrogen::croak(
765             "Type check failed in signature for gt: %s should be %s",
766             "\$_[0]", "Str" );
767              
768             # Parameter $_[1] (type: Str)
769 0 0       0 do {
770              
771             package Hydrogen::String::__SANDBOX__;
772 0 0       0 defined( $_[1] ) and do {
773 0 0       0 ref( \$_[1] ) eq 'SCALAR'
774             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
775             }
776             }
777             or Hydrogen::croak(
778             "Type check failed in signature for gt: %s should be %s",
779             "\$_[1]", "Str" );
780              
781 0         0 (@_);
782             };
783 0         0 $$__REF__ gt $_[1];
784             }
785              
786             =head2 C<< gti( $string, $str ) >>
787              
788             Additional arguments: B<< Str >>.
789              
790             Returns C<< fc($string) gt fc($str) >>. Uses C instead of C in versions of Perl older than 5.16.
791              
792             =cut
793              
794             sub gti {
795 0     0 1 0 my $__REF__ = \$_[0];
796              
797             package Hydrogen::String::__SANDBOX__;
798 0         0 @_ = do {
799 0         0 my ( %tmp, $tmp );
800              
801 0 0       0 @_ == 2
802             or Hydrogen::croak(
803             "Wrong number of parameters in signature for %s: got %d, %s",
804             "gti", scalar(@_), "expected exactly 2 parameters" );
805              
806             # Parameter $_[0] (type: Str)
807 0 0       0 do {
808              
809             package Hydrogen::String::__SANDBOX__;
810 0 0       0 defined( $_[0] ) and do {
811 0 0       0 ref( \$_[0] ) eq 'SCALAR'
812             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
813             }
814             }
815             or Hydrogen::croak(
816             "Type check failed in signature for gti: %s should be %s",
817             "\$_[0]", "Str" );
818              
819             # Parameter $_[1] (type: Str)
820 0 0       0 do {
821              
822             package Hydrogen::String::__SANDBOX__;
823 0 0       0 defined( $_[1] ) and do {
824 0 0       0 ref( \$_[1] ) eq 'SCALAR'
825             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
826             }
827             }
828             or Hydrogen::croak(
829             "Type check failed in signature for gti: %s should be %s",
830             "\$_[1]", "Str" );
831              
832 0         0 (@_);
833             };
834 0         0 Hydrogen::fc($$__REF__) gt Hydrogen::fc( $_[1] );
835             }
836              
837             =head2 C<< inc( $string ) >>
838              
839             Performs C<< ++ >> on the string.
840              
841             =cut
842              
843             sub inc {
844 0     0 1 0 my $__REF__ = \$_[0];
845              
846             package Hydrogen::String::__SANDBOX__;
847 0 0       0 @_ == 1
848             or Hydrogen::croak( "Wrong number of parameters for inc; usage: "
849             . "Hydrogen::String::inc( \$string )" );
850 0         0 1;
851 0         0 ++$$__REF__;
852             }
853              
854             =head2 C<< lc( $string ) >>
855              
856             Returns C<< lc($string) >>.
857              
858             =cut
859              
860             sub lc {
861 0     0 1 0 my $__REF__ = \$_[0];
862              
863             package Hydrogen::String::__SANDBOX__;
864 0 0       0 @_ == 1
865             or Hydrogen::croak( "Wrong number of parameters for lc; usage: "
866             . "Hydrogen::String::lc( \$string )" );
867 0         0 lc($$__REF__);
868             }
869              
870             =head2 C<< le( $string, $str ) >>
871              
872             Additional arguments: B<< Str >>.
873              
874             Returns C<< $string le $str >>.
875              
876             =cut
877              
878             sub le {
879 0     0 1 0 my $__REF__ = \$_[0];
880              
881             package Hydrogen::String::__SANDBOX__;
882 0         0 @_ = do {
883 0         0 my ( %tmp, $tmp );
884              
885 0 0       0 @_ == 2
886             or Hydrogen::croak(
887             "Wrong number of parameters in signature for %s: got %d, %s",
888             "le", scalar(@_), "expected exactly 2 parameters" );
889              
890             # Parameter $_[0] (type: Str)
891 0 0       0 do {
892              
893             package Hydrogen::String::__SANDBOX__;
894 0 0       0 defined( $_[0] ) and do {
895 0 0       0 ref( \$_[0] ) eq 'SCALAR'
896             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
897             }
898             }
899             or Hydrogen::croak(
900             "Type check failed in signature for le: %s should be %s",
901             "\$_[0]", "Str" );
902              
903             # Parameter $_[1] (type: Str)
904 0 0       0 do {
905              
906             package Hydrogen::String::__SANDBOX__;
907 0 0       0 defined( $_[1] ) and do {
908 0 0       0 ref( \$_[1] ) eq 'SCALAR'
909             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
910             }
911             }
912             or Hydrogen::croak(
913             "Type check failed in signature for le: %s should be %s",
914             "\$_[1]", "Str" );
915              
916 0         0 (@_);
917             };
918 0         0 $$__REF__ le $_[1];
919             }
920              
921             =head2 C<< lei( $string, $str ) >>
922              
923             Additional arguments: B<< Str >>.
924              
925             Returns C<< fc($string) le fc($str) >>. Uses C instead of C in versions of Perl older than 5.16.
926              
927             =cut
928              
929             sub lei {
930 0     0 1 0 my $__REF__ = \$_[0];
931              
932             package Hydrogen::String::__SANDBOX__;
933 0         0 @_ = do {
934 0         0 my ( %tmp, $tmp );
935              
936 0 0       0 @_ == 2
937             or Hydrogen::croak(
938             "Wrong number of parameters in signature for %s: got %d, %s",
939             "lei", scalar(@_), "expected exactly 2 parameters" );
940              
941             # Parameter $_[0] (type: Str)
942 0 0       0 do {
943              
944             package Hydrogen::String::__SANDBOX__;
945 0 0       0 defined( $_[0] ) and do {
946 0 0       0 ref( \$_[0] ) eq 'SCALAR'
947             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
948             }
949             }
950             or Hydrogen::croak(
951             "Type check failed in signature for lei: %s should be %s",
952             "\$_[0]", "Str" );
953              
954             # Parameter $_[1] (type: Str)
955 0 0       0 do {
956              
957             package Hydrogen::String::__SANDBOX__;
958 0 0       0 defined( $_[1] ) and do {
959 0 0       0 ref( \$_[1] ) eq 'SCALAR'
960             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
961             }
962             }
963             or Hydrogen::croak(
964             "Type check failed in signature for lei: %s should be %s",
965             "\$_[1]", "Str" );
966              
967 0         0 (@_);
968             };
969 0         0 Hydrogen::fc($$__REF__) le Hydrogen::fc( $_[1] );
970             }
971              
972             =head2 C<< length( $string ) >>
973              
974             Like C from L.
975              
976             =cut
977              
978             sub length {
979 1     1 1 9769 my $__REF__ = \$_[0];
980              
981             package Hydrogen::String::__SANDBOX__;
982 1 50       5 @_ == 1
983             or Hydrogen::croak( "Wrong number of parameters for length; usage: "
984             . "Hydrogen::String::length( \$string )" );
985 1         5 length($$__REF__);
986             }
987              
988             =head2 C<< lt( $string, $str ) >>
989              
990             Additional arguments: B<< Str >>.
991              
992             Returns C<< $string lt $str >>.
993              
994             =cut
995              
996             sub lt {
997 0     0 1 0 my $__REF__ = \$_[0];
998              
999             package Hydrogen::String::__SANDBOX__;
1000 0         0 @_ = do {
1001 0         0 my ( %tmp, $tmp );
1002              
1003 0 0       0 @_ == 2
1004             or Hydrogen::croak(
1005             "Wrong number of parameters in signature for %s: got %d, %s",
1006             "lt", scalar(@_), "expected exactly 2 parameters" );
1007              
1008             # Parameter $_[0] (type: Str)
1009 0 0       0 do {
1010              
1011             package Hydrogen::String::__SANDBOX__;
1012 0 0       0 defined( $_[0] ) and do {
1013 0 0       0 ref( \$_[0] ) eq 'SCALAR'
1014             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1015             }
1016             }
1017             or Hydrogen::croak(
1018             "Type check failed in signature for lt: %s should be %s",
1019             "\$_[0]", "Str" );
1020              
1021             # Parameter $_[1] (type: Str)
1022 0 0       0 do {
1023              
1024             package Hydrogen::String::__SANDBOX__;
1025 0 0       0 defined( $_[1] ) and do {
1026 0 0       0 ref( \$_[1] ) eq 'SCALAR'
1027             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1028             }
1029             }
1030             or Hydrogen::croak(
1031             "Type check failed in signature for lt: %s should be %s",
1032             "\$_[1]", "Str" );
1033              
1034 0         0 (@_);
1035             };
1036 0         0 $$__REF__ lt $_[1];
1037             }
1038              
1039             =head2 C<< lti( $string, $str ) >>
1040              
1041             Additional arguments: B<< Str >>.
1042              
1043             Returns C<< fc($string) lt fc($str) >>. Uses C instead of C in versions of Perl older than 5.16.
1044              
1045             =cut
1046              
1047             sub lti {
1048 0     0 1 0 my $__REF__ = \$_[0];
1049              
1050             package Hydrogen::String::__SANDBOX__;
1051 0         0 @_ = do {
1052 0         0 my ( %tmp, $tmp );
1053              
1054 0 0       0 @_ == 2
1055             or Hydrogen::croak(
1056             "Wrong number of parameters in signature for %s: got %d, %s",
1057             "lti", scalar(@_), "expected exactly 2 parameters" );
1058              
1059             # Parameter $_[0] (type: Str)
1060 0 0       0 do {
1061              
1062             package Hydrogen::String::__SANDBOX__;
1063 0 0       0 defined( $_[0] ) and do {
1064 0 0       0 ref( \$_[0] ) eq 'SCALAR'
1065             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1066             }
1067             }
1068             or Hydrogen::croak(
1069             "Type check failed in signature for lti: %s should be %s",
1070             "\$_[0]", "Str" );
1071              
1072             # Parameter $_[1] (type: Str)
1073 0 0       0 do {
1074              
1075             package Hydrogen::String::__SANDBOX__;
1076 0 0       0 defined( $_[1] ) and do {
1077 0 0       0 ref( \$_[1] ) eq 'SCALAR'
1078             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1079             }
1080             }
1081             or Hydrogen::croak(
1082             "Type check failed in signature for lti: %s should be %s",
1083             "\$_[1]", "Str" );
1084              
1085 0         0 (@_);
1086             };
1087 0         0 Hydrogen::fc($$__REF__) lt Hydrogen::fc( $_[1] );
1088             }
1089              
1090             =head2 C<< match( $string, $regexp ) >>
1091              
1092             Additional arguments: B<< Str|RegexpRef >>.
1093              
1094             Returns true iff the string matches the regexp.
1095              
1096             =cut
1097              
1098             sub match {
1099 1     1 1 4583 my $__REF__ = \$_[0];
1100              
1101             package Hydrogen::String::__SANDBOX__;
1102 1         2 @_ = do {
1103 1         2 my ( %tmp, $tmp );
1104              
1105 1 50       3 @_ == 2
1106             or Hydrogen::croak(
1107             "Wrong number of parameters in signature for %s: got %d, %s",
1108             "match", scalar(@_), "expected exactly 2 parameters" );
1109              
1110             # Parameter $_[0] (type: Str)
1111 1 50       2 do {
1112              
1113             package Hydrogen::String::__SANDBOX__;
1114 1 50       4 defined( $_[0] ) and do {
1115 1 50       6 ref( \$_[0] ) eq 'SCALAR'
1116             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1117             }
1118             }
1119             or Hydrogen::croak(
1120             "Type check failed in signature for match: %s should be %s",
1121             "\$_[0]", "Str" );
1122              
1123             # Parameter $_[1] (type: Str|RegexpRef)
1124 1 50       1 do {
1125              
1126             package Hydrogen::String::__SANDBOX__;
1127             (
1128             do {
1129              
1130             package Hydrogen::String::__SANDBOX__;
1131 1 50       4 defined( $_[1] ) and do {
1132 1 50       5 ref( \$_[1] ) eq 'SCALAR'
1133             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1134             }
1135             }
1136             or (
1137 1 50       1 do {
1138              
1139             package Hydrogen::String::__SANDBOX__;
1140 5     5   27007 use Scalar::Util ();
  5         12  
  5         155  
1141 5     5   41 use re ();
  5         11  
  5         1885  
1142 0 0 0     0 ref( $_[1] ) && !!re::is_regexp( $_[1] )
      0        
1143             or Scalar::Util::blessed( $_[1] )
1144             && $_[1]->isa('Regexp');
1145             }
1146             )
1147             );
1148             }
1149             or Hydrogen::croak(
1150             "Type check failed in signature for match: %s should be %s",
1151             "\$_[1]", "Str|RegexpRef" );
1152              
1153 1         4 (@_);
1154             };
1155 1         21 $$__REF__ =~ /$_[1]/;
1156             }
1157              
1158             =head2 C<< match_i( $string, $regexp ) >>
1159              
1160             Additional arguments: B<< Str|RegexpRef >>.
1161              
1162             Returns true iff the string matches the regexp case-insensitively.
1163              
1164             =cut
1165              
1166             sub match_i {
1167 1     1 1 2023 my $__REF__ = \$_[0];
1168              
1169             package Hydrogen::String::__SANDBOX__;
1170 1         2 @_ = do {
1171 1         1 my ( %tmp, $tmp );
1172              
1173 1 50       4 @_ == 2
1174             or Hydrogen::croak(
1175             "Wrong number of parameters in signature for %s: got %d, %s",
1176             "match_i", scalar(@_), "expected exactly 2 parameters" );
1177              
1178             # Parameter $_[0] (type: Str)
1179 1 50       1 do {
1180              
1181             package Hydrogen::String::__SANDBOX__;
1182 1 50       4 defined( $_[0] ) and do {
1183 1 50       27 ref( \$_[0] ) eq 'SCALAR'
1184             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1185             }
1186             }
1187             or Hydrogen::croak(
1188             "Type check failed in signature for match_i: %s should be %s",
1189             "\$_[0]", "Str" );
1190              
1191             # Parameter $_[1] (type: Str|RegexpRef)
1192 1 50       2 do {
1193              
1194             package Hydrogen::String::__SANDBOX__;
1195             (
1196             do {
1197              
1198             package Hydrogen::String::__SANDBOX__;
1199 1 50       4 defined( $_[1] ) and do {
1200 1 50       6 ref( \$_[1] ) eq 'SCALAR'
1201             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1202             }
1203             }
1204             or (
1205 1 50       1 do {
1206              
1207             package Hydrogen::String::__SANDBOX__;
1208 5     5   43 use Scalar::Util ();
  5         66  
  5         162  
1209 5     5   29 use re ();
  5         25  
  5         6088  
1210 0 0 0     0 ref( $_[1] ) && !!re::is_regexp( $_[1] )
      0        
1211             or Scalar::Util::blessed( $_[1] )
1212             && $_[1]->isa('Regexp');
1213             }
1214             )
1215             );
1216             }
1217             or Hydrogen::croak(
1218             "Type check failed in signature for match_i: %s should be %s",
1219             "\$_[1]", "Str|RegexpRef" );
1220              
1221 1         3 (@_);
1222             };
1223 1         19 $$__REF__ =~ /$_[1]/i;
1224             }
1225              
1226             =head2 C<< ne( $string, $str ) >>
1227              
1228             Additional arguments: B<< Str >>.
1229              
1230             Returns C<< $string ne $str >>.
1231              
1232             =cut
1233              
1234             sub ne {
1235 0     0 1 0 my $__REF__ = \$_[0];
1236              
1237             package Hydrogen::String::__SANDBOX__;
1238 0         0 @_ = do {
1239 0         0 my ( %tmp, $tmp );
1240              
1241 0 0       0 @_ == 2
1242             or Hydrogen::croak(
1243             "Wrong number of parameters in signature for %s: got %d, %s",
1244             "ne", scalar(@_), "expected exactly 2 parameters" );
1245              
1246             # Parameter $_[0] (type: Str)
1247 0 0       0 do {
1248              
1249             package Hydrogen::String::__SANDBOX__;
1250 0 0       0 defined( $_[0] ) and do {
1251 0 0       0 ref( \$_[0] ) eq 'SCALAR'
1252             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1253             }
1254             }
1255             or Hydrogen::croak(
1256             "Type check failed in signature for ne: %s should be %s",
1257             "\$_[0]", "Str" );
1258              
1259             # Parameter $_[1] (type: Str)
1260 0 0       0 do {
1261              
1262             package Hydrogen::String::__SANDBOX__;
1263 0 0       0 defined( $_[1] ) and do {
1264 0 0       0 ref( \$_[1] ) eq 'SCALAR'
1265             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1266             }
1267             }
1268             or Hydrogen::croak(
1269             "Type check failed in signature for ne: %s should be %s",
1270             "\$_[1]", "Str" );
1271              
1272 0         0 (@_);
1273             };
1274 0         0 $$__REF__ ne $_[1];
1275             }
1276              
1277             =head2 C<< nei( $string, $str ) >>
1278              
1279             Additional arguments: B<< Str >>.
1280              
1281             Returns C<< fc($string) ne fc($str) >>. Uses C instead of C in versions of Perl older than 5.16.
1282              
1283             =cut
1284              
1285             sub nei {
1286 0     0 1 0 my $__REF__ = \$_[0];
1287              
1288             package Hydrogen::String::__SANDBOX__;
1289 0         0 @_ = do {
1290 0         0 my ( %tmp, $tmp );
1291              
1292 0 0       0 @_ == 2
1293             or Hydrogen::croak(
1294             "Wrong number of parameters in signature for %s: got %d, %s",
1295             "nei", scalar(@_), "expected exactly 2 parameters" );
1296              
1297             # Parameter $_[0] (type: Str)
1298 0 0       0 do {
1299              
1300             package Hydrogen::String::__SANDBOX__;
1301 0 0       0 defined( $_[0] ) and do {
1302 0 0       0 ref( \$_[0] ) eq 'SCALAR'
1303             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1304             }
1305             }
1306             or Hydrogen::croak(
1307             "Type check failed in signature for nei: %s should be %s",
1308             "\$_[0]", "Str" );
1309              
1310             # Parameter $_[1] (type: Str)
1311 0 0       0 do {
1312              
1313             package Hydrogen::String::__SANDBOX__;
1314 0 0       0 defined( $_[1] ) and do {
1315 0 0       0 ref( \$_[1] ) eq 'SCALAR'
1316             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1317             }
1318             }
1319             or Hydrogen::croak(
1320             "Type check failed in signature for nei: %s should be %s",
1321             "\$_[1]", "Str" );
1322              
1323 0         0 (@_);
1324             };
1325 0         0 Hydrogen::fc($$__REF__) ne Hydrogen::fc( $_[1] );
1326             }
1327              
1328             =head2 C<< prepend( $string, $head ) >>
1329              
1330             Additional arguments: B<< Str >>.
1331              
1332             Prepends another string to the start of the current string and updates the original value.
1333              
1334             =cut
1335              
1336             sub prepend {
1337 1     1 1 4536 my $__REF__ = \$_[0];
1338              
1339             package Hydrogen::String::__SANDBOX__;
1340 1         2 @_ = do {
1341 1         32 my ( %tmp, $tmp );
1342              
1343 1 50       5 @_ == 2
1344             or Hydrogen::croak(
1345             "Wrong number of parameters in signature for %s: got %d, %s",
1346             "prepend", scalar(@_), "expected exactly 2 parameters" );
1347              
1348             # Parameter $_[0] (type: Str)
1349 1 50       1 do {
1350              
1351             package Hydrogen::String::__SANDBOX__;
1352 1 50       5 defined( $_[0] ) and do {
1353 1 50       7 ref( \$_[0] ) eq 'SCALAR'
1354             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1355             }
1356             }
1357             or Hydrogen::croak(
1358             "Type check failed in signature for prepend: %s should be %s",
1359             "\$_[0]", "Str" );
1360              
1361             # Parameter $_[1] (type: Str)
1362 1 50       2 do {
1363              
1364             package Hydrogen::String::__SANDBOX__;
1365 1 50       3 defined( $_[1] ) and do {
1366 1 50       5 ref( \$_[1] ) eq 'SCALAR'
1367             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1368             }
1369             }
1370             or Hydrogen::croak(
1371             "Type check failed in signature for prepend: %s should be %s",
1372             "\$_[1]", "Str" );
1373              
1374 1         3 (@_);
1375             };
1376             (
1377 1         1 ${$__REF__} = do {
  1         3  
1378 1         2 my $shv_final_unchecked = $_[1] . $$__REF__;
1379 1         2 do {
1380 1 50       2 do {
1381              
1382             package Hydrogen::String::__SANDBOX__;
1383 1 50       4 defined($shv_final_unchecked) and do {
1384 1 50       3 ref( \$shv_final_unchecked ) eq 'SCALAR'
1385             or ref( \( my $val = $shv_final_unchecked ) ) eq
1386             'SCALAR';
1387             }
1388             }
1389             or Hydrogen::croak(
1390             "Type check failed for prepend: expected %s, got value %s",
1391             "Str", $shv_final_unchecked
1392             );
1393 1         2 $shv_final_unchecked;
1394             };
1395             }
1396             );
1397             }
1398              
1399             =head2 C<< replace( $string, $regexp, $replacement ) >>
1400              
1401             Additional arguments: B<< Str|RegexpRef >>, B<< Str|CodeRef >>.
1402              
1403             Replaces the first regexp match within the string with the replacement string.
1404              
1405             =cut
1406              
1407             sub replace {
1408 2     2 1 2365 my $__REF__ = \$_[0];
1409              
1410             package Hydrogen::String::__SANDBOX__;
1411 2         4 @_ = do {
1412 2         2 my ( %tmp, $tmp );
1413              
1414 2 50       5 @_ == 3
1415             or Hydrogen::croak(
1416             "Wrong number of parameters in signature for %s: got %d, %s",
1417             "replace", scalar(@_), "expected exactly 3 parameters" );
1418              
1419             # Parameter $_[0] (type: Str)
1420 2 50       3 do {
1421              
1422             package Hydrogen::String::__SANDBOX__;
1423 2 50       6 defined( $_[0] ) and do {
1424 2 50       30 ref( \$_[0] ) eq 'SCALAR'
1425             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1426             }
1427             }
1428             or Hydrogen::croak(
1429             "Type check failed in signature for replace: %s should be %s",
1430             "\$_[0]", "Str" );
1431              
1432             # Parameter $_[1] (type: Str|RegexpRef)
1433 2 50       2 do {
1434              
1435             package Hydrogen::String::__SANDBOX__;
1436             (
1437             do {
1438              
1439             package Hydrogen::String::__SANDBOX__;
1440 2 50       5 defined( $_[1] ) and do {
1441 2 100       12 ref( \$_[1] ) eq 'SCALAR'
1442             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1443             }
1444             }
1445             or (
1446 2 100       3 do {
1447              
1448             package Hydrogen::String::__SANDBOX__;
1449 5     5   48 use Scalar::Util ();
  5         11  
  5         133  
1450 5     5   26 use re ();
  5         12  
  5         3169  
1451 1 50 0     8 ref( $_[1] ) && !!re::is_regexp( $_[1] )
      33        
1452             or Scalar::Util::blessed( $_[1] )
1453             && $_[1]->isa('Regexp');
1454             }
1455             )
1456             );
1457             }
1458             or Hydrogen::croak(
1459             "Type check failed in signature for replace: %s should be %s",
1460             "\$_[1]", "Str|RegexpRef" );
1461              
1462             # Parameter $_[2] (type: Str|CodeRef)
1463 2 50       4 do {
1464              
1465             package Hydrogen::String::__SANDBOX__;
1466             (
1467 2 100       1 do {
1468              
1469             package Hydrogen::String::__SANDBOX__;
1470 2 50       5 defined( $_[2] ) and do {
1471 2 100       11 ref( \$_[2] ) eq 'SCALAR'
1472             or ref( \( my $val = $_[2] ) ) eq 'SCALAR';
1473             }
1474             }
1475             or ( ref( $_[2] ) eq 'CODE' )
1476             );
1477             }
1478             or Hydrogen::croak(
1479             "Type check failed in signature for replace: %s should be %s",
1480             "\$_[2]", "Str|CodeRef" );
1481              
1482 2         17 (@_);
1483             };
1484 2         4 my $shv_tmp = $$__REF__;
1485 2 100       5 if ( ( ref( $_[2] ) eq 'CODE' ) ) {
1486 1         1 my $shv_callback = $_[2];
1487 1         7 $shv_tmp =~ s/$_[1]/$shv_callback->()/e;
  1         2  
1488             }
1489 1         15 else { $shv_tmp =~ s/$_[1]/$_[2]/ }
1490             (
1491 2         6 ${$__REF__} = do {
  2         7  
1492 2         3 my $shv_final_unchecked = $shv_tmp;
1493 2         2 do {
1494 2 50       15 do {
1495              
1496             package Hydrogen::String::__SANDBOX__;
1497 2 50       6 defined($shv_final_unchecked) and do {
1498 2 50       8 ref( \$shv_final_unchecked ) eq 'SCALAR'
1499             or ref( \( my $val = $shv_final_unchecked ) ) eq
1500             'SCALAR';
1501             }
1502             }
1503             or Hydrogen::croak(
1504             "Type check failed for replace: expected %s, got value %s",
1505             "Str", $shv_final_unchecked
1506             );
1507 2         4 $shv_final_unchecked;
1508             };
1509             }
1510             );
1511             }
1512              
1513             =head2 C<< replace_globally( $string, $regexp, $replacement ) >>
1514              
1515             Additional arguments: B<< Str|RegexpRef >>, B<< Str|CodeRef >>.
1516              
1517             Replaces the all regexp matches within the string with the replacement string.
1518              
1519             =cut
1520              
1521             sub replace_globally {
1522 2     2 1 2430 my $__REF__ = \$_[0];
1523              
1524             package Hydrogen::String::__SANDBOX__;
1525 2         3 @_ = do {
1526 2         3 my ( %tmp, $tmp );
1527              
1528 2 50       5 @_ == 3
1529             or Hydrogen::croak(
1530             "Wrong number of parameters in signature for %s: got %d, %s",
1531             "replace_globally", scalar(@_), "expected exactly 3 parameters" );
1532              
1533             # Parameter $_[0] (type: Str)
1534 2 50       3 do {
1535              
1536             package Hydrogen::String::__SANDBOX__;
1537 2 50       3 defined( $_[0] ) and do {
1538 2 50       10 ref( \$_[0] ) eq 'SCALAR'
1539             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1540             }
1541             }
1542             or Hydrogen::croak(
1543             "Type check failed in signature for replace_globally: %s should be %s",
1544             "\$_[0]", "Str"
1545             );
1546              
1547             # Parameter $_[1] (type: Str|RegexpRef)
1548 2 50       3 do {
1549              
1550             package Hydrogen::String::__SANDBOX__;
1551             (
1552             do {
1553              
1554             package Hydrogen::String::__SANDBOX__;
1555 2 50       5 defined( $_[1] ) and do {
1556 2 100       9 ref( \$_[1] ) eq 'SCALAR'
1557             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1558             }
1559             }
1560             or (
1561 2 100       3 do {
1562              
1563             package Hydrogen::String::__SANDBOX__;
1564 5     5   47 use Scalar::Util ();
  5         14  
  5         121  
1565 5     5   25 use re ();
  5         12  
  5         12643  
1566 1 50 0     22 ref( $_[1] ) && !!re::is_regexp( $_[1] )
      33        
1567             or Scalar::Util::blessed( $_[1] )
1568             && $_[1]->isa('Regexp');
1569             }
1570             )
1571             );
1572             }
1573             or Hydrogen::croak(
1574             "Type check failed in signature for replace_globally: %s should be %s",
1575             "\$_[1]", "Str|RegexpRef"
1576             );
1577              
1578             # Parameter $_[2] (type: Str|CodeRef)
1579 2 50       4 do {
1580              
1581             package Hydrogen::String::__SANDBOX__;
1582             (
1583 2 100       2 do {
1584              
1585             package Hydrogen::String::__SANDBOX__;
1586 2 50       17 defined( $_[2] ) and do {
1587 2 100       13 ref( \$_[2] ) eq 'SCALAR'
1588             or ref( \( my $val = $_[2] ) ) eq 'SCALAR';
1589             }
1590             }
1591             or ( ref( $_[2] ) eq 'CODE' )
1592             );
1593             }
1594             or Hydrogen::croak(
1595             "Type check failed in signature for replace_globally: %s should be %s",
1596             "\$_[2]", "Str|CodeRef"
1597             );
1598              
1599 2         6 (@_);
1600             };
1601 2         3 my $shv_tmp = $$__REF__;
1602 2 100       5 if ( ( ref( $_[2] ) eq 'CODE' ) ) {
1603 1         1 my $shv_callback = $_[2];
1604 1         7 $shv_tmp =~ s/$_[1]/$shv_callback->()/eg;
  2         6  
1605             }
1606 1         15 else { $shv_tmp =~ s/$_[1]/$_[2]/g }
1607             (
1608 2         5 ${$__REF__} = do {
  2         6  
1609 2         3 my $shv_final_unchecked = $shv_tmp;
1610 2         2 do {
1611 2 50       3 do {
1612              
1613             package Hydrogen::String::__SANDBOX__;
1614 2 50       5 defined($shv_final_unchecked) and do {
1615 2 50       6 ref( \$shv_final_unchecked ) eq 'SCALAR'
1616             or ref( \( my $val = $shv_final_unchecked ) ) eq
1617             'SCALAR';
1618             }
1619             }
1620             or Hydrogen::croak(
1621             "Type check failed for replace_globally: expected %s, got value %s",
1622             "Str", $shv_final_unchecked
1623             );
1624 2         5 $shv_final_unchecked;
1625             };
1626             }
1627             );
1628             }
1629              
1630             =head2 C<< reset( $string ) >>
1631              
1632             Resets the original value to its default value, or an empty string if it has no default.
1633              
1634             =cut
1635              
1636             sub reset {
1637 0     0 1 0 my $__REF__ = \$_[0];
1638              
1639             package Hydrogen::String::__SANDBOX__;
1640 0 0       0 @_ == 1
1641             or Hydrogen::croak( "Wrong number of parameters for reset; usage: "
1642             . "Hydrogen::String::reset( \$string )" );
1643             (
1644 0         0 ${$__REF__} = do {
  0         0  
1645 0         0 my $shv_final_unchecked = q{};
1646 0         0 do {
1647 0 0       0 do {
1648              
1649             package Hydrogen::String::__SANDBOX__;
1650 0 0       0 defined($shv_final_unchecked) and do {
1651 0 0       0 ref( \$shv_final_unchecked ) eq 'SCALAR'
1652             or ref( \( my $val = $shv_final_unchecked ) ) eq
1653             'SCALAR';
1654             }
1655             }
1656             or Hydrogen::croak(
1657             "Type check failed for reset: expected %s, got value %s",
1658             "Str", $shv_final_unchecked );
1659 0         0 $shv_final_unchecked;
1660             };
1661             }
1662             );
1663             }
1664              
1665             =head2 C<< set( $string, $value ) >>
1666              
1667             Additional arguments: B<< Str >>.
1668              
1669             Sets the string to a new value.
1670              
1671             =cut
1672              
1673             sub set {
1674 1     1 1 6221 my $__REF__ = \$_[0];
1675              
1676             package Hydrogen::String::__SANDBOX__;
1677 1         3 @_ = do {
1678 1         3 my ( %tmp, $tmp );
1679              
1680 1 50       6 @_ == 2
1681             or Hydrogen::croak(
1682             "Wrong number of parameters in signature for %s: got %d, %s",
1683             "set", scalar(@_), "expected exactly 2 parameters" );
1684              
1685             # Parameter $_[0] (type: Str)
1686 1 50       2 do {
1687              
1688             package Hydrogen::String::__SANDBOX__;
1689 1 50       6 defined( $_[0] ) and do {
1690 1 50       9 ref( \$_[0] ) eq 'SCALAR'
1691             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1692             }
1693             }
1694             or Hydrogen::croak(
1695             "Type check failed in signature for set: %s should be %s",
1696             "\$_[0]", "Str" );
1697              
1698             # Parameter $_[1] (type: Str)
1699 1 50       2 do {
1700              
1701             package Hydrogen::String::__SANDBOX__;
1702 1 50       5 defined( $_[1] ) and do {
1703 1 50       9 ref( \$_[1] ) eq 'SCALAR'
1704             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1705             }
1706             }
1707             or Hydrogen::croak(
1708             "Type check failed in signature for set: %s should be %s",
1709             "\$_[1]", "Str" );
1710              
1711 1         6 (@_);
1712             };
1713             (
1714 1         3 ${$__REF__} = do {
  1         4  
1715 1         2 my $shv_final_unchecked = $_[1];
1716 1         2 do {
1717 1 50       2 do {
1718              
1719             package Hydrogen::String::__SANDBOX__;
1720 1 50       5 defined($shv_final_unchecked) and do {
1721 1 50       7 ref( \$shv_final_unchecked ) eq 'SCALAR'
1722             or ref( \( my $val = $shv_final_unchecked ) ) eq
1723             'SCALAR';
1724             }
1725             }
1726             or Hydrogen::croak(
1727             "Type check failed for set: expected %s, got value %s",
1728             "Str", $shv_final_unchecked );
1729 1         3 $shv_final_unchecked;
1730             };
1731             }
1732             );
1733             }
1734              
1735             =head2 C<< starts_with( $string, $head ) >>
1736              
1737             Additional arguments: B<< Str >>.
1738              
1739             Returns true iff the string starts with C<< $head >>.
1740              
1741             =cut
1742              
1743             sub starts_with {
1744 0     0 1   my $__REF__ = \$_[0];
1745              
1746             package Hydrogen::String::__SANDBOX__;
1747 0           @_ = do {
1748 0           my ( %tmp, $tmp );
1749              
1750 0 0         @_ == 2
1751             or Hydrogen::croak(
1752             "Wrong number of parameters in signature for %s: got %d, %s",
1753             "starts_with", scalar(@_), "expected exactly 2 parameters" );
1754              
1755             # Parameter $_[0] (type: Str)
1756 0 0         do {
1757              
1758             package Hydrogen::String::__SANDBOX__;
1759 0 0         defined( $_[0] ) and do {
1760 0 0         ref( \$_[0] ) eq 'SCALAR'
1761             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1762             }
1763             }
1764             or Hydrogen::croak(
1765             "Type check failed in signature for starts_with: %s should be %s",
1766             "\$_[0]", "Str" );
1767              
1768             # Parameter $_[1] (type: Str)
1769 0 0         do {
1770              
1771             package Hydrogen::String::__SANDBOX__;
1772 0 0         defined( $_[1] ) and do {
1773 0 0         ref( \$_[1] ) eq 'SCALAR'
1774             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1775             }
1776             }
1777             or Hydrogen::croak(
1778             "Type check failed in signature for starts_with: %s should be %s",
1779             "\$_[1]", "Str" );
1780              
1781 0           (@_);
1782             };
1783 0           substr( $$__REF__, 0, length $_[1] ) eq $_[1];
1784             }
1785              
1786             =head2 C<< starts_with_i( $string, $head ) >>
1787              
1788             Additional arguments: B<< Str >>.
1789              
1790             Returns true iff the string starts with C<< $head >> case-insensitvely.
1791              
1792             =cut
1793              
1794             sub starts_with_i {
1795 0     0 1   my $__REF__ = \$_[0];
1796              
1797             package Hydrogen::String::__SANDBOX__;
1798 0           @_ = do {
1799 0           my ( %tmp, $tmp );
1800              
1801 0 0         @_ == 2
1802             or Hydrogen::croak(
1803             "Wrong number of parameters in signature for %s: got %d, %s",
1804             "starts_with_i", scalar(@_), "expected exactly 2 parameters" );
1805              
1806             # Parameter $_[0] (type: Str)
1807 0 0         do {
1808              
1809             package Hydrogen::String::__SANDBOX__;
1810 0 0         defined( $_[0] ) and do {
1811 0 0         ref( \$_[0] ) eq 'SCALAR'
1812             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1813             }
1814             }
1815             or Hydrogen::croak(
1816             "Type check failed in signature for starts_with_i: %s should be %s",
1817             "\$_[0]", "Str"
1818             );
1819              
1820             # Parameter $_[1] (type: Str)
1821 0 0         do {
1822              
1823             package Hydrogen::String::__SANDBOX__;
1824 0 0         defined( $_[1] ) and do {
1825 0 0         ref( \$_[1] ) eq 'SCALAR'
1826             or ref( \( my $val = $_[1] ) ) eq 'SCALAR';
1827             }
1828             }
1829             or Hydrogen::croak(
1830             "Type check failed in signature for starts_with_i: %s should be %s",
1831             "\$_[1]", "Str"
1832             );
1833              
1834 0           (@_);
1835             };
1836 0           Hydrogen::fc( substr( $$__REF__, 0, length $_[1] ) ) eq Hydrogen::fc( $_[1] );
1837             }
1838              
1839             =head2 C<< substr( $string, $start, $length?, $replacement? ) >>
1840              
1841             Additional arguments: B<< Int >>, B<< Optional[Int] >>, B<< Optional[Str] >>.
1842              
1843             Like C from L, but is not an lvalue.
1844              
1845             =cut
1846              
1847             {
1848             my $__signature;
1849              
1850             sub substr {
1851 0     0 1   my $__REF__ = \$_[0];
1852              
1853             package Hydrogen::String::__SANDBOX__;
1854             $__signature ||= sub {
1855 0     0     my ( %tmp, $tmp );
1856              
1857 0 0 0       @_ >= 2 && @_ <= 4
1858             or Hydrogen::croak(
1859             "Wrong number of parameters in signature for %s: got %d, %s",
1860             "substr", scalar(@_), "expected exactly 2 parameters" );
1861              
1862             # Parameter $_[0] (type: Str)
1863 0 0         do {
1864              
1865             package Hydrogen::String::__SANDBOX__;
1866 0 0         defined( $_[0] ) and do {
1867 0 0         ref( \$_[0] ) eq 'SCALAR'
1868             or ref( \( my $val = $_[0] ) ) eq 'SCALAR';
1869             }
1870             }
1871             or Hydrogen::croak(
1872             "Type check failed in signature for substr: %s should be %s",
1873             "\$_[0]", "Str" );
1874              
1875             # Parameter $_[1] (type: Int)
1876             (
1877 0 0         do {
1878 0           my $tmp = $_[1];
1879 0 0 0       defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/;
1880             }
1881             )
1882             or Hydrogen::croak(
1883             "Type check failed in signature for substr: %s should be %s",
1884             "\$_[1]", "Int" );
1885              
1886             # Parameter $_[2] (type: Optional[Int])
1887 0 0         $#_ >= 2
1888             or return (@_);
1889             (
1890 0 0         do {
1891 0           my $tmp = $_[2];
1892 0 0 0       defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/;
1893             }
1894             )
1895             or Hydrogen::croak(
1896             "Type check failed in signature for substr: %s should be %s",
1897             "\$_[2]", "Optional[Int]" );
1898              
1899             # Parameter $_[3] (type: Optional[Str])
1900 0 0         $#_ >= 3
1901             or return (@_);
1902 0 0         do {
1903              
1904             package Hydrogen::String::__SANDBOX__;
1905 0 0         defined( $_[3] ) and do {
1906 0 0         ref( \$_[3] ) eq 'SCALAR'
1907             or ref( \( my $val = $_[3] ) ) eq 'SCALAR';
1908             }
1909             }
1910             or Hydrogen::croak(
1911             "Type check failed in signature for substr: %s should be %s",
1912             "\$_[3]", "Optional[Str]" );
1913              
1914 0           (@_);
1915 0   0       };
1916 0           @_ = &$__signature;
1917 0 0         if ( ( @_ - 1 ) == 1 ) { substr( $$__REF__, $_[1] ) }
  0 0          
    0          
1918 0           elsif ( ( @_ - 1 ) == 2 ) { substr( $$__REF__, $_[1], $_[2] ) }
1919             elsif ( ( @_ - 1 ) == 3 ) {
1920 0           my $shv_tmp = $$__REF__;
1921 0           my $shv_return = substr( $shv_tmp, $_[1], $_[2], $_[3] );
1922             (
1923 0           ${$__REF__} = do {
  0            
1924 0           my $shv_final_unchecked = $shv_tmp;
1925 0           do {
1926 0 0         do {
1927              
1928             package Hydrogen::String::__SANDBOX__;
1929 0 0         defined($shv_final_unchecked) and do {
1930 0 0         ref( \$shv_final_unchecked ) eq 'SCALAR'
1931             or ref( \( my $val = $shv_final_unchecked ) )
1932             eq 'SCALAR';
1933             }
1934             }
1935             or Hydrogen::croak(
1936             "Type check failed for substr: expected %s, got value %s",
1937             "Str", $shv_final_unchecked
1938             );
1939 0           $shv_final_unchecked;
1940             };
1941             }
1942             );
1943 0           $shv_return;
1944             }
1945             }
1946             }
1947              
1948             =head2 C<< trim( $string ) >>
1949              
1950             Like C from L, but in-place.
1951              
1952             =cut
1953              
1954             sub trim {
1955 0     0 1   my $__REF__ = \$_[0];
1956              
1957             package Hydrogen::String::__SANDBOX__;
1958 0 0         @_ == 1
1959             or Hydrogen::croak( "Wrong number of parameters for trim; usage: "
1960             . "Hydrogen::String::trim( \$string )" );
1961 0           1;
1962 0           s/\A\s+//, s/\s+\z// for $$__REF__;
1963             }
1964              
1965             =head2 C<< uc( $string ) >>
1966              
1967             Returns C<< uc($string) >>.
1968              
1969             =cut
1970              
1971             sub uc {
1972 0     0 1   my $__REF__ = \$_[0];
1973              
1974             package Hydrogen::String::__SANDBOX__;
1975 0 0         @_ == 1
1976             or Hydrogen::croak( "Wrong number of parameters for uc; usage: "
1977             . "Hydrogen::String::uc( \$string )" );
1978 0           uc($$__REF__);
1979             }
1980              
1981             1;
1982              
1983             =head1 EXPORT
1984              
1985             No functions are exported by this module by default. To import them all (this is usually a bad idea), use:
1986              
1987             use Hydrogen::String -all;
1988              
1989             To import a particular function, use:
1990              
1991             use Hydrogen::String 'chop';
1992              
1993             To rename functions:
1994              
1995             use Hydrogen::String 'chop' => { -as => 'myfunc' };
1996              
1997             On Perl 5.37.2+ (or if L is installed) you can import lexically:
1998              
1999             use Hydrogen::String -lexical, 'chop';
2000              
2001             See L for more hints on importing.
2002              
2003             =head1 BUGS
2004              
2005             Please report any bugs to
2006             L.
2007              
2008             =head1 SEE ALSO
2009              
2010             L,
2011             L,
2012             L,
2013             L,
2014             L.
2015              
2016             =head1 AUTHOR
2017              
2018             Toby Inkster Etobyink@cpan.orgE.
2019              
2020             =head1 COPYRIGHT AND LICENCE
2021              
2022             This software is copyright (c) 2022-2025 by Toby Inkster.
2023              
2024             This is free software; you can redistribute it and/or modify it under
2025             the same terms as the Perl 5 programming language system itself.
2026              
2027             =head1 DISCLAIMER OF WARRANTIES
2028              
2029             THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
2030             WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
2031             MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
2032