pseudohikiparser 0.0.3 → 0.0.4.develop

Sign up to get free protection for your applications and to get access to all the features.
@@ -677,6 +677,20 @@ HTML
677
677
  assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
678
678
  end
679
679
 
680
+ def test_no_automatical_link_generation
681
+ text = <<TEXT
682
+ a line with a url http://www.example.org/ to test an automatical link generation.
683
+ TEXT
684
+
685
+ xhtml = <<HTML
686
+ <p>
687
+ a line with a url http://www.example.org/ to test an automatical link generation.
688
+ </p>
689
+ HTML
690
+ tree = BlockParser.parse(text.lines.to_a, AutoLink::Off)
691
+ assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
692
+ end
693
+
680
694
  def test_automatical_link_generation_in_verbatim_blocks
681
695
  text = <<TEXT
682
696
  a line with a url http://www.example.org/ to test an automatical link generation.
@@ -696,6 +710,428 @@ HTML
696
710
  assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
697
711
  end
698
712
 
713
+ def test_no_automatical_link_generation_in_verbatim_blocks
714
+ text = <<TEXT
715
+ a line with a url http://www.example.org/ to test an automatical link generation.
716
+
717
+ another line with [[link|sample.html]]
718
+ TEXT
719
+
720
+ xhtml = <<HTML
721
+ <pre>
722
+ a line with a url http://www.example.org/ to test an automatical link generation.
723
+ </pre>
724
+ <pre>
725
+ another line with [[link|sample.html]]
726
+ </pre>
727
+ HTML
728
+ tree = BlockParser.parse(text.lines.to_a)
729
+ XhtmlFormat.auto_link_in_verbatim = false
730
+ assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
731
+ XhtmlFormat.auto_link_in_verbatim = true
732
+ end
733
+
734
+ def test_temporal_no_automatical_link_generation_in_verbatim_blocks
735
+ text = <<TEXT
736
+ a line with a url http://www.example.org/ to test an automatical link generation.
737
+
738
+ another line with [[link|sample.html]]
739
+ TEXT
740
+
741
+ xhtml = <<HTML
742
+ <pre>
743
+ a line with a url http://www.example.org/ to test an automatical link generation.
744
+ </pre>
745
+ <pre>
746
+ another line with [[link|sample.html]]
747
+ </pre>
748
+ HTML
749
+ tree = BlockParser.parse(text.lines.to_a)
750
+ assert_equal(xhtml, XhtmlFormat.format(tree, {:auto_link_in_verbatim => false }).to_s)
751
+ end
752
+
753
+ def test_temporal_no_automatical_link_generation_in_verbatim_blocks_with_html
754
+ text = <<TEXT
755
+ a line with a url http://www.example.org/ to test an automatical link generation.
756
+
757
+ another line with [[link|sample.html]]
758
+ TEXT
759
+
760
+ xhtml = <<HTML
761
+ <pre>
762
+ a line with a url http://www.example.org/ to test an automatical link generation.
763
+ </pre>
764
+ <pre>
765
+ another line with [[link|sample.html]]
766
+ </pre>
767
+ HTML
768
+ tree = BlockParser.parse(text.lines.to_a)
769
+ assert_equal(xhtml, HtmlFormat.format(tree, {:auto_link_in_verbatim => false }).to_s)
770
+ end
771
+
772
+ def test_decorator
773
+ text = <<TEXT
774
+ //@class[section_type]
775
+ !!title of section
776
+
777
+ a paragraph.
778
+
779
+ //@class[class_name]
780
+ //@id[id_name]
781
+ another paragraph.
782
+ TEXT
783
+
784
+ xhtml = <<HTML
785
+ <div class="section_type">
786
+ <h2>title of section</h2>
787
+ <p>
788
+ a paragraph.</p>
789
+ <p class="class_name" id="ID_NAME">
790
+ another paragraph.</p>
791
+ <!-- end of section_type -->
792
+ </div>
793
+ HTML
794
+ tree = BlockParser.parse(text.lines.to_a.map {|line| line.chomp })
795
+ assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
796
+ end
797
+
798
+ def test_decorator_for_table
799
+ text = <<TEXT
800
+ //@summary: Summary of the table
801
+ ||!header 1||! header 2
802
+ ||cell 1||cell 2
803
+ TEXT
804
+
805
+ xhtml = <<HTML
806
+ <table summary="Summary of the table">
807
+ <tr><th>header 1</th><th> header 2</th></tr>
808
+ <tr><td>cell 1</td><td>cell 2</td></tr>
809
+ </table>
810
+ HTML
811
+ tree = BlockParser.parse(text.lines.to_a.map {|line| line.chomp })
812
+ assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
813
+ end
814
+
815
+ def test_decorator_for_verbatim
816
+ text = <<TEXT
817
+ //@code[ruby]
818
+ def bonjour!
819
+ puts "Bonjour!"
820
+ end
821
+ TEXT
822
+
823
+ xhtml = <<HTML
824
+ <pre>
825
+ def bonjour!
826
+ puts &quot;Bonjour!&quot;
827
+ end
828
+ </pre>
829
+ HTML
830
+
831
+ tree = BlockParser.parse(text.lines.to_a)
832
+ assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
833
+ end
834
+
835
+ def test_sectioning_node
836
+ text = <<TEXT
837
+ ! Main title
838
+
839
+ //@begin[header]
840
+ !! first title in header
841
+
842
+ paragraph
843
+
844
+ !! second title in header
845
+
846
+ paragraph2
847
+
848
+ //@end[header]
849
+
850
+ !! first subtitle in main part
851
+
852
+ paragraph3
853
+
854
+ //@begin[#footer]
855
+
856
+ paragraph4
857
+
858
+ //@end[#footer]
859
+
860
+ TEXT
861
+
862
+ expected_html = <<HTML
863
+ <div class="section h1">
864
+ <h1> Main title
865
+ </h1>
866
+ <div class="header">
867
+ <div class="section h2">
868
+ <h2> first title in header
869
+ </h2>
870
+ <p>
871
+ paragraph
872
+ </p>
873
+ <!-- end of section h2 -->
874
+ </div>
875
+ <div class="section h2">
876
+ <h2> second title in header
877
+ </h2>
878
+ <p>
879
+ paragraph2
880
+ </p>
881
+ <!-- end of section h2 -->
882
+ </div>
883
+ <!-- end of header -->
884
+ </div>
885
+ <div class="section h2">
886
+ <h2> first subtitle in main part
887
+ </h2>
888
+ <p>
889
+ paragraph3
890
+ </p>
891
+ <div class="section" id="footer">
892
+ <p>
893
+ paragraph4
894
+ </p>
895
+ <!-- end of footer -->
896
+ </div>
897
+ <!-- end of section h2 -->
898
+ </div>
899
+ <!-- end of section h1 -->
900
+ </div>
901
+ HTML
902
+
903
+ tree = BlockParser.parse(text.lines.to_a)
904
+ assert_equal(expected_html, XhtmlFormat.format(tree).to_s)
905
+ end
906
+
907
+ def test_sectioning_node_for_html5
908
+ text = <<TEXT
909
+ ! Main title
910
+
911
+ //@begin[header]
912
+ !! first title in header
913
+
914
+ paragraph
915
+
916
+ !! second title in header
917
+
918
+ paragraph2
919
+
920
+ //@end[header]
921
+
922
+ !! first subtitle in main part
923
+
924
+ paragraph3
925
+
926
+ //@begin[#footer]
927
+
928
+ paragraph4
929
+
930
+ //@end[#footer]
931
+
932
+ TEXT
933
+
934
+ expected_html = <<HTML
935
+ <section class="h1">
936
+ <h1> Main title
937
+ </h1>
938
+ <header>
939
+ <section class="h2">
940
+ <h2> first title in header
941
+ </h2>
942
+ <p>
943
+ paragraph
944
+ </p>
945
+ <!-- end of h2 -->
946
+ </section>
947
+ <section class="h2">
948
+ <h2> second title in header
949
+ </h2>
950
+ <p>
951
+ paragraph2
952
+ </p>
953
+ <!-- end of h2 -->
954
+ </section>
955
+ </header>
956
+ <section class="h2">
957
+ <h2> first subtitle in main part
958
+ </h2>
959
+ <p>
960
+ paragraph3
961
+ </p>
962
+ <section id="footer">
963
+ <p>
964
+ paragraph4
965
+ </p>
966
+ <!-- end of footer -->
967
+ </section>
968
+ <!-- end of h2 -->
969
+ </section>
970
+ <!-- end of h1 -->
971
+ </section>
972
+ HTML
973
+
974
+ tree = BlockParser.parse(text.lines.to_a)
975
+ assert_equal(expected_html, Xhtml5Format.format(tree).to_s)
976
+ end
977
+
978
+ def test_sectioning_node_when_end_tag_is_omitted
979
+ text = <<TEXT
980
+ !! First part
981
+
982
+ paragraph1
983
+
984
+ //@begin[first_sub_part]
985
+ !!! first title in first sub-part
986
+
987
+ paragraph2
988
+
989
+ !!! second title in first sub-part
990
+
991
+ paragraph3
992
+
993
+ //you should put //@end[first_sub_part] here.
994
+
995
+ !! Second part
996
+
997
+ paragraph4
998
+
999
+ //@begin[#footer]
1000
+
1001
+ paragraph5
1002
+
1003
+ //@end[#footer]
1004
+
1005
+ TEXT
1006
+
1007
+ expected_html = <<HTML
1008
+ <div class=\"section h2\">
1009
+ <h2> First part
1010
+ </h2>
1011
+ <p>
1012
+ paragraph1
1013
+ </p>
1014
+ <div class=\"section first_sub_part\">
1015
+ <div class=\"section h3\">
1016
+ <h3> first title in first sub-part
1017
+ </h3>
1018
+ <p>
1019
+ paragraph2
1020
+ </p>
1021
+ <!-- end of section h3 -->
1022
+ </div>
1023
+ <div class=\"section h3\">
1024
+ <h3> second title in first sub-part
1025
+ </h3>
1026
+ <p>
1027
+ paragraph3
1028
+ </p>
1029
+ <!-- end of section h3 -->
1030
+ </div>
1031
+ <!-- end of section first_sub_part -->
1032
+ </div>
1033
+ <!-- end of section h2 -->
1034
+ </div>
1035
+ <div class=\"section h2\">
1036
+ <h2> Second part
1037
+ </h2>
1038
+ <p>
1039
+ paragraph4
1040
+ </p>
1041
+ <div class=\"section\" id=\"footer\">
1042
+ <p>
1043
+ paragraph5
1044
+ </p>
1045
+ <!-- end of footer -->
1046
+ </div>
1047
+ <!-- end of section h2 -->
1048
+ </div>
1049
+ HTML
1050
+
1051
+ tree = BlockParser.parse(text.lines.to_a)
1052
+ assert_equal(expected_html, XhtmlFormat.format(tree).to_s)
1053
+ end
1054
+
1055
+ def test_sectioning_node_when_end_tag_is_wrongly_placed
1056
+ text = <<TEXT
1057
+ !! First part
1058
+
1059
+ paragraph1
1060
+
1061
+ //@begin[first_sub_part]
1062
+ !!! first title in first sub-part
1063
+
1064
+ paragraph2
1065
+
1066
+ !!! second title in first sub-part
1067
+
1068
+ paragraph3
1069
+
1070
+ //you should put //@end[first_sub_part] here.
1071
+
1072
+ !! Second part
1073
+
1074
+ paragraph4
1075
+
1076
+
1077
+ //@end[first_sub_part] this end tag is wrongly placed.
1078
+
1079
+ //@begin[#footer]
1080
+
1081
+ paragraph5
1082
+
1083
+ //@end[#footer]
1084
+
1085
+ TEXT
1086
+
1087
+ expected_html = <<HTML
1088
+ <div class=\"section h2\">
1089
+ <h2> First part
1090
+ </h2>
1091
+ <p>
1092
+ paragraph1
1093
+ </p>
1094
+ <div class=\"section first_sub_part\">
1095
+ <div class=\"section h3\">
1096
+ <h3> first title in first sub-part
1097
+ </h3>
1098
+ <p>
1099
+ paragraph2
1100
+ </p>
1101
+ <!-- end of section h3 -->
1102
+ </div>
1103
+ <div class=\"section h3\">
1104
+ <h3> second title in first sub-part
1105
+ </h3>
1106
+ <p>
1107
+ paragraph3
1108
+ </p>
1109
+ <!-- end of section h3 -->
1110
+ </div>
1111
+ <!-- end of section first_sub_part -->
1112
+ </div>
1113
+ <!-- end of section h2 -->
1114
+ </div>
1115
+ <div class=\"section h2\">
1116
+ <h2> Second part
1117
+ </h2>
1118
+ <p>
1119
+ paragraph4
1120
+ </p>
1121
+ <div class=\"section\" id=\"footer\">
1122
+ <p>
1123
+ paragraph5
1124
+ </p>
1125
+ <!-- end of footer -->
1126
+ </div>
1127
+ <!-- end of section h2 -->
1128
+ </div>
1129
+ HTML
1130
+
1131
+ tree = BlockParser.parse(text.lines.to_a)
1132
+ assert_equal(expected_html, XhtmlFormat.format(tree).to_s)
1133
+ end
1134
+
699
1135
  def test_comment_out_followed_by_a_verbatim_block
