0.07 Use Truncate::Unicode
authorMitch Jackson <mitch@freeside.biz>
Thu, 1 Mar 2018 03:10:37 +0000 (03:10 +0000)
committerMitch Jackson <mitch@freeside.biz>
Thu, 1 Mar 2018 03:10:37 +0000 (03:10 +0000)
META.yml
Makefile.PL
Paymentech.pm
debian/changelog
debian/control

index a8600fe..3cb1085 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -1,6 +1,6 @@
 --- #YAML:1.0
 name:               Business-BatchPayment-Paymentech
-version:            0.01
+version:            0.07
 abstract:           Chase Paymentech XML batch format.
 author:
     - Mark Wells <mark@freeside.biz>
@@ -14,6 +14,7 @@ requires:
     Business::BatchPayment:  0
     Moose:                1.09
     Test::More:           0
+    Unicode::Truncate:    0.303
 no_index:
     directory:
         - t
index e791751..292d967 100644 (file)
@@ -16,6 +16,7 @@ WriteMakefile(
         'Business::BatchPayment' => 0,
         'Moose' => 1.09,
         'Test::More' => 0,
+        'Unicode::Truncate' => 0.303,
     },
     dist                => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
     clean               => { FILES => 'Business-BatchPayment-Paymentech-*' },
index df652ed..a64eb97 100644 (file)
@@ -3,7 +3,9 @@ package Business::BatchPayment::Paymentech;
 use 5.006;
 use strict;
 use warnings;
-our $VERSION = '0.03';
+our $VERSION = '0.07';
+
+use Unicode::Truncate 'truncate_egc';
 
 =head1 NAME
 
@@ -186,13 +188,15 @@ sub format_item {
       }
     } # else don't send recurringInd at all
 
-    push @order, (
-      avsZip         => $item->zip,
-      avsAddress1    => bytes_substr($item->address,   0, 30),
-      avsAddress2    => bytes_substr($item->address2,  0, 30),
-      avsCity        => bytes_substr($item->city,      0, 20),
-      avsState       => bytes_substr($item->state,     0, 2),
-      avsName        => bytes_substr($item->first_name. ' '. $item->last_name, 0, 30),
+    push @order, (                   # truncate_egc will die() on empty string
+      avsZip      => $item->zip,
+      avsAddress1 => $item->address  ? truncate_egc($item->address,  30) : undef,
+      avsAddress2 => $item->address2 ? truncate_egc($item->address2, 30) : undef,
+      avsCity     => $item->city     ? truncate_egc($item->city,     20) : undef,
+      avsState    => $item->state    ? truncate_egc($item->state,     2) : undef,
+      avsName     => ($item->first_name || $item->last_name)
+                     ? truncate_egc($item->first_name.' '.$item->last_name, 30)
+                     : undef,
       ( $paymentech_countries{ $item->country }
         ? ( avsCountryCode  => $item->country )
         : ()
@@ -306,18 +310,18 @@ sub parse_item {
   $item;
 }
 
-# internal use
-
-sub bytes_substr {
-  my ($string, $offset, $length, $repl) = @_;
-  my $bytes = substr(
-    Encode::encode('utf8', $string || ''),
-    $offset,
-    $length,
-    Encode::encode('utf8', $repl || '')
-  );
-  return Encode::decode('utf8', $bytes, Encode::FB_QUIET);
-} 
+# DEPRECATED
+
+sub bytes_substr {
+  my ($string, $offset, $length, $repl) = @_;
+  my $bytes = substr(
+    Encode::encode('utf8', $string || ''),
+    $offset,
+    $length,
+    Encode::encode('utf8', $repl || '')
+  );
+  return Encode::decode('utf8', $bytes, Encode::FB_QUIET);
+# }
 
 
 package Business::BatchPayment::Paymentech::Transport;
index 607e19d..b050b26 100644 (file)
@@ -1,3 +1,9 @@
+libbusiness-batchpayment-paymentech-perl (0.07) unstable; urgency=medium
+
+  * Start using Unicode::Truncate.
+
+ -- Mitch Jackson <mitch@freeside.biz>  Wed, 24 Jan 2018 01:00:00 -0600
+
 libbusiness-batchpayment-paymentech-perl (0.06) unstable; urgency=medium
 
   * Add with_recurringInd option to control use of recurring indicator.
index ddb1aed..36b4755 100644 (file)
@@ -14,7 +14,8 @@ Depends:
  libxml-writer-perl,
  libxml-simple-perl,
  libdatetime-perl,
- libmoose-perl (>= 1.09)
+ libmoose-perl (>= 1.09),
+ libunicode-truncate-perl (>= 0.303)
 Description: Chase Paymentech XML batch format.
  (no description was found)
  .