Skip to content

Commit faae548

Browse files
committed
New verified files and examples
1 parent d7d9890 commit faae548

46 files changed

Lines changed: 199 additions & 143 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

examples.md

Lines changed: 75 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -2,137 +2,147 @@
22

33
These are examples of supported barcodes with this library.
44

5+
All types can be found in the src/Types directory.
56

67

7-
### C39
88

9-
![Barcode 1234567890ABC as C39](tests/verified-files/C39-1234567890ABC.svg)
9+
### TypeCode39
1010

11-
### C39+
11+
![Barcode 1234567890ABC as Picqer\Barcode\Types\TypeCode39](tests/verified-files/TypeCode39-1234567890ABC.svg)
1212

13-
![Barcode 1234567890ABC as C39+](tests/verified-files/C39+-1234567890ABC.svg)
13+
### TypeCode39Checksum
1414

15-
### C39E
15+
![Barcode 1234567890ABC as Picqer\Barcode\Types\TypeCode39Checksum](tests/verified-files/TypeCode39Checksum-1234567890ABC.svg)
1616

17-
![Barcode 1234567890abcABC as C39E](tests/verified-files/C39E-1234567890abcABC.svg)
17+
### TypeCode39Extended
1818

19-
### C39E+
19+
![Barcode 1234567890abcABC as Picqer\Barcode\Types\TypeCode39Extended](tests/verified-files/TypeCode39Extended-1234567890abcABC.svg)
2020

21-
![Barcode 1234567890abcABC as C39E+](tests/verified-files/C39E+-1234567890abcABC.svg)
21+
### TypeCode39ExtendedChecksum
2222

23-
### C93
23+
![Barcode 1234567890abcABC as Picqer\Barcode\Types\TypeCode39ExtendedChecksum](tests/verified-files/TypeCode39ExtendedChecksum-1234567890abcABC.svg)
2424

25-
![Barcode 1234567890abcABC as C93](tests/verified-files/C93-1234567890abcABC.svg)
25+
### TypeCode93
2626

27-
### S25
27+
![Barcode 1234567890abcABC as Picqer\Barcode\Types\TypeCode93](tests/verified-files/TypeCode93-1234567890abcABC.svg)
2828

29-
![Barcode 1234567890 as S25](tests/verified-files/S25-1234567890.svg)
29+
### TypeStandard2of5
3030

31-
### S25+
31+
![Barcode 1234567890 as Picqer\Barcode\Types\TypeStandard2of5](tests/verified-files/TypeStandard2of5-1234567890.svg)
3232

33-
![Barcode 1234567890 as S25+](tests/verified-files/S25+-1234567890.svg)
33+
### TypeStandard2of5Checksum
3434

35-
### I25
35+
![Barcode 1234567890 as Picqer\Barcode\Types\TypeStandard2of5Checksum](tests/verified-files/TypeStandard2of5Checksum-1234567890.svg)
3636

37-
![Barcode 1234567890 as I25](tests/verified-files/I25-1234567890.svg)
37+
### TypeInterleaved25
3838

39-
### I25+
39+
![Barcode 1234567890 as Picqer\Barcode\Types\TypeInterleaved25](tests/verified-files/TypeInterleaved25-1234567890.svg)
4040

41-
![Barcode 1234567890 as I25+](tests/verified-files/I25+-1234567890.svg)
41+
### TypeInterleaved25Checksum
4242

43-
### EAN13
43+
![Barcode 1234567890 as Picqer\Barcode\Types\TypeInterleaved25Checksum](tests/verified-files/TypeInterleaved25Checksum-1234567890.svg)
4444

45-
![Barcode 081231723897 as EAN13](tests/verified-files/EAN13-081231723897.svg)
45+
### TypeEan13
4646

47-
![Barcode 0049000004632 as EAN13](tests/verified-files/EAN13-0049000004632.svg)
47+
![Barcode 081231723897 as Picqer\Barcode\Types\TypeEan13](tests/verified-files/TypeEan13-081231723897.svg)
4848

49-
![Barcode 004900000463 as EAN13](tests/verified-files/EAN13-004900000463.svg)
49+
![Barcode 0049000004632 as Picqer\Barcode\Types\TypeEan13](tests/verified-files/TypeEan13-0049000004632.svg)
5050

51-
### ITF14
51+
![Barcode 004900000463 as Picqer\Barcode\Types\TypeEan13](tests/verified-files/TypeEan13-004900000463.svg)
5252