700
1136
  text = <<TEXT
701
1137
  the first paragraph
@@ -23,4 +23,47 @@ class TC_HtmlPlugin < MiniTest::Unit::TestCase
23
23
  tree = InlineParser.new("you can directly embed a snippet of html code like '{{html(<i>italic</i>)}}'.").parse.tree
24
24
  assert_equal("you can directly embed a snippet of html code like '<i>italic</i>'.",tree.accept(formatter).to_s)
25
25
  end
26
+
27
+ def test_html
28
+ expected_html = '<ul>
29
+ <li>list
30
+ <li>list
31
+ </ul>'
32
+
33
+ input = "html(
34
+ <ul>
35
+ <li>list
36
+ <li>list
37
+ </ul>)"
38
+
39
+ assert_equal(expected_html, HtmlPlugin.new("div", input).apply)
40
+ end
41
+
42
+ def test_inline
43
+ input = "inline(
44
+ *list
45
+ *list
46
+ )"
47
+
48
+ assert_raises(ArgumentError) do
49
+ HtmlPlugin.new("div", input).apply
50
+ end
51
+ end
52
+
53
+ def test_co2
54
+ assert_equal("CO<sub>2</sub>", HtmlPlugin.new("div", "co2").apply)
55
+ assert_equal("carbon dioxide", HtmlPlugin.new("div", "co2 :en").apply)
56
+ end
57
+
58
+ def test_cubic
59
+ assert_equal("3km<sup>3</sup>", HtmlPlugin.new("div", "cb(3km)").apply)
60
+ end
61
+
62
+ def test_per
63
+ assert_equal("m<sup>-1</sup>", HtmlPlugin.new("div", "per m").apply)
64
+ end
65
+
66
+ def test_co2_isotope
67
+ assert_equal("<sup>18</sup>CO<sub>2</sub>", HtmlPlugin.new("div", "iso 18co2").apply)
68
+ end
26
69
  end
