@@ -284,6 +284,14 @@ class MetaTitle
284
284
];
285
285
286
286
protected function __construct (
287
+ protected ?string $ title = null ,
288
+ protected ?string $ language = null ,
289
+ protected ?string $ series = null ,
290
+ protected ?string $ volume = null ,
291
+ protected ?string $ author = null ,
292
+ protected ?string $ year = null ,
293
+ protected ?string $ extension = null ,
294
+
287
295
protected ?string $ slug = null ,
288
296
protected ?string $ slugSimple = null ,
289
297
protected ?string $ seriesSlug = null ,
@@ -292,39 +300,72 @@ protected function __construct(
292
300
}
293
301
294
302
/**
295
- * Create a new MetaTitle instance.
303
+ * Create a new MetaTitle instance from an Ebook .
296
304
*/
297
- public static function make (Ebook $ ebook ): ?self
305
+ public static function fromEbook (Ebook $ ebook ): ?self
298
306
{
299
307
if (! $ ebook ->getTitle ()) {
300
308
return null ;
301
309
}
302
310
303
- $ self = new self ();
311
+ $ self = new self (
312
+ title: $ ebook ->getTitle (),
313
+ language: $ ebook ->getLanguage (),
314
+ series: $ ebook ->getSeries (),
315
+ volume: (string ) $ ebook ->getVolume (),
316
+ author: $ ebook ->getAuthorMain ()?->getName(),
317
+ year: $ ebook ->getPublishDate ()?->format('Y ' ),
318
+ extension: $ ebook ->getExtension (),
319
+ );
320
+ $ self ->parse ();
321
+
322
+ return $ self ;
323
+ }
304
324
305
- $ self ->parse ($ ebook );
325
+ /**
326
+ * Create a new MetaTitle instance from data.
327
+ */
328
+ public static function fromData (
329
+ string $ title ,
330
+ ?string $ language = null ,
331
+ ?string $ series = null ,
332
+ string |int |null $ volume = null ,
333
+ ?string $ author = null ,
334
+ string |int |null $ year = null ,
335
+ ?string $ extension = null ,
336
+ ): self {
337
+ $ self = new self (
338
+ title: $ title ,
339
+ language: $ language ,
340
+ series: $ series ,
341
+ volume: (string ) $ volume ,
342
+ author: $ author ,
343
+ year: (string ) $ year ,
344
+ extension: $ extension ,
345
+ );
346
+ $ self ->parse ();
306
347
307
348
return $ self ;
308
349
}
309
350
310
- private function parse (Ebook $ ebook ): static
351
+ private function parse (): static
311
352
{
312
- $ title = $ this ->generateSlug ($ ebook -> getTitle () );
313
- $ language = $ ebook -> getLanguage () ? $ this ->generateSlug ($ ebook -> getLanguage () ) : null ;
314
- $ series = $ ebook -> getSeries () ? $ this ->generateSlug ($ ebook -> getSeries () ) : null ;
315
- $ volume = $ ebook -> getVolume () ? str_pad ((string ) $ ebook -> getVolume () , 2 , '0 ' , STR_PAD_LEFT ) : null ;
316
- $ author = $ ebook -> getAuthorMain ()?->getName() ? $ this ->generateSlug ($ ebook -> getAuthorMain ()-> getName () ) : null ;
317
- $ year = $ ebook -> getPublishDate ()?->format( ' Y ' ) ? $ this ->generateSlug ($ ebook -> getPublishDate ()-> format ( ' Y ' ) ) : null ;
318
- $ extension = strtolower ($ ebook -> getExtension () );
353
+ $ title = $ this ->generateSlug ($ this -> title );
354
+ $ language = $ this -> language ? $ this ->generateSlug ($ this -> language ) : null ;
355
+ $ series = $ this -> series ? $ this ->generateSlug ($ this -> series ) : null ;
356
+ $ volume = $ this -> volume ? str_pad ((string ) $ this -> volume , 2 , '0 ' , STR_PAD_LEFT ) : null ;
357
+ $ author = $ this -> author ? $ this ->generateSlug ($ this -> author ) : null ;
358
+ $ year = $ this -> year ? $ this ->generateSlug ($ this -> year ) : null ;
359
+ $ extension = strtolower ($ this -> extension );
319
360
320
- $ titleDeterminer = $ this ->removeDeterminers ($ ebook -> getTitle () , $ ebook -> getLanguage () );
321
- $ seriesDeterminer = $ this ->removeDeterminers ($ ebook -> getSeries () , $ ebook -> getLanguage () );
361
+ $ titleDeterminer = $ this ->removeDeterminers ($ this -> title , $ this -> language );
362
+ $ seriesDeterminer = $ this ->removeDeterminers ($ this -> series , $ this -> language );
322
363
323
364
if (! $ title ) {
324
365
return $ this ;
325
366
}
326
367
327
- if ($ ebook -> getSeries () ) {
368
+ if ($ this -> series ) {
328
369
$ this ->slug = $ this ->generateSlug ([
329
370
$ seriesDeterminer ,
330
371
$ language ,
@@ -345,7 +386,7 @@ private function parse(Ebook $ebook): static
345
386
}
346
387
$ this ->slugSimple = $ this ->generateSlug ([$ title ]);
347
388
348
- if (! $ ebook -> getSeries () ) {
389
+ if (! $ this -> series ) {
349
390
return $ this ;
350
391
}
351
392
0 commit comments