53-
![Barcode 00012345600012 as ITF14](tests/verified-files/ITF14-00012345600012.svg)
53+
### TypeITF14
5454

55-
![Barcode 05400141288766 as ITF14](tests/verified-files/ITF14-05400141288766.svg)
55+
![Barcode 00012345600012 as Picqer\Barcode\Types\TypeITF14](tests/verified-files/TypeITF14-00012345600012.svg)
5656

57-
### C128
57+
![Barcode 05400141288766 as Picqer\Barcode\Types\TypeITF14](tests/verified-files/TypeITF14-05400141288766.svg)
5858

59-
![Barcode 081231723897 as C128](tests/verified-files/C128-081231723897.svg)
59+
### TypeCode128
6060

61-
![Barcode 1234567890abcABC-283*33 as C128](tests/verified-files/C128-1234567890abcABC-283-33.svg)
61+
![Barcode 081231723897 as Picqer\Barcode\Types\TypeCode128](tests/verified-files/TypeCode128-081231723897.svg)
6262

63-
### C128A
63+
![Barcode 1234567890abcABC-283*33 as Picqer\Barcode\Types\TypeCode128](tests/verified-files/TypeCode128-1234567890abcABC-283-33.svg)
6464

65-
![Barcode 1234567890 as C128A](tests/verified-files/C128A-1234567890.svg)
65+
### TypeCode128A
6666

67-
### C128B
67+
![Barcode 1234567890 as Picqer\Barcode\Types\TypeCode128A](tests/verified-files/TypeCode128A-1234567890.svg)
6868

69-
![Barcode 081231723897 as C128B](tests/verified-files/C128B-081231723897.svg)
69+
### TypeCode128B
7070

71-
![Barcode 1234567890abcABC-283*33 as C128B](tests/verified-files/C128B-1234567890abcABC-283-33.svg)
71+
![Barcode 081231723897 as Picqer\Barcode\Types\TypeCode128B](tests/verified-files/TypeCode128B-081231723897.svg)
7272

73-
### EAN2
73+
![Barcode 1234567890abcABC-283*33 as Picqer\Barcode\Types\TypeCode128B](tests/verified-files/TypeCode128B-1234567890abcABC-283-33.svg)
7474

75-
![Barcode 22 as EAN2](tests/verified-files/EAN2-22.svg)
75+
### TypeUpcExtension2
7676

77-
### EAN5
77+
![Barcode 22 as Picqer\Barcode\Types\TypeUpcExtension2](tests/verified-files/TypeUpcExtension2-22.svg)
7878

79-
![Barcode 1234567890abcABC-283*33 as EAN5](tests/verified-files/EAN5-1234567890abcABC-283-33.svg)
79+
### TypeUpcExtension5
8080

81-
### EAN8
81+
![Barcode 1234567890abcABC-283*33 as Picqer\Barcode\Types\TypeUpcExtension5](tests/verified-files/TypeUpcExtension5-1234567890abcABC-283-33.svg)
8282

83-
![Barcode 1234568 as EAN8](tests/verified-files/EAN8-1234568.svg)
83+
### TypeEan8
8484

85-
### UPCA
85+
![Barcode 1234568 as Picqer\Barcode\Types\TypeEan8](tests/verified-files/TypeEan8-1234568.svg)
8686

87-
![Barcode 123456789 as UPCA](tests/verified-files/UPCA-123456789.svg)
87+
### TypeUpcA
8888

89-
### UPCE
89+
![Barcode 123456789 as Picqer\Barcode\Types\TypeUpcA](tests/verified-files/TypeUpcA-123456789.svg)
9090

91-
![Barcode 123456789 as UPCE](tests/verified-files/UPCE-123456789.svg)
91+
### TypeUpcE
9292

93-
### MSI
93+
![Barcode 123456789 as Picqer\Barcode\Types\TypeUpcE](tests/verified-files/TypeUpcE-123456789.svg)
9494

95-
![Barcode 123456789 as MSI](tests/verified-files/MSI-123456789.svg)
95+
### TypeMsi
9696

97-
### MSI+
97+
![Barcode 123456789 as Picqer\Barcode\Types\TypeMsi](tests/verified-files/TypeMsi-123456789.svg)
9898

99-
![Barcode 123456789 as MSI+](tests/verified-files/MSI+-123456789.svg)
99+
### TypeMsiChecksum
100100

101-
### POSTNET
101+
![Barcode 123456789 as Picqer\Barcode\Types\TypeMsiChecksum](tests/verified-files/TypeMsiChecksum-123456789.svg)
102102

