2017 © Pedro Peláez
 

library tummy

A fielded flat file parser

image

marcojetson/tummy

A fielded flat file parser

  • Friday, February 3, 2017
  • by marcojetson
  • Repository
  • 1 Watchers
  • 1 Stars
  • 2,594 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 16 % Grown

The README.md

tummy

A fielded flat file parser, (*1)

Build Status Code Climate Test Coverage, (*2)

Usage

Configuration

$formats = (new Tummy\Config\Factory())->create([
    'format1' => [
        'ident' => new Tummy\Record\Ident\Match('NEW'), // used for supporting multiple record formats in a single file
        'elements' => [
            [
                'length' => 3,
                'reference' => 'type',
                'required' => true,
            ],
            [
                'length' => 1, // elements w/o reference will be ignored
            ],
            [
                'length' => 16,
                'reference' => 'username',
                'paddingChar' => '-',
                'paddingDirection' => \STR_PAD_LEFT,
            ],
            [
                'length' => 8,
                'reference' => 'birthday',
                'converter' => new Tummy\Record\Element\Converter\DateTime('dmY'),
            ],
        ],
    ],
    'format2' => [
        'ident' => new Tummy\Record\Ident\Match('PWD'),
        'recordClass' => PwdRecord::class, // will use \stdClass if not specified
        'elements' => [
            [
                'length' => 3,
                'reference' => 'type',
            ],
            [
                'length' => 1,
            ],
            [
                'length' => 16,
                'reference' => 'username',
            ],
            [
                'length' => 16,
                'reference' => 'password',
            ],
        ],
    ],
]);

Parse

$parser = new Tummy\Parser($formats);

$records = $parser->parse([
    'NEW -----marcojetson31121985',
    'PWD marcojetson     peterete        ',
]);

var_dump($records);

// array(2) {
//   [0]=>
//   object(stdClass)#18 (3) {
//     ["type"]=>
//     string(3) "NEW"
//     ["username"]=>
//     string(11) "marcojetson"
//     ["birthday"]=>
//     object(DateTime)#19 (3) {
//       ["date"]=>
//       string(26) "1985-12-31 23:20:54.000000"
//       ["timezone_type"]=>
//       int(3)
//       ["timezone"]=>
//       string(13) "Europe/Berlin"
//     }
//   }
//   [1]=>
//   object(PwdRecord)#20 (3) {
//     ["type"]=>
//     string(3) "PWD"
//     ["username"]=>
//     string(11) "marcojetson"
//     ["password"]=>
//     string(8) "peterete"
//   }
// }

Compose

$record = new \stdClass();
$record->type = 'NEW';
$record->username = 'marcojetson';
$record->birthday = new \DateTime('1985-12-31');

$composer = new Tummy\Composer($formats['format1']);
echo $composer->compose([$record])[0];

// "NEW -----marcojetson31121985"

The Versions

03/02 2017

dev-master

9999999-dev

A fielded flat file parser

  Sources   Download

BSD-3-Clause

The Requires

  • php >=5.6

 

The Development Requires

parser flat file fielded flatworm

03/02 2017

v0.3.0

0.3.0.0

A fielded flat file parser

  Sources   Download

BSD-3-Clause

The Requires

  • php >=5.6

 

The Development Requires

parser flat file fielded flatworm

07/01 2017

v0.2.0

0.2.0.0

A fielded flat file parser

  Sources   Download

BSD-3-Clause

The Requires

  • php >=5.6

 

The Development Requires

parser flat file fielded flatworm

30/12 2016

v0.1.0

0.1.0.0

A fielded flat file parser

  Sources   Download

BSD-3-Clause

The Requires

  • php >=5.6

 

The Development Requires

parser flat file fielded flatworm