Class: RDoc::RD::BlockParser
- Inherits:
-
Racc::Parser
- Object
- Racc::Parser
- RDoc::RD::BlockParser
- Defined in:
- lib/rdoc/rd/block_parser.rb
Overview
RD format parser for headings, paragraphs, lists, verbatim sections that exist as blocks.
Constant Summary collapse
- MARK_TO_LEVEL =
:stopdoc:
{ '=' => 1, '==' => 2, '===' => 3, '====' => 4, '+' => 5, '++' => 6, }
- Racc_arg =
[ racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var ]
- Racc_token_to_s_table =
[ "$end", "error", "DUMMY", "ITEMLISTLINE", "ENUMLISTLINE", "DESCLISTLINE", "METHODLISTLINE", "STRINGLINE", "WHITELINE", "SUBTREE", "HEADLINE", "INCLUDE", "INDENT", "DEDENT", "$start", "document", "blocks", "block", "textblock", "verbatim", "lists", "headline", "include", "textblockcontent", "verbatimcontent", "verbatim_after_lists", "list", "itemlist", "enumlist", "desclist", "methodlist", "lists2", "itemlistitems", "itemlistitem", "first_textblock_in_itemlist", "other_blocks_in_list", "enumlistitems", "enumlistitem", "first_textblock_in_enumlist", "desclistitems", "desclistitem", "description_part", "methodlistitems", "methodlistitem", "whitelines", "blocks_in_list", "block_in_list", "whitelines2" ]
- Racc_debug_parser =
false
Instance Attribute Summary collapse
-
#footnotes ⇒ Object
readonly
Footnotes for this document.
-
#include_path ⇒ Object
Path to find included files in.
-
#labels ⇒ Object
readonly
Labels for items in this document.
Instance Method Summary collapse
-
#_reduce_1(val, _values, result) ⇒ Object
reduce 0 omitted.
- #_reduce_10(val, _values, result) ⇒ Object
- #_reduce_11(val, _values, result) ⇒ Object
- #_reduce_12(val, _values, result) ⇒ Object
- #_reduce_13(val, _values, result) ⇒ Object
- #_reduce_14(val, _values, result) ⇒ Object
- #_reduce_15(val, _values, result) ⇒ Object
- #_reduce_16(val, _values, result) ⇒ Object
- #_reduce_17(val, _values, result) ⇒ Object
- #_reduce_18(val, _values, result) ⇒ Object
- #_reduce_19(val, _values, result) ⇒ Object
- #_reduce_2(val, _values, result) ⇒ Object
- #_reduce_20(val, _values, result) ⇒ Object
- #_reduce_21(val, _values, result) ⇒ Object
- #_reduce_22(val, _values, result) ⇒ Object
-
#_reduce_27(val, _values, result) ⇒ Object
reduce 26 omitted.
- #_reduce_28(val, _values, result) ⇒ Object
- #_reduce_29(val, _values, result) ⇒ Object
- #_reduce_3(val, _values, result) ⇒ Object
- #_reduce_30(val, _values, result) ⇒ Object
- #_reduce_31(val, _values, result) ⇒ Object
- #_reduce_32(val, _values, result) ⇒ Object
- #_reduce_33(val, _values, result) ⇒ Object
- #_reduce_34(val, _values, result) ⇒ Object
- #_reduce_35(val, _values, result) ⇒ Object
- #_reduce_36(val, _values, result) ⇒ Object
- #_reduce_37(val, _values, result) ⇒ Object
- #_reduce_38(val, _values, result) ⇒ Object
- #_reduce_39(val, _values, result) ⇒ Object
- #_reduce_4(val, _values, result) ⇒ Object
- #_reduce_40(val, _values, result) ⇒ Object
- #_reduce_41(val, _values, result) ⇒ Object
- #_reduce_42(val, _values, result) ⇒ Object
- #_reduce_43(val, _values, result) ⇒ Object
- #_reduce_44(val, _values, result) ⇒ Object
- #_reduce_45(val, _values, result) ⇒ Object
- #_reduce_46(val, _values, result) ⇒ Object
- #_reduce_47(val, _values, result) ⇒ Object
- #_reduce_48(val, _values, result) ⇒ Object
- #_reduce_49(val, _values, result) ⇒ Object
- #_reduce_5(val, _values, result) ⇒ Object
- #_reduce_50(val, _values, result) ⇒ Object
- #_reduce_51(val, _values, result) ⇒ Object
- #_reduce_52(val, _values, result) ⇒ Object
-
#_reduce_54(val, _values, result) ⇒ Object
reduce 53 omitted.
- #_reduce_55(val, _values, result) ⇒ Object
-
#_reduce_57(val, _values, result) ⇒ Object
reduce 56 omitted.
- #_reduce_6(val, _values, result) ⇒ Object
-
#_reduce_62(val, _values, result) ⇒ Object
reduce 61 omitted.
- #_reduce_63(val, _values, result) ⇒ Object
- #_reduce_64(val, _values, result) ⇒ Object
- #_reduce_65(val, _values, result) ⇒ Object
- #_reduce_66(val, _values, result) ⇒ Object
- #_reduce_67(val, _values, result) ⇒ Object
- #_reduce_68(val, _values, result) ⇒ Object
- #_reduce_69(val, _values, result) ⇒ Object
-
#_reduce_71(val, _values, result) ⇒ Object
reduce 70 omitted.
- #_reduce_72(val, _values, result) ⇒ Object
-
#_reduce_8(val, _values, result) ⇒ Object
reduce 7 omitted.
- #_reduce_9(val, _values, result) ⇒ Object
- #_reduce_none(val, _values, result) ⇒ Object
-
#add_footnote(content) ⇒ Object
Adds footnote
contentto the document. -
#add_label(label) ⇒ Object
Adds label
labelto the document. -
#content(values) ⇒ Object
Retrieves the content of
valuesas a single String. -
#initialize ⇒ BlockParser
constructor
Creates a new RDoc::RD::BlockParser.
-
#line_index ⇒ Object
Current line number.
-
#next_token ⇒ Object
Returns the next token from the document.
-
#on_error(et, ev, _values) ⇒ Object
Raises a ParseError when invalid formatting is found.
-
#paragraph(value) ⇒ Object
Creates a paragraph for
value. -
#parse(src) ⇒ Object
Parses
srcand returns an RDoc::Markup::Document.
Constructor Details
#initialize ⇒ BlockParser
Creates a new RDoc::RD::BlockParser. Use #parse to parse an rd-format document.
51 52 53 54 55 56 57 58 |
# File 'lib/rdoc/rd/block_parser.rb', line 51 def initialize @inline_parser = RDoc::RD::InlineParser.new self @include_path = [] # for testing @footnotes = [] @labels = {} end |
Instance Attribute Details
#footnotes ⇒ Object (readonly)
Footnotes for this document
35 36 37 |
# File 'lib/rdoc/rd/block_parser.rb', line 35 def footnotes @footnotes end |
#include_path ⇒ Object
Path to find included files in
45 46 47 |
# File 'lib/rdoc/rd/block_parser.rb', line 45 def include_path @include_path end |
#labels ⇒ Object (readonly)
Labels for items in this document
40 41 42 |
# File 'lib/rdoc/rd/block_parser.rb', line 40 def labels @labels end |
Instance Method Details
#_reduce_1(val, _values, result) ⇒ Object
reduce 0 omitted
684 685 686 687 |
# File 'lib/rdoc/rd/block_parser.rb', line 684 def _reduce_1(val, _values, result) result = RDoc::Markup::Document.new(*val[0]) result end |
#_reduce_10(val, _values, result) ⇒ Object
726 727 728 729 |
# File 'lib/rdoc/rd/block_parser.rb', line 726 def _reduce_10(val, _values, result) result = [RDoc::Markup::BlankLine.new] result end |
#_reduce_11(val, _values, result) ⇒ Object
731 732 733 734 |
# File 'lib/rdoc/rd/block_parser.rb', line 731 def _reduce_11(val, _values, result) result = val[0].parts result end |
#_reduce_12(val, _values, result) ⇒ Object
736 737 738 739 740 741 742 |
# File 'lib/rdoc/rd/block_parser.rb', line 736 def _reduce_12(val, _values, result) # val[0] is like [level, title] title = @inline_parser.parse(val[0][1]) result = RDoc::Markup::Heading.new(val[0][0], title) result end |
#_reduce_13(val, _values, result) ⇒ Object
744 745 746 747 748 |
# File 'lib/rdoc/rd/block_parser.rb', line 744 def _reduce_13(val, _values, result) result = RDoc::Markup::Include.new val[0], @include_path result end |
#_reduce_14(val, _values, result) ⇒ Object
750 751 752 753 754 755 |
# File 'lib/rdoc/rd/block_parser.rb', line 750 def _reduce_14(val, _values, result) # val[0] is Array of String result = paragraph val[0] result end |
#_reduce_15(val, _values, result) ⇒ Object
757 758 759 760 |
# File 'lib/rdoc/rd/block_parser.rb', line 757 def _reduce_15(val, _values, result) result << val[1].rstrip result end |
#_reduce_16(val, _values, result) ⇒ Object
762 763 764 765 |
# File 'lib/rdoc/rd/block_parser.rb', line 762 def _reduce_16(val, _values, result) result = [val[0].rstrip] result end |
#_reduce_17(val, _values, result) ⇒ Object
767 768 769 770 771 772 773 774 775 776 |
# File 'lib/rdoc/rd/block_parser.rb', line 767 def _reduce_17(val, _values, result) # val[1] is Array of String content = cut_off val[1] result = RDoc::Markup::Verbatim.new(*content) # imform to lexer. @in_verbatim = false result end |
#_reduce_18(val, _values, result) ⇒ Object
778 779 780 781 782 783 784 785 786 787 |
# File 'lib/rdoc/rd/block_parser.rb', line 778 def _reduce_18(val, _values, result) # val[0] is Array of String content = cut_off val[0] result = RDoc::Markup::Verbatim.new(*content) # imform to lexer. @in_verbatim = false result end |
#_reduce_19(val, _values, result) ⇒ Object
789 790 791 792 793 |
# File 'lib/rdoc/rd/block_parser.rb', line 789 def _reduce_19(val, _values, result) result << val[1] result end |
#_reduce_2(val, _values, result) ⇒ Object
689 690 691 692 |
# File 'lib/rdoc/rd/block_parser.rb', line 689 def _reduce_2(val, _values, result) raise ParseError, "file empty" result end |
#_reduce_20(val, _values, result) ⇒ Object
795 796 797 798 799 |
# File 'lib/rdoc/rd/block_parser.rb', line 795 def _reduce_20(val, _values, result) result.concat val[2] result end |
#_reduce_21(val, _values, result) ⇒ Object
801 802 803 804 805 |
# File 'lib/rdoc/rd/block_parser.rb', line 801 def _reduce_21(val, _values, result) result << "\n" result end |
#_reduce_22(val, _values, result) ⇒ Object
807 808 809 810 811 812 813 |
# File 'lib/rdoc/rd/block_parser.rb', line 807 def _reduce_22(val, _values, result) result = val # inform to lexer. @in_verbatim = true result end |
#_reduce_27(val, _values, result) ⇒ Object
reduce 26 omitted
823 824 825 826 827 |
# File 'lib/rdoc/rd/block_parser.rb', line 823 def _reduce_27(val, _values, result) result = val[0] result end |
#_reduce_28(val, _values, result) ⇒ Object
829 830 831 832 833 |
# File 'lib/rdoc/rd/block_parser.rb', line 829 def _reduce_28(val, _values, result) result = val[1] result end |
#_reduce_29(val, _values, result) ⇒ Object
835 836 837 838 839 |
# File 'lib/rdoc/rd/block_parser.rb', line 835 def _reduce_29(val, _values, result) result = val[1].push(val[2]) result end |
#_reduce_3(val, _values, result) ⇒ Object
694 695 696 697 |
# File 'lib/rdoc/rd/block_parser.rb', line 694 def _reduce_3(val, _values, result) result = val[0].concat val[1] result end |
#_reduce_30(val, _values, result) ⇒ Object
841 842 843 844 |
# File 'lib/rdoc/rd/block_parser.rb', line 841 def _reduce_30(val, _values, result) result = val[0] << val[1] result end |
#_reduce_31(val, _values, result) ⇒ Object
846 847 848 849 |
# File 'lib/rdoc/rd/block_parser.rb', line 846 def _reduce_31(val, _values, result) result = [val[0]] result end |
#_reduce_32(val, _values, result) ⇒ Object
851 852 853 854 855 |
# File 'lib/rdoc/rd/block_parser.rb', line 851 def _reduce_32(val, _values, result) result = RDoc::Markup::List.new :BULLET, *val[0] result end |
#_reduce_33(val, _values, result) ⇒ Object
857 858 859 860 |
# File 'lib/rdoc/rd/block_parser.rb', line 857 def _reduce_33(val, _values, result) result.push(val[1]) result end |
#_reduce_34(val, _values, result) ⇒ Object
862 863 864 865 |
# File 'lib/rdoc/rd/block_parser.rb', line 862 def _reduce_34(val, _values, result) result = val result end |
#_reduce_35(val, _values, result) ⇒ Object
867 868 869 870 871 |
# File 'lib/rdoc/rd/block_parser.rb', line 867 def _reduce_35(val, _values, result) result = RDoc::Markup::ListItem.new nil, val[0], *val[1] result end |
#_reduce_36(val, _values, result) ⇒ Object
873 874 875 876 877 |
# File 'lib/rdoc/rd/block_parser.rb', line 873 def _reduce_36(val, _values, result) result = RDoc::Markup::List.new :NUMBER, *val[0] result end |
#_reduce_37(val, _values, result) ⇒ Object
879 880 881 882 |
# File 'lib/rdoc/rd/block_parser.rb', line 879 def _reduce_37(val, _values, result) result.push(val[1]) result end |
#_reduce_38(val, _values, result) ⇒ Object
884 885 886 887 |
# File 'lib/rdoc/rd/block_parser.rb', line 884 def _reduce_38(val, _values, result) result = val result end |
#_reduce_39(val, _values, result) ⇒ Object
889 890 891 892 893 |
# File 'lib/rdoc/rd/block_parser.rb', line 889 def _reduce_39(val, _values, result) result = RDoc::Markup::ListItem.new nil, val[0], *val[1] result end |
#_reduce_4(val, _values, result) ⇒ Object
699 700 701 702 |
# File 'lib/rdoc/rd/block_parser.rb', line 699 def _reduce_4(val, _values, result) result = val[0] result end |
#_reduce_40(val, _values, result) ⇒ Object
895 896 897 898 899 |
# File 'lib/rdoc/rd/block_parser.rb', line 895 def _reduce_40(val, _values, result) result = RDoc::Markup::List.new :NOTE, *val[0] result end |
#_reduce_41(val, _values, result) ⇒ Object
901 902 903 904 |
# File 'lib/rdoc/rd/block_parser.rb', line 901 def _reduce_41(val, _values, result) result.push(val[1]) result end |
#_reduce_42(val, _values, result) ⇒ Object
906 907 908 909 |
# File 'lib/rdoc/rd/block_parser.rb', line 906 def _reduce_42(val, _values, result) result = val result end |
#_reduce_43(val, _values, result) ⇒ Object
911 912 913 914 915 916 917 |
# File 'lib/rdoc/rd/block_parser.rb', line 911 def _reduce_43(val, _values, result) term = @inline_parser.parse val[0].strip result = RDoc::Markup::ListItem.new term, *val[1] result end |
#_reduce_44(val, _values, result) ⇒ Object
919 920 921 922 923 |
# File 'lib/rdoc/rd/block_parser.rb', line 919 def _reduce_44(val, _values, result) result = RDoc::Markup::List.new :LABEL, *val[0] result end |
#_reduce_45(val, _values, result) ⇒ Object
925 926 927 928 |
# File 'lib/rdoc/rd/block_parser.rb', line 925 def _reduce_45(val, _values, result) result.push(val[1]) result end |
#_reduce_46(val, _values, result) ⇒ Object
930 931 932 933 |
# File 'lib/rdoc/rd/block_parser.rb', line 930 def _reduce_46(val, _values, result) result = val result end |
#_reduce_47(val, _values, result) ⇒ Object
935 936 937 938 939 |
# File 'lib/rdoc/rd/block_parser.rb', line 935 def _reduce_47(val, _values, result) result = RDoc::Markup::ListItem.new "<tt>#{val[0].strip}</tt>", *val[1] result end |
#_reduce_48(val, _values, result) ⇒ Object
941 942 943 944 945 |
# File 'lib/rdoc/rd/block_parser.rb', line 941 def _reduce_48(val, _values, result) result = [val[1]].concat(val[2]) result end |
#_reduce_49(val, _values, result) ⇒ Object
947 948 949 950 951 |
# File 'lib/rdoc/rd/block_parser.rb', line 947 def _reduce_49(val, _values, result) result = [val[1]] result end |
#_reduce_5(val, _values, result) ⇒ Object
704 705 706 707 |
# File 'lib/rdoc/rd/block_parser.rb', line 704 def _reduce_5(val, _values, result) result = val result end |
#_reduce_50(val, _values, result) ⇒ Object
953 954 955 956 957 |
# File 'lib/rdoc/rd/block_parser.rb', line 953 def _reduce_50(val, _values, result) result = val[2] result end |
#_reduce_51(val, _values, result) ⇒ Object
959 960 961 962 963 |
# File 'lib/rdoc/rd/block_parser.rb', line 959 def _reduce_51(val, _values, result) result = [] result end |
#_reduce_52(val, _values, result) ⇒ Object
965 966 967 968 |
# File 'lib/rdoc/rd/block_parser.rb', line 965 def _reduce_52(val, _values, result) result.concat val[1] result end |
#_reduce_54(val, _values, result) ⇒ Object
reduce 53 omitted
972 973 974 975 |
# File 'lib/rdoc/rd/block_parser.rb', line 972 def _reduce_54(val, _values, result) result = val result end |
#_reduce_55(val, _values, result) ⇒ Object
977 978 979 980 |
# File 'lib/rdoc/rd/block_parser.rb', line 977 def _reduce_55(val, _values, result) result = val result end |
#_reduce_57(val, _values, result) ⇒ Object
reduce 56 omitted
984 985 986 987 |
# File 'lib/rdoc/rd/block_parser.rb', line 984 def _reduce_57(val, _values, result) result = [] result end |
#_reduce_6(val, _values, result) ⇒ Object
709 710 711 712 |
# File 'lib/rdoc/rd/block_parser.rb', line 709 def _reduce_6(val, _values, result) result = val result end |
#_reduce_62(val, _values, result) ⇒ Object
reduce 61 omitted
997 998 999 1000 1001 |
# File 'lib/rdoc/rd/block_parser.rb', line 997 def _reduce_62(val, _values, result) result = paragraph [val[0]].concat(val[1]) result end |
#_reduce_63(val, _values, result) ⇒ Object
1003 1004 1005 1006 1007 |
# File 'lib/rdoc/rd/block_parser.rb', line 1003 def _reduce_63(val, _values, result) result = paragraph [val[0]] result end |
#_reduce_64(val, _values, result) ⇒ Object
1009 1010 1011 1012 1013 |
# File 'lib/rdoc/rd/block_parser.rb', line 1009 def _reduce_64(val, _values, result) result = paragraph [val[0]].concat(val[1]) result end |
#_reduce_65(val, _values, result) ⇒ Object
1015 1016 1017 1018 1019 |
# File 'lib/rdoc/rd/block_parser.rb', line 1015 def _reduce_65(val, _values, result) result = paragraph [val[0]] result end |
#_reduce_66(val, _values, result) ⇒ Object
1021 1022 1023 1024 1025 |
# File 'lib/rdoc/rd/block_parser.rb', line 1021 def _reduce_66(val, _values, result) result = [val[0]].concat(val[1]) result end |
#_reduce_67(val, _values, result) ⇒ Object
1027 1028 1029 1030 |
# File 'lib/rdoc/rd/block_parser.rb', line 1027 def _reduce_67(val, _values, result) result.concat val[1] result end |
#_reduce_68(val, _values, result) ⇒ Object
1032 1033 1034 1035 |
# File 'lib/rdoc/rd/block_parser.rb', line 1032 def _reduce_68(val, _values, result) result = val[1] result end |
#_reduce_69(val, _values, result) ⇒ Object
1037 1038 1039 1040 |
# File 'lib/rdoc/rd/block_parser.rb', line 1037 def _reduce_69(val, _values, result) result = val result end |
#_reduce_71(val, _values, result) ⇒ Object
reduce 70 omitted
1044 1045 1046 1047 |
# File 'lib/rdoc/rd/block_parser.rb', line 1044 def _reduce_71(val, _values, result) result = [] result end |
#_reduce_72(val, _values, result) ⇒ Object
1049 1050 1051 1052 |
# File 'lib/rdoc/rd/block_parser.rb', line 1049 def _reduce_72(val, _values, result) result = [] result end |
#_reduce_8(val, _values, result) ⇒ Object
reduce 7 omitted
716 717 718 719 |
# File 'lib/rdoc/rd/block_parser.rb', line 716 def _reduce_8(val, _values, result) result = val result end |
#_reduce_9(val, _values, result) ⇒ Object
721 722 723 724 |
# File 'lib/rdoc/rd/block_parser.rb', line 721 def _reduce_9(val, _values, result) result = val result end |
#_reduce_none(val, _values, result) ⇒ Object
1054 1055 1056 |
# File 'lib/rdoc/rd/block_parser.rb', line 1054 def _reduce_none(val, _values, result) val[0] end |
#add_footnote(content) ⇒ Object
Adds footnote content to the document
401 402 403 404 405 406 407 408 409 410 |
# File 'lib/rdoc/rd/block_parser.rb', line 401 def add_footnote content index = @footnotes.length / 2 + 1 footmark_link = "{^#{index}}[rdoc-label:footmark-#{index}:foottext-#{index}]" @footnotes << RDoc::Markup::Paragraph.new(footmark_link, ' ', *content) @footnotes << RDoc::Markup::BlankLine.new index end |
#add_label(label) ⇒ Object
Adds label label to the document
415 416 417 418 419 |
# File 'lib/rdoc/rd/block_parser.rb', line 415 def add_label label @labels[label] = true label end |
#content(values) ⇒ Object
Retrieves the content of values as a single String
384 385 386 |
# File 'lib/rdoc/rd/block_parser.rb', line 384 def content values values.map { |value| value.content }.join end |
#line_index ⇒ Object
Current line number
339 340 341 |
# File 'lib/rdoc/rd/block_parser.rb', line 339 def line_index @i end |
#next_token ⇒ Object
Returns the next token from the document
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 |
# File 'lib/rdoc/rd/block_parser.rb', line 107 def next_token # :nodoc: # preprocessing # if it is not in RD part # => method while @in_part != "rd" line = @src[@i] @i += 1 # next line case line # src end when false return [false, false] # RD part begin when /^=begin\s*(?:\bRD\b.*)?\s*$/ if @in_part # if in non-RD part @part_content.push(line) else @in_part = "rd" return [:WHITELINE, "=begin\n"] # <= for textblockand end # non-RD part begin when /^=begin\s+(\w+)/ part = $1 =begin # not imported to RDoc if @in_part # if in non-RD part @part_content.push(line) else @in_part = part if @tree.filter[part] # if filter exists # p "BEGIN_PART: #{@in_part}" # DEBUG end =end @in_part = part # non-RD part end when /^=end(?:$|[\s\0\C-d\C-z])/ if @in_part # if in non-RD part =begin # not imported to RDoc # p "END_PART: #{@in_part}" # DEBUG # make Part-in object part = RDoc::RD::Part.new(@part_content.join(""), @tree, "r") @part_content.clear # call filter, part_out is output(Part object) part_out = @tree.filter[@in_part].call(part) if @tree.filter[@in_part].mode == :rd # if output is RD formatted subtree = parse_subtree(part_out.to_a) else # if output is target formatted basename = Tempfile.create(["rdtmp", ".#{@in_part}"], @tree.tmp_dir) do |tmpfile| tmpfile.print(part_out) File.basename(tmpfile.path) end subtree = parse_subtree(["=begin\n", "<<< #{basename}\n", "=end\n"]) end @in_part = nil return [:SUBTREE, subtree] =end end else =begin # not imported to RDoc if @in_part # if in non-RD part @part_content.push(line) end =end end end @current_indent = @indent_stack.join("") line = @src[@i] case line when false if_current_indent_equal("") do [false, false] end when /^=end/ if_current_indent_equal("") do @in_part = nil [:WHITELINE, "=end"] # MUST CHANGE?? end when /^\s*$/ @i += 1 # next line return [:WHITELINE, ':WHITELINE'] when /^\#/ # comment line @i += 1 # next line self.next_token() when /^(={1,4})(?!=)\s*(?=\S)/, /^(\+{1,2})(?!\+)\s*(?=\S)/ rest = $' # ' rest.strip! mark = $1 if_current_indent_equal("") do return [:HEADLINE, [MARK_TO_LEVEL[mark], rest]] end when /^<<<\s*(\S+)/ file = $1 if_current_indent_equal("") do suffix = file[-3 .. -1] if suffix == ".rd" or suffix == ".rb" subtree = parse_subtree(get_included(file)) [:SUBTREE, subtree] else [:INCLUDE, file] end end when /^(\s*)\*(\s*)/ rest = $' # ' newIndent = $2 if_current_indent_equal($1) do if @in_verbatim [:STRINGLINE, line] else @indent_stack.push("\s" + newIndent) [:ITEMLISTLINE, rest] end end when /^(\s*)(\(\d+\))(\s*)/ rest = $' # ' mark = $2 newIndent = $3 if_current_indent_equal($1) do if @in_verbatim [:STRINGLINE, line] else @indent_stack.push("\s" * mark.size + newIndent) [:ENUMLISTLINE, rest] end end when /^(\s*):(\s*)/ rest = $' # ' newIndent = $2 if_current_indent_equal($1) do if @in_verbatim [:STRINGLINE, line] else @indent_stack.push("\s#{$2}") [:DESCLISTLINE, rest] end end when /^(\s*)---(?!-|\s*$)/ indent = $1 rest = $' /\s*/ === rest term = $' new_indent = $& if_current_indent_equal(indent) do if @in_verbatim [:STRINGLINE, line] else @indent_stack.push("\s\s\s" + new_indent) [:METHODLISTLINE, term] end end when /^(\s*)/ if_current_indent_equal($1) do [:STRINGLINE, line] end else raise "[BUG] parsing error may occurred." end end |
#on_error(et, ev, _values) ⇒ Object
Raises a ParseError when invalid formatting is found
323 324 325 326 327 328 329 330 331 332 333 334 |
# File 'lib/rdoc/rd/block_parser.rb', line 323 def on_error(et, ev, _values) prv, cur, nxt = format_line_num(@i, @i+1, @i+2) raise ParseError, <<Msg RD syntax error: line #{@i+1}: #{prv} |#{@src[@i-1].chomp} #{cur}=>|#{@src[@i].chomp} #{nxt} |#{@src[@i+1].chomp} Msg end |
#paragraph(value) ⇒ Object
Creates a paragraph for value
391 392 393 394 395 396 |
# File 'lib/rdoc/rd/block_parser.rb', line 391 def paragraph value content = cut_off(value).join(' ').rstrip contents = @inline_parser.parse content RDoc::Markup::Paragraph.new(*contents) end |
#parse(src) ⇒ Object
Parses src and returns an RDoc::Markup::Document.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/rdoc/rd/block_parser.rb', line 63 def parse src @src = src @src.push false @footnotes = [] @labels = {} # @i: index(line no.) of src @i = 0 # stack for current indentation @indent_stack = [] # how indented. @current_indent = @indent_stack.join("") # RDoc::RD::BlockParser for tmp src @subparser = nil # which part is in now @in_part = nil @part_content = [] @in_verbatim = false @yydebug = true document = do_parse unless @footnotes.empty? then blankline = document.parts.pop document.parts << RDoc::Markup::Rule.new(1) document.parts.concat @footnotes document.parts.push blankline end document end |