103-
![Barcode 123456789 as POSTNET](tests/verified-files/POSTNET-123456789.svg)
103+
### TypePostnet
104104

105-
### PLANET
105+
![Barcode 123456789 as Picqer\Barcode\Types\TypePostnet](tests/verified-files/TypePostnet-123456789.svg)
106106

107-
![Barcode 123456789 as PLANET](tests/verified-files/PLANET-123456789.svg)
107+
### TypePlanet
108108

109-
### RMS4CC
109+
![Barcode 123456789 as Picqer\Barcode\Types\TypePlanet](tests/verified-files/TypePlanet-123456789.svg)
110110

111-
![Barcode 123456789 as RMS4CC](tests/verified-files/RMS4CC-123456789.svg)
111+
### TypeRms4cc
112112

113-
### KIX
113+
![Barcode 123456789 as Picqer\Barcode\Types\TypeRms4cc](tests/verified-files/TypeRms4cc-123456789.svg)
114114

115-
![Barcode 123456789 as KIX](tests/verified-files/KIX-123456789.svg)
115+
### TypeKix
116116

117-
### IMB
117+
![Barcode 123456789 as Picqer\Barcode\Types\TypeKix](tests/verified-files/TypeKix-123456789.svg)
118118

119-
![Barcode 123456789 as IMB](tests/verified-files/IMB-123456789.svg)
119+
### TypeIntelligentMailBarcode
120120

121-
### CODABAR
121+
![Barcode 123456789 as Picqer\Barcode\Types\TypeIntelligentMailBarcode](tests/verified-files/TypeIntelligentMailBarcode-123456789.svg)
122122

123-
![Barcode 123456789 as CODABAR](tests/verified-files/CODABAR-123456789.svg)
123+
### TypeCodabar
124124

125-
### CODE11
125+
![Barcode 123456789 as Picqer\Barcode\Types\TypeCodabar](tests/verified-files/TypeCodabar-123456789.svg)
126126

127-
![Barcode 123456789 as CODE11](tests/verified-files/CODE11-123456789.svg)
127+
### TypeCode11
128128

129-
### PHARMA
129+
![Barcode 123456789 as Picqer\Barcode\Types\TypeCode11](tests/verified-files/TypeCode11-123456789.svg)
130130

131-
![Barcode 123456789 as PHARMA](tests/verified-files/PHARMA-123456789.svg)
131+
### TypePharmacode
132132

133-
### PHARMA2T
133+
![Barcode 123456789 as Picqer\Barcode\Types\TypePharmacode](tests/verified-files/TypePharmacode-123456789.svg)
134134

135-
![Barcode 123456789 as PHARMA2T](tests/verified-files/PHARMA2T-123456789.svg)
135+
### TypePharmacodeTwoCode
136+
137+
![Barcode 123456789 as Picqer\Barcode\Types\TypePharmacodeTwoCode](tests/verified-files/TypePharmacodeTwoCode-123456789.svg)
138+
139+
### TypeTelepen
140+
141+
![Barcode 1234567890ASCD as Picqer\Barcode\Types\TypeTelepen](tests/verified-files/TypeTelepen-1234567890ASCD.svg)
142+
143+
### TypeTelepenNumeric
144+
145+
![Barcode 1234567890 as Picqer\Barcode\Types\TypeTelepenNumeric](tests/verified-files/TypeTelepenNumeric-1234567890.svg)
136146

137147

138148

generate-examples.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
11
<?php
22

3-
function getSaveFilename($value) {
4-
return preg_replace('/[^a-zA-Z0-9_ \-+]/s', '-', $value);
5-
}
6-
73
require('vendor/autoload.php');
84
require(__DIR__ . '/tests/VerifiedBarcodeTest.php');
95
$verifiedFiles = VerifiedBarcodeTest::$supportedBarcodes;
106

117
$result = [];
128
$result[] = '# Examples of supported barcodes';
139
$result[] = 'These are examples of supported barcodes with this library.';
10+
$result[] = 'All types can be found in the src/Types directory.';
1411
$result[] = '';
1512

