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
- TMPFILE =
:stopdoc:
["rdtmp", $$, 0]
- MARK_TO_LEVEL =
{ '=' => 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
content
to the document. -
#add_label(label) ⇒ Object
Adds label
label
to the document. -
#content(values) ⇒ Object
Retrieves the content of
values
as 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
src
and returns an RDoc::Markup::Document.
Constructor Details
#initialize ⇒ BlockParser
Creates a new RDoc::RD::BlockParser. Use #parse to parse an rd-format document.
52 53 54 55 56 57 58 59 |
# File 'lib/rdoc/rd/block_parser.rb', line 52 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
36 37 38 |
# File 'lib/rdoc/rd/block_parser.rb', line 36 def footnotes @footnotes end |
#include_path ⇒ Object
Path to find included files in
46 47 48 |
# File 'lib/rdoc/rd/block_parser.rb', line 46 def include_path @include_path end |
#labels ⇒ Object (readonly)
Labels for items in this document
41 42 43 |
# File 'lib/rdoc/rd/block_parser.rb', line 41 def labels @labels end |
Instance Method Details
#_reduce_1(val, _values, result) ⇒ Object
reduce 0 omitted
679 680 681 682 |
# File 'lib/rdoc/rd/block_parser.rb', line 679 def _reduce_1(val, _values, result) result = RDoc::Markup::Document.new(*val[0]) result end |
#_reduce_10(val, _values, result) ⇒ Object
721 722 723 724 |
# File 'lib/rdoc/rd/block_parser.rb', line 721 def _reduce_10(val, _values, result) result = [RDoc::Markup::BlankLine.new] result end |
#_reduce_11(val, _values, result) ⇒ Object
726 727 728 729 |
# File 'lib/rdoc/rd/block_parser.rb', line 726 def _reduce_11(val, _values, result) result = val[0].parts result end |
#_reduce_12(val, _values, result) ⇒ Object
731 732 733 734 735 736 737 |
# File 'lib/rdoc/rd/block_parser.rb', line 731 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
739 740 741 742 743 |
# File 'lib/rdoc/rd/block_parser.rb', line 739 def _reduce_13(val, _values, result) result = RDoc::Markup::Include.new val[0], @include_path result end |
#_reduce_14(val, _values, result) ⇒ Object
745 746 747 748 749 750 |
# File 'lib/rdoc/rd/block_parser.rb', line 745 def _reduce_14(val, _values, result) # val[0] is Array of String result = paragraph val[0] result end |
#_reduce_15(val, _values, result) ⇒ Object
752 753 754 755 |
# File 'lib/rdoc/rd/block_parser.rb', line 752 def _reduce_15(val, _values, result) result << val[1].rstrip result end |
#_reduce_16(val, _values, result) ⇒ Object
757 758 759 760 |
# File 'lib/rdoc/rd/block_parser.rb', line 757 def _reduce_16(val, _values, result) result = [val[0].rstrip] result end |
#_reduce_17(val, _values, result) ⇒ Object
762 763 764 765 766 767 768 769 770 771 |
# File 'lib/rdoc/rd/block_parser.rb', line 762 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
773 774 775 776 777 778 779 780 781 782 |
# File 'lib/rdoc/rd/block_parser.rb', line 773 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
784 785 786 787 788 |
# File 'lib/rdoc/rd/block_parser.rb', line 784 def _reduce_19(val, _values, result) result << val[1] result end |
#_reduce_2(val, _values, result) ⇒ Object
684 685 686 687 |
# File 'lib/rdoc/rd/block_parser.rb', line 684 def _reduce_2(val, _values, result) raise ParseError, "file empty" result end |
#_reduce_20(val, _values, result) ⇒ Object
790 791 792 793 794 |
# File 'lib/rdoc/rd/block_parser.rb', line 790 def _reduce_20(val, _values, result) result.concat val[2] result end |
#_reduce_21(val, _values, result) ⇒ Object
796 797 798 799 800 |
# File 'lib/rdoc/rd/block_parser.rb', line 796 def _reduce_21(val, _values, result) result << "\n" result end |
#_reduce_22(val, _values, result) ⇒ Object
802 803 804 805 806 807 808 |
# File 'lib/rdoc/rd/block_parser.rb', line 802 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
818 819 820 821 822 |
# File 'lib/rdoc/rd/block_parser.rb', line 818 def _reduce_27(val, _values, result) result = val[0] result end |
#_reduce_28(val, _values, result) ⇒ Object
824 825 826 827 828 |
# File 'lib/rdoc/rd/block_parser.rb', line 824 def _reduce_28(val, _values, result) result = val[1] result end |
#_reduce_29(val, _values, result) ⇒ Object
830 831 832 833 834 |
# File 'lib/rdoc/rd/block_parser.rb', line 830 def _reduce_29(val, _values, result) result = val[1].push(val[2]) result end |
#_reduce_3(val, _values, result) ⇒ Object
689 690 691 692 |
# File 'lib/rdoc/rd/block_parser.rb', line 689 def _reduce_3(val, _values, result) result = val[0].concat val[1] result end |
#_reduce_30(val, _values, result) ⇒ Object
836 837 838 839 |
# File 'lib/rdoc/rd/block_parser.rb', line 836 def _reduce_30(val, _values, result) result = val[0] << val[1] result end |
#_reduce_31(val, _values, result) ⇒ Object
841 842 843 844 |
# File 'lib/rdoc/rd/block_parser.rb', line 841 def _reduce_31(val, _values, result) result = [val[0]] result end |
#_reduce_32(val, _values, result) ⇒ Object
846 847 848 849 850 |
# File 'lib/rdoc/rd/block_parser.rb', line 846 def _reduce_32(val, _values, result) result = RDoc::Markup::List.new :BULLET, *val[0] result end |
#_reduce_33(val, _values, result) ⇒ Object
852 853 854 855 |
# File 'lib/rdoc/rd/block_parser.rb', line 852 def _reduce_33(val, _values, result) result.push(val[1]) result end |
#_reduce_34(val, _values, result) ⇒ Object
857 858 859 860 |
# File 'lib/rdoc/rd/block_parser.rb', line 857 def _reduce_34(val, _values, result) result = val result end |
#_reduce_35(val, _values, result) ⇒ Object
862 863 864 865 866 |
# File 'lib/rdoc/rd/block_parser.rb', line 862 def _reduce_35(val, _values, result) result = RDoc::Markup::ListItem.new nil, val[0], *val[1] result end |
#_reduce_36(val, _values, result) ⇒ Object
868 869 870 871 872 |
# File 'lib/rdoc/rd/block_parser.rb', line 868 def _reduce_36(val, _values, result) result = RDoc::Markup::List.new :NUMBER, *val[0] result end |
#_reduce_37(val, _values, result) ⇒ Object
874 875 876 877 |
# File 'lib/rdoc/rd/block_parser.rb', line 874 def _reduce_37(val, _values, result) result.push(val[1]) result end |
#_reduce_38(val, _values, result) ⇒ Object
879 880 881 882 |
# File 'lib/rdoc/rd/block_parser.rb', line 879 def _reduce_38(val, _values, result) result = val result end |
#_reduce_39(val, _values, result) ⇒ Object
884 885 886 887 888 |
# File 'lib/rdoc/rd/block_parser.rb', line 884 def _reduce_39(val, _values, result) result = RDoc::Markup::ListItem.new nil, val[0], *val[1] result end |
#_reduce_4(val, _values, result) ⇒ Object
694 695 696 697 |
# File 'lib/rdoc/rd/block_parser.rb', line 694 def _reduce_4(val, _values, result) result = val[0] result end |
#_reduce_40(val, _values, result) ⇒ Object
890 891 892 893 894 |
# File 'lib/rdoc/rd/block_parser.rb', line 890 def _reduce_40(val, _values, result) result = RDoc::Markup::List.new :NOTE, *val[0] result end |
#_reduce_41(val, _values, result) ⇒ Object
896 897 898 899 |
# File 'lib/rdoc/rd/block_parser.rb', line 896 def _reduce_41(val, _values, result) result.push(val[1]) result end |
#_reduce_42(val, _values, result) ⇒ Object
901 902 903 904 |
# File 'lib/rdoc/rd/block_parser.rb', line 901 def _reduce_42(val, _values, result) result = val result end |
#_reduce_43(val, _values, result) ⇒ Object
906 907 908 909 910 911 912 |
# File 'lib/rdoc/rd/block_parser.rb', line 906 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
914 915 916 917 918 |
# File 'lib/rdoc/rd/block_parser.rb', line 914 def _reduce_44(val, _values, result) result = RDoc::Markup::List.new :LABEL, *val[0] result end |
#_reduce_45(val, _values, result) ⇒ Object
920 921 922 923 |
# File 'lib/rdoc/rd/block_parser.rb', line 920 def _reduce_45(val, _values, result) result.push(val[1]) result end |
#_reduce_46(val, _values, result) ⇒ Object
925 926 927 928 |
# File 'lib/rdoc/rd/block_parser.rb', line 925 def _reduce_46(val, _values, result) result = val result end |
#_reduce_47(val, _values, result) ⇒ Object
930 931 932 933 934 |
# File 'lib/rdoc/rd/block_parser.rb', line 930 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
936 937 938 939 940 |
# File 'lib/rdoc/rd/block_parser.rb', line 936 def _reduce_48(val, _values, result) result = [val[1]].concat(val[2]) result end |
#_reduce_49(val, _values, result) ⇒ Object
942 943 944 945 946 |
# File 'lib/rdoc/rd/block_parser.rb', line 942 def _reduce_49(val, _values, result) result = [val[1]] result end |
#_reduce_5(val, _values, result) ⇒ Object
699 700 701 702 |
# File 'lib/rdoc/rd/block_parser.rb', line 699 def _reduce_5(val, _values, result) result = val result end |
#_reduce_50(val, _values, result) ⇒ Object
948 949 950 951 952 |
# File 'lib/rdoc/rd/block_parser.rb', line 948 def _reduce_50(val, _values, result) result = val[2] result end |
#_reduce_51(val, _values, result) ⇒ Object
954 955 956 957 958 |
# File 'lib/rdoc/rd/block_parser.rb', line 954 def _reduce_51(val, _values, result) result = [] result end |
#_reduce_52(val, _values, result) ⇒ Object
960 961 962 963 |
# File 'lib/rdoc/rd/block_parser.rb', line 960 def _reduce_52(val, _values, result) result.concat val[1] result end |
#_reduce_54(val, _values, result) ⇒ Object
reduce 53 omitted
967 968 969 970 |
# File 'lib/rdoc/rd/block_parser.rb', line 967 def _reduce_54(val, _values, result) result = val result end |
#_reduce_55(val, _values, result) ⇒ Object
972 973 974 975 |
# File 'lib/rdoc/rd/block_parser.rb', line 972 def _reduce_55(val, _values, result) result = val result end |
#_reduce_57(val, _values, result) ⇒ Object
reduce 56 omitted
979 980 981 982 |
# File 'lib/rdoc/rd/block_parser.rb', line 979 def _reduce_57(val, _values, result) result = [] result end |
#_reduce_6(val, _values, result) ⇒ Object
704 705 706 707 |
# File 'lib/rdoc/rd/block_parser.rb', line 704 def _reduce_6(val, _values, result) result = val result end |
#_reduce_62(val, _values, result) ⇒ Object
reduce 61 omitted
992 993 994 995 996 |
# File 'lib/rdoc/rd/block_parser.rb', line 992 def _reduce_62(val, _values, result) result = paragraph [val[0]].concat(val[1]) result end |
#_reduce_63(val, _values, result) ⇒ Object
998 999 1000 1001 1002 |
# File 'lib/rdoc/rd/block_parser.rb', line 998 def _reduce_63(val, _values, result) result = paragraph [val[0]] result end |
#_reduce_64(val, _values, result) ⇒ Object
1004 1005 1006 1007 1008 |
# File 'lib/rdoc/rd/block_parser.rb', line 1004 def _reduce_64(val, _values, result) result = paragraph [val[0]].concat(val[1]) result end |
#_reduce_65(val, _values, result) ⇒ Object
1010 1011 1012 1013 1014 |
# File 'lib/rdoc/rd/block_parser.rb', line 1010 def _reduce_65(val, _values, result) result = paragraph [val[0]] result end |
#_reduce_66(val, _values, result) ⇒ Object
1016 1017 1018 1019 1020 |
# File 'lib/rdoc/rd/block_parser.rb', line 1016 def _reduce_66(val, _values, result) result = [val[0]].concat(val[1]) result end |
#_reduce_67(val, _values, result) ⇒ Object
1022 1023 1024 1025 |
# File 'lib/rdoc/rd/block_parser.rb', line 1022 def _reduce_67(val, _values, result) result.concat val[1] result end |
#_reduce_68(val, _values, result) ⇒ Object
1027 1028 1029 1030 |
# File 'lib/rdoc/rd/block_parser.rb', line 1027 def _reduce_68(val, _values, result) result = val[1] result end |
#_reduce_69(val, _values, result) ⇒ Object
1032 1033 1034 1035 |
# File 'lib/rdoc/rd/block_parser.rb', line 1032 def _reduce_69(val, _values, result) result = val result end |
#_reduce_71(val, _values, result) ⇒ Object
reduce 70 omitted
1039 1040 1041 1042 |
# File 'lib/rdoc/rd/block_parser.rb', line 1039 def _reduce_71(val, _values, result) result = [] result end |
#_reduce_72(val, _values, result) ⇒ Object
1044 1045 1046 1047 |
# File 'lib/rdoc/rd/block_parser.rb', line 1044 def _reduce_72(val, _values, result) result = [] result end |
#_reduce_8(val, _values, result) ⇒ Object
reduce 7 omitted
711 712 713 714 |
# File 'lib/rdoc/rd/block_parser.rb', line 711 def _reduce_8(val, _values, result) result = val result end |
#_reduce_9(val, _values, result) ⇒ Object
716 717 718 719 |
# File 'lib/rdoc/rd/block_parser.rb', line 716 def _reduce_9(val, _values, result) result = val result end |
#_reduce_none(val, _values, result) ⇒ Object
1049 1050 1051 |
# File 'lib/rdoc/rd/block_parser.rb', line 1049 def _reduce_none(val, _values, result) val[0] end |
#add_footnote(content) ⇒ Object
Adds footnote content
to the document
396 397 398 399 400 401 402 403 404 405 |
# File 'lib/rdoc/rd/block_parser.rb', line 396 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
410 411 412 413 414 |
# File 'lib/rdoc/rd/block_parser.rb', line 410 def add_label label @labels[label] = true label end |
#content(values) ⇒ Object
Retrieves the content of values
as a single String
379 380 381 |
# File 'lib/rdoc/rd/block_parser.rb', line 379 def content values values.map { |value| value.content }.join end |
#line_index ⇒ Object
Current line number
334 335 336 |
# File 'lib/rdoc/rd/block_parser.rb', line 334 def line_index @i end |
#next_token ⇒ Object
Returns the next token from the document
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 |
# File 'lib/rdoc/rd/block_parser.rb', line 108 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 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 # non-RD part end when /^=end/ if @in_part # if in non-RD part # 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 formated subtree = parse_subtree(part_out.to_a) else # if output is target formated basename = TMPFILE.join('.') TMPFILE[-1] += 1 tmpfile = open(@tree.tmp_dir + "/" + basename + ".#{@in_part}", "w") tmpfile.print(part_out) tmpfile.close subtree = parse_subtree(["=begin\n", "<<< #{basename}\n", "=end\n"]) end @in_part = nil return [:SUBTREE, subtree] end else if @in_part # if in non-RD part @part_content.push(line) 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 occured." end end |
#on_error(et, ev, _values) ⇒ Object
Raises a ParseError when invalid formatting is found
318 319 320 321 322 323 324 325 326 327 328 329 |
# File 'lib/rdoc/rd/block_parser.rb', line 318 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
386 387 388 389 390 391 |
# File 'lib/rdoc/rd/block_parser.rb', line 386 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.
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 103 |
# File 'lib/rdoc/rd/block_parser.rb', line 64 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 |