@@ -44,11 +44,11 @@ TEXT
44
44
  assert_equal(gfm_text, MarkDownFormat.format(tree, :gfm_style => true))
45
45
  end
46
46
 
47
- def test_self_convert_to_gfm_id_format
47
+ def test_self_convert_into_gfm_id_format
48
48
  heading_with_non_ascii_chars = "class PseudoHiki::BlockParser"
49
49
  heading_with_multiple_spaces = "Development status of features from the original Hiki notation"
50
- gfm_id_with_non_ascii_chars = MarkDownFormat.convert_to_gfm_id_format(heading_with_non_ascii_chars)
51
- gfm_id_with_multiple_spaces = MarkDownFormat.convert_to_gfm_id_format(heading_with_multiple_spaces)
50
+ gfm_id_with_non_ascii_chars = MarkDownFormat.convert_into_gfm_id_format(heading_with_non_ascii_chars)
51
+ gfm_id_with_multiple_spaces = MarkDownFormat.convert_into_gfm_id_format(heading_with_multiple_spaces)
52
52
  assert_equal("class-pseudohikiblockparser", gfm_id_with_non_ascii_chars)
53
53
  assert_equal("development-status-of-features-from-the-original-hiki-notation", gfm_id_with_multiple_spaces)
54
54
  end