1613
foreach ($verifiedFiles as $verifiedFile) {
17-
$result[] = '### ' . $verifiedFile['type'];
14+
$result[] = '### ' . substr($verifiedFile['type'], strrpos($verifiedFile['type'], '\\') + 1);
1815
foreach ($verifiedFile['barcodes'] as $barcode) {
19-
$result[] = sprintf('![Barcode %s as %s](tests/verified-files/%s.svg)', $barcode, $verifiedFile['type'], getSaveFilename($verifiedFile['type'] . '-' . $barcode));
16+
$result[] = sprintf(
17+
'![Barcode %s as %s](tests/verified-files/%s.svg)',
18+
$barcode,
19+
$verifiedFile['type'],
20+
Picqer\Barcode\Helpers\StringHelpers::getSafeFilenameFrom($verifiedFile['type'] . '-' . $barcode)
21+
);
2022
}
2123
}
2224

2325
$result[] = '';
2426
$result[] = '*This file is generated by generate-examples.php*';
2527

26-
file_put_contents('examples.md', implode(PHP_EOL . PHP_EOL, $result));
28+
file_put_contents('examples.md', implode(PHP_EOL . PHP_EOL, $result));

generate-verified-files.php

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,43 @@
22

33
require('vendor/autoload.php');
44

5-
function getSaveFilename($value) {
6-
return preg_replace('/[^a-zA-Z0-9_ \-+]/s', '-', $value);
7-
}
5+
$svgRenderer = new Picqer\Barcode\Renderers\SvgRenderer();
6+
$htmlRenderer = new Picqer\Barcode\Renderers\HtmlRenderer();
7+
$dynamicHtmlRenderer = new Picqer\Barcode\Renderers\DynamicHtmlRenderer();
8+
9+
$typeEncoderEan13 = new \Picqer\Barcode\Types\TypeEan13();
10+
$typeEncoderCode128 = new \Picqer\Barcode\Types\TypeCode128();
11+
$typeEncoderIMB = new \Picqer\Barcode\Types\TypeIntelligentMailBarcode();
812

9-
$generatorSVG = new Picqer\Barcode\BarcodeGeneratorSVG();
10-
file_put_contents('tests/verified-files/081231723897-ean13.svg', $generatorSVG->getBarcode('081231723897', $generatorSVG::TYPE_EAN_13));
11-
file_put_contents('tests/verified-files/081231723897-ean13-fractional-width.svg', $generatorSVG->getBarcode('081231723897', $generatorSVG::TYPE_EAN_13, 0.25, 25.75));
13+
$barcode = $typeEncoderEan13->getBarcode('081231723897');
14+
file_put_contents('tests/verified-files/081231723897-ean13.svg', $svgRenderer->render($barcode, $barcode->getWidth() * 2));
15+
file_put_contents('tests/verified-files/081231723897-ean13-fractional-width.svg', $svgRenderer->render($barcode, $barcode->getWidth() * 0.25, 25.75));
1216

13-
$generatorHTML = new Picqer\Barcode\BarcodeGeneratorHTML();
14-
file_put_contents('tests/verified-files/081231723897-code128.html', $generatorHTML->getBarcode('081231723897', $generatorHTML::TYPE_CODE_128));
17+
$barcode = $typeEncoderCode128->getBarcode('081231723897');
18+
file_put_contents('tests/verified-files/081231723897-code128.html', $htmlRenderer->render($barcode, $barcode->getWidth() * 2));
1519

16-
file_put_contents('tests/verified-files/12345678903-imb.html', $generatorHTML->getBarcode('12345678903', $generatorHTML::TYPE_IMB));
20+
$barcode = $typeEncoderIMB->getBarcode('12345678903');
21+
file_put_contents('tests/verified-files/12345678903-imb.html', $htmlRenderer->render($barcode, $barcode->getWidth() * 2));
1722

18-
$generatorDynamicHTML = new Picqer\Barcode\BarcodeGeneratorDynamicHTML();
19-
file_put_contents('tests/verified-files/081231723897-dynamic-code128.html', $generatorDynamicHTML->getBarcode('081231723897', $generatorDynamicHTML::TYPE_CODE_128));
23+
$barcode = $typeEncoderCode128->getBarcode('081231723897');
24+
file_put_contents('tests/verified-files/081231723897-dynamic-code128.html', $dynamicHtmlRenderer->render($barcode));
2025

21-
file_put_contents('tests/verified-files/12345678903-dynamic-imb.html', $generatorDynamicHTML->getBarcode('12345678903', $generatorDynamicHTML::TYPE_IMB));
26+
$barcode = $typeEncoderIMB->getBarcode('12345678903');
27+
file_put_contents('tests/verified-files/12345678903-dynamic-imb.html', $dynamicHtmlRenderer->render($barcode));
2228

