1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-27 19:17:43 +00:00

pr: add column separator option

This commit is contained in:
Tilak Patidar 2018-12-22 14:15:50 +05:30 committed by Max Semenik
parent 69371ce3ce
commit dd07aed4d1
3 changed files with 229 additions and 1 deletions

View file

@ -50,6 +50,7 @@ static FORM_FEED_OPTION: &str = "F";
static COLUMN_WIDTH_OPTION: &str = "w";
static ACROSS_OPTION: &str = "a";
static COLUMN_OPTION: &str = "column";
static COLUMN_SEPARATOR_OPTION: &str = "s";
static FILE_STDIN: &str = "-";
static READ_BUFFER_SIZE: usize = 1024 * 64;
static DEFAULT_COLUMN_WIDTH: usize = 72;
@ -272,6 +273,16 @@ pub fn uumain(args: Vec<String>) -> i32 {
Occur::Optional,
);
opts.opt(
COLUMN_SEPARATOR_OPTION,
"",
"Separate text columns by the single character char instead of by the appropriate number of <space>s
(default for char is the <tab> character).",
"char",
HasArg::Yes,
Occur::Optional,
);
opts.optflag("", "help", "display this help and exit");
opts.optflag("V", "version", "output version information and exit");
@ -497,6 +508,10 @@ fn build_options(matches: &Matches, path: &String) -> Result<OutputOptions, PrEr
let across_mode = matches.opt_present(ACROSS_OPTION);
let column_separator = matches.opt_str(COLUMN_SEPARATOR_OPTION)
.unwrap_or(DEFAULT_COLUMN_SEPARATOR.to_string());
let column_mode_options = match matches.opt_str(COLUMN_OPTION).map(|i| {
i.parse::<usize>()
}) {
@ -507,7 +522,7 @@ fn build_options(matches: &Matches, path: &String) -> Result<OutputOptions, PrEr
Some(x) => Some(x),
None => Some(DEFAULT_COLUMN_WIDTH)
},
column_separator: DEFAULT_COLUMN_SEPARATOR.to_string(),
column_separator,
across_mode,
})
}

View file