@@ -518,6 +518,159 @@ TEXT
518
518
  assert_equal(md_text, @formatter.format(tree).to_s)
519
519
  end
520
520
 
521
+ def test_decorator_for_verbatim
522
+ text = <<TEXT
523
+ //@code[ruby]
524
+ def bonjour!
525
+ puts "Bonjour!"
526
+ end
527
+ TEXT
528
+
529
+ gfm_text =<<TEXT
530
+ ```ruby
531
+ def bonjour!
532
+ puts "Bonjour!"
533
+ end
534
+ ```
535
+
536
+ TEXT
537
+
538
+ md_text = <<TEXT
539
+ def bonjour!
540
+ puts "Bonjour!"
541
+ end
542
+
543
+ TEXT
544
+
545
+ tree = BlockParser.parse(text.lines.to_a)
546
+ assert_equal(gfm_text, @gfm_formatter.format(tree).to_s)
547
+ assert_equal(md_text, @formatter.format(tree).to_s)
548
+ end
549
+
550
+ def test_decorator_for_verbatim_block
551
+ text = <<TEXT
552
+ //@code[ruby]
553
+ <<<
554
+ def bonjour!
555
+ puts "Bonjour!"
556
+ end
557
+ >>>
558
+ TEXT
559
+
560
+ gfm_text =<<TEXT
561
+ ```ruby
562
+ def bonjour!
563
+ puts "Bonjour!"
564
+ end
565
+ ```
566
+
567
+ TEXT
568
+
569
+ md_text = <<TEXT
570
+ def bonjour!
571
+ puts "Bonjour!"
572
+ end
573
+
574
+ TEXT
575
+
576
+ tree = BlockParser.parse(text.lines.to_a)
577
+ assert_equal(gfm_text, @gfm_formatter.format(tree).to_s)
578
+ assert_equal(md_text, @formatter.format(tree).to_s)
579
+ end
580
+
581
+ def test_without_sectioning_node
582
+ text = <<TEXT
583
+ ! Main title
584
+
585
+ !! first title in header
586
+
587
+ paragraph
588
+
589
+ !! second title in header
590
+
591
+ paragraph2
592
+
593
+ !! first subtitle in main part
594
+
595
+ paragraph3
596
+
597
+ paragraph4
598
+
599
+ TEXT
600
+
601
+ expected_text = <<HTML
602
+ # Main title
603
+
604
+ ## first title in header
605
+
606
+ paragraph
607
+
608
+ ## second title in header
609
+
610
+ paragraph2
611
+
612
+ ## first subtitle in main part
613
+
614
+ paragraph3
615
+
616
+ paragraph4
617
+
618
+ HTML
619
+
620
+ tree = BlockParser.parse(text.lines.to_a)
621
+ assert_equal(expected_text, @gfm_formatter.format(tree).to_s)
622
+ end
623
+
624
+ def test_sectioning_node
625
+ text = <<TEXT
626
+ ! Main title
627
+
628
+ //@begin[header]
629
+ !! first title in header
630
+
631
+ paragraph
632
+
633
+ !! second title in header
634
+
635
+ paragraph2
636
+
637
+ //@end[header]
638
+
639
+ !! first subtitle in main part
640
+
641
+ paragraph3
642
+
643
+ //@begin[#footer]
644
+
645
+ paragraph4
646
+
647
+ //@end[#footer]
648
+
649
+ TEXT
650
+
651
+ expected_text = <<HTML
652
+ # Main title
653
+
654
+ ## first title in header
655
+
656
+ paragraph
657
+
658
+ ## second title in header
659
+
660
+ paragraph2
661
+
662
+ ## first subtitle in main part
663
+
664
+ paragraph3
665
+
666
+ paragraph4
667
+
668
+ HTML
669
+
670
+ tree = BlockParser.parse(text.lines.to_a)
671
+ assert_equal(expected_text, @gfm_formatter.format(tree).to_s)
672
+ end
673
+
521
674
  def test_collect_headings
522
675
  text = <<TEXT
523
676
  !![main-heading] heading