23-
$generatorSVG = new Picqer\Barcode\BarcodeGeneratorSVG();
24-
file_put_contents('tests/verified-files/0049000004632-ean13.svg', $generatorSVG->getBarcode('0049000004632', $generatorSVG::TYPE_EAN_13));
29+
$barcode = $typeEncoderEan13->getBarcode('0049000004632');
30+
file_put_contents('tests/verified-files/0049000004632-ean13.svg', $svgRenderer->render($barcode, $barcode->getWidth() * 2));
2531

2632

27-
// New style of verified files
33+
// New style of verified files, defined in VerifiedBarcodeTest.php
2834
require(__DIR__ . '/tests/VerifiedBarcodeTest.php');
2935
$verifiedFiles = VerifiedBarcodeTest::$supportedBarcodes;
3036

31-
$generatorSVG = new Picqer\Barcode\BarcodeGeneratorSVG();
3237
foreach ($verifiedFiles as $verifiedFile) {
33-
foreach ($verifiedFile['barcodes'] as $barcode) {
34-
file_put_contents('tests/verified-files/' . getSaveFilename($verifiedFile['type'] . '-' . $barcode) . '.svg', $generatorSVG->getBarcode($barcode, $verifiedFile['type']));
38+
foreach ($verifiedFile['barcodes'] as $barcodeText) {
39+
$barcode = (new $verifiedFile['type']())->getBarcode($barcodeText);
40+
$result = $svgRenderer->render($barcode, $barcode->getWidth() * 2);
41+
42+
file_put_contents('tests/verified-files/' . Picqer\Barcode\Helpers\StringHelpers::getSafeFilenameFrom($verifiedFile['type'] . '-' . $barcodeText) . '.svg', $result);
3543
}
3644
}

src/Helpers/StringHelpers.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace Picqer\Barcode\Helpers;
4+
5+
class StringHelpers
6+
{
7+
public static function getSafeFilenameFrom(string $className): string {
8+
$lastPart = substr($className, strrpos($className, '\\') + 1);
9+
10+
return preg_replace('/[^a-zA-Z0-9_ \-+]/s', '-', $lastPart);
11+
}
12+
}

src/Types/TypePharmacode.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ class TypePharmacode implements TypeInterface
1414
{
1515
public function getBarcode(string $code): Barcode
1616
{
17+
$originalCode = $code;
18+
1719
$code = intval($code);
1820

1921
$seq = '';
@@ -31,6 +33,6 @@ public function getBarcode(string $code): Barcode
3133
$seq = substr($seq, 0, -2);
3234
$seq = strrev($seq);
3335

34-
return BinarySequenceConverter::convert(strval($code), $seq);
36+
return BinarySequenceConverter::convert($originalCode, $seq);
3537
}
3638
}

src/Types/TypePharmacodeTwoCode.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ class TypePharmacodeTwoCode implements TypeInterface
1616
{
1717
public function getBarcode(string $code): Barcode
1818
{
19+
$originalCode = $code;
20+
1921
$code = intval($code);
2022

2123
if ($code < 1) {
@@ -45,7 +47,7 @@ public function getBarcode(string $code): Barcode
4547

4648
$seq = strrev($seq);
4749

48-
$barcode = new Barcode(strval($code));
50+
$barcode = new Barcode($originalCode);
4951

5052
for ($i = 0; $i < strlen($seq); ++$i) {
5153
switch ($seq[$i]) {

src/Types/TypeTelepenNumeric.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
/**
3+
* Adapted by Darren Stephens <darren.stephens@durham.ac.uk>
4+
* from Java implementation of Telepen by <rstuart114@gmail.com> Robin Stuart
5+
* at https://github.com/woo-j/OkapiBarcode which uses the
6+
* Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* Implements Telepen (also known as Telepen Alpha), and Telepen Numeric.
9+
*
10+
* Telepen can encode ASCII text input and includes a modulo-127 check digit.
11+
* Telepen Numeric allows compression of numeric data into a Telepen symbol. Data
12+
* can consist of pairs of numbers or pairs consisting of a numerical digit followed
13+
* by an X character. Telepen Numeric also includes a mod-127 check digit.
14+
*/
15+
16+
namespace Picqer\Barcode\Types;
17+
18+
class TypeTelepenNumeric extends TypeTelepen
19+
{
20+
public function __construct()
21+
{
22+
parent::__construct('numeric');
23+
}
24+
}

0 commit comments

Comments
 (0)