@ -0,0 +1,198 @@
{last_modified_time} column.log Page 3
337 337 | 338 338 | 339 339
340 340 | 341 341 | 342 342
343 343 | 344 344 | 345 345
346 346 | 347 347 | 348 348
349 349 | 350 350 | 351 351
352 352 | 353 353 | 354 354
355 355 | 356 356 | 357 357
358 358 | 359 359 | 360 360
361 361 | 362 362 | 363 363
364 364 | 365 365 | 366 366
367 367 | 368 368 | 369 369
370 370 | 371 371 | 372 372
373 373 | 374 374 | 375 375
376 376 | 377 377 | 378 378
379 379 | 380 380 | 381 381
382 382 | 383 383 | 384 384
385 385 | 386 386 | 387 387
388 388 | 389 389 | 390 390
391 391 | 392 392 | 393 393
394 394 | 395 395 | 396 396
397 397 | 398 398 | 399 399
400 400 | 401 401 | 402 402
403 403 | 404 404 | 405 405
406 406 | 407 407 | 408 408
409 409 | 410 410 | 411 411
412 412 | 413 413 | 414 414
415 415 | 416 416 | 417 417
418 418 | 419 419 | 420 420
421 421 | 422 422 | 423 423
424 424 | 425 425 | 426 426
427 427 | 428 428 | 429 429
430 430 | 431 431 | 432 432
433 433 | 434 434 | 435 435
436 436 | 437 437 | 438 438
439 439 | 440 440 | 441 441
442 442 | 443 443 | 444 444
445 445 | 446 446 | 447 447
448 448 | 449 449 | 450 450
451 451 | 452 452 | 453 453
454 454 | 455 455 | 456 456
457 457 | 458 458 | 459 459
460 460 | 461 461 | 462 462
463 463 | 464 464 | 465 465
466 466 | 467 467 | 468 468
469 469 | 470 470 | 471 471
472 472 | 473 473 | 474 474
475 475 | 476 476 | 477 477
478 478 | 479 479 | 480 480
481 481 | 482 482 | 483 483
484 484 | 485 485 | 486 486
487 487 | 488 488 | 489 489
490 490 | 491 491 | 492 492
493 493 | 494 494 | 495 495
496 496 | 497 497 | 498 498
499 499 | 500 500 | 501 501
502 502 | 503 503 | 504 504
{last_modified_time} column.log Page 4
505 505 | 506 506 | 507 507
508 508 | 509 509 | 510 510
511 511 | 512 512 | 513 513
514 514 | 515 515 | 516 516
517 517 | 518 518 | 519 519
520 520 | 521 521 | 522 522
523 523 | 524 524 | 525 525
526 526 | 527 527 | 528 528
529 529 | 530 530 | 531 531
532 532 | 533 533 | 534 534
535 535 | 536 536 | 537 537
538 538 | 539 539 | 540 540
541 541 | 542 542 | 543 543
544 544 | 545 545 | 546 546
547 547 | 548 548 | 549 549
550 550 | 551 551 | 552 552
553 553 | 554 554 | 555 555
556 556 | 557 557 | 558 558
559 559 | 560 560 | 561 561
562 562 | 563 563 | 564 564
565 565 | 566 566 | 567 567
568 568 | 569 569 | 570 570
571 571 | 572 572 | 573 573
574 574 | 575 575 | 576 576
577 577 | 578 578 | 579 579
580 580 | 581 581 | 582 582
583 583 | 584 584 | 585 585
586 586 | 587 587 | 588 588
589 589 | 590 590 | 591 591
592 592 | 593 593 | 594 594
595 595 | 596 596 | 597 597
598 598 | 599 599 | 600 600
601 601 | 602 602 | 603 603
604 604 | 605 605 | 606 606
607 607 | 608 608 | 609 609
610 610 | 611 611 | 612 612
613 613 | 614 614 | 615 615
616 616 | 617 617 | 618 618
619 619 | 620 620 | 621 621
622 622 | 623 623 | 624 624
625 625 | 626 626 | 627 627
628 628 | 629 629 | 630 630
631 631 | 632 632 | 633 633
634 634 | 635 635 | 636 636
637 637 | 638 638 | 639 639
640 640 | 641 641 | 642 642
643 643 | 644 644 | 645 645
646 646 | 647 647 | 648 648
649 649 | 650 650 | 651 651
652 652 | 653 653 | 654 654
655 655 | 656 656 | 657 657
658 658 | 659 659 | 660 660
661 661 | 662 662 | 663 663
664 664 | 665 665 | 666 666
667 667 | 668 668 | 669 669
670 670 | 671 671 | 672 672
{last_modified_time} column.log Page 5
673 673 | 674 674 | 675 675
676 676 | 677 677 | 678 678
679 679 | 680 680 | 681 681
682 682 | 683 683 | 684 684
685 685 | 686 686 | 687 687
688 688 | 689 689 | 690 690
691 691 | 692 692 | 693 693
694 694 | 695 695 | 696 696
697 697 | 698 698 | 699 699
700 700 | 701 701 | 702 702
703 703 | 704 704 | 705 705
706 706 | 707 707 | 708 708
709 709 | 710 710 | 711 711
712 712 | 713 713 | 714 714
715 715 | 716 716 | 717 717
718 718 | 719 719 | 720 720
721 721 | 722 722 | 723 723
724 724 | 725 725 | 726 726
727 727 | 728 728 | 729 729
730 730 | 731 731 | 732 732
733 733 | 734 734 | 735 735
736 736 | 737 737 | 738 738
739 739 | 740 740 | 741 741
742 742 | 743 743 | 744 744
745 745 | 746 746 | 747 747
748 748 | 749 749 | 750 750
751 751 | 752 752 | 753 753
754 754 | 755 755 | 756 756
757 757 | 758 758 | 759 759
760 760 | 761 761 | 762 762
763 763 | 764 764 | 765 765
766 766 | 767 767 | 768 768
769 769 | 770 770 | 771 771
772 772 | 773 773 | 774 774
775 775 | 776 776 | 777 777
778 778 | 779 779 | 780 780
781 781 | 782 782 | 783 783
784 784 | 785 785 | 786 786
787 787 | 788 788 | 789 789
790 790 | 791 791 | 792 792
793 793 | 794 794 | 795 795
796 796 | 797 797 | 798 798
799 799 | 800 800 | 801 801
802 802 | 803 803 | 804 804
805 805 | 806 806 | 807 807
808 808 | 809 809 | 810 810
811 811 | 812 812 | 813 813
814 814 | 815 815 | 816 816
817 817 | 818 818 | 819 819
820 820 | 821 821 | 822 822
823 823 | 824 824 | 825 825
826 826 | 827 827 | 828 828
829 829 | 830 830 | 831 831
832 832 | 833 833 | 834 834
835 835 | 836 836 | 837 837
838 838 | 839 839 | 840 840

View file

@ -324,3 +324,18 @@ fn test_with_column_across_option() {
}
#[test]
fn test_with_column_across_option_and_column_separator() {
let test_file_path = "column.log";
let expected_test_file_path = "column_across_sep.log.expected";
let mut scenario = new_ucmd!();
let value = file_last_modified_time(&scenario, test_file_path);
scenario
.args(&["--pages=3:5", "--column=3", "-s|", "-a", "-n", test_file_path])
.succeeds()
.stdout_is_templated_fixture(expected_test_file_path, vec![
(&"{last_modified_time}".to_string(), &value),
]);
}