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
Constants inherited from Racc::Parser
Racc::Parser::Racc_Runtime_Core_Version_R, Racc::Parser::Racc_Runtime_Version
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.
Methods inherited from Racc::Parser
#_racc_do_parse_rb, #_racc_do_reduce, #_racc_evalact, #_racc_init_sysvars, #_racc_setup, #_racc_yyparse_rb, #racc_accept, #racc_e_pop, #racc_next_state, #racc_print_stacks, #racc_print_states, #racc_read_token, #racc_reduce, racc_runtime_type, #racc_shift, #racc_token2str, #token_to_str, #yyaccept, #yyerrok, #yyerror
Constructor Details
#initialize ⇒ BlockParser
Creates a new RDoc::RD::BlockParser. Use #parse to parse an rd-format document.
695 696 697 698 699 700 701 702 |
# File 'lib/rdoc/rd/block_parser.rb', line 695 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
679 680 681 |
# File 'lib/rdoc/rd/block_parser.rb', line 679 def footnotes @footnotes end |
#include_path ⇒ Object
Path to find included files in
689 690 691 |
# File 'lib/rdoc/rd/block_parser.rb', line 689 def include_path @include_path end |
#labels ⇒ Object (readonly)
Labels for items in this document
684 685 686 |
# File 'lib/rdoc/rd/block_parser.rb', line 684 def labels @labels end |
Instance Method Details
#_reduce_1(val, _values, result) ⇒ Object
reduce 0 omitted
1330 1331 1332 1333 |
# File 'lib/rdoc/rd/block_parser.rb', line 1330 def _reduce_1(val, _values, result) result = RDoc::Markup::Document.new(*val[0]) result end |
#_reduce_10(val, _values, result) ⇒ Object
1372 1373 1374 1375 |
# File 'lib/rdoc/rd/block_parser.rb', line 1372 def _reduce_10(val, _values, result) result = [RDoc::Markup::BlankLine.new] result end |
#_reduce_11(val, _values, result) ⇒ Object
1377 1378 1379 1380 |
# File 'lib/rdoc/rd/block_parser.rb', line 1377 def _reduce_11(val, _values, result) result = val[0].parts result end |
#_reduce_12(val, _values, result) ⇒ Object
1382 1383 1384 1385 1386 1387 1388 |
# File 'lib/rdoc/rd/block_parser.rb', line 1382 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
1390 1391 1392 1393 1394 |
# File 'lib/rdoc/rd/block_parser.rb', line 1390 def _reduce_13(val, _values, result) result = RDoc::Markup::Include.new val[0], @include_path result end |
#_reduce_14(val, _values, result) ⇒ Object
1396 1397 1398 1399 1400 1401 |
# File 'lib/rdoc/rd/block_parser.rb', line 1396 def _reduce_14(val, _values, result) # val[0] is Array of String result = paragraph val[0] result end |
#_reduce_15(val, _values, result) ⇒ Object
1403 1404 1405 1406 |
# File 'lib/rdoc/rd/block_parser.rb', line 1403 def _reduce_15(val, _values, result) result << val[1].rstrip result end |
#_reduce_16(val, _values, result) ⇒ Object
1408 1409 1410 1411 |
# File 'lib/rdoc/rd/block_parser.rb', line 1408 def _reduce_16(val, _values, result) result = [val[0].rstrip] result end |
#_reduce_17(val, _values, result) ⇒ Object
1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 |
# File 'lib/rdoc/rd/block_parser.rb', line 1413 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
1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 |
# File 'lib/rdoc/rd/block_parser.rb', line 1424 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
1435 1436 1437 1438 1439 |
# File 'lib/rdoc/rd/block_parser.rb', line 1435 def _reduce_19(val, _values, result) result << val[1] result end |
#_reduce_2(val, _values, result) ⇒ Object
1335 1336 1337 1338 |
# File 'lib/rdoc/rd/block_parser.rb', line 1335 def _reduce_2(val, _values, result) raise ParseError, "file empty" result end |
#_reduce_20(val, _values, result) ⇒ Object
1441 1442 1443 1444 1445 |
# File 'lib/rdoc/rd/block_parser.rb', line 1441 def _reduce_20(val, _values, result) result.concat val[2] result end |
#_reduce_21(val, _values, result) ⇒ Object
1447 1448 1449 1450 1451 |
# File 'lib/rdoc/rd/block_parser.rb', line 1447 def _reduce_21(val, _values, result) result << "\n" result end |
#_reduce_22(val, _values, result) ⇒ Object
1453 1454 1455 1456 1457 1458 1459 |
# File 'lib/rdoc/rd/block_parser.rb', line 1453 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
1469 1470 1471 1472 1473 |
# File 'lib/rdoc/rd/block_parser.rb', line 1469 def _reduce_27(val, _values, result) result = val[0] result end |
#_reduce_28(val, _values, result) ⇒ Object
1475 1476 1477 1478 1479 |
# File 'lib/rdoc/rd/block_parser.rb', line 1475 def _reduce_28(val, _values, result) result = val[1] result end |
#_reduce_29(val, _values, result) ⇒ Object
1481 1482 1483 1484 1485 |
# File 'lib/rdoc/rd/block_parser.rb', line 1481 def _reduce_29(val, _values, result) result = val[1].push(val[2]) result end |
#_reduce_3(val, _values, result) ⇒ Object
1340 1341 1342 1343 |
# File 'lib/rdoc/rd/block_parser.rb', line 1340 def _reduce_3(val, _values, result) result = val[0].concat val[1] result end |
#_reduce_30(val, _values, result) ⇒ Object
1487 1488 1489 1490 |
# File 'lib/rdoc/rd/block_parser.rb', line 1487 def _reduce_30(val, _values, result) result = val[0] << val[1] result end |
#_reduce_31(val, _values, result) ⇒ Object
1492 1493 1494 1495 |
# File 'lib/rdoc/rd/block_parser.rb', line 1492 def _reduce_31(val, _values, result) result = [val[0]] result end |
#_reduce_32(val, _values, result) ⇒ Object
1497 1498 1499 1500 1501 |
# File 'lib/rdoc/rd/block_parser.rb', line 1497 def _reduce_32(val, _values, result) result = RDoc::Markup::List.new :BULLET, *val[0] result end |
#_reduce_33(val, _values, result) ⇒ Object
1503 1504 1505 1506 |
# File 'lib/rdoc/rd/block_parser.rb', line 1503 def _reduce_33(val, _values, result) result.push(val[1]) result end |
#_reduce_34(val, _values, result) ⇒ Object
1508 1509 1510 1511 |
# File 'lib/rdoc/rd/block_parser.rb', line 1508 def _reduce_34(val, _values, result) result = val result end |
#_reduce_35(val, _values, result) ⇒ Object
1513 1514 1515 1516 1517 |
# File 'lib/rdoc/rd/block_parser.rb', line 1513 def _reduce_35(val, _values, result) result = RDoc::Markup::ListItem.new nil, val[0], *val[1] result end |
#_reduce_36(val, _values, result) ⇒ Object
1519 1520 1521 1522 1523 |
# File 'lib/rdoc/rd/block_parser.rb', line 1519 def _reduce_36(val, _values, result) result = RDoc::Markup::List.new :NUMBER, *val[0] result end |
#_reduce_37(val, _values, result) ⇒ Object
1525 1526 1527 1528 |
# File 'lib/rdoc/rd/block_parser.rb', line 1525 def _reduce_37(val, _values, result) result.push(val[1]) result end |
#_reduce_38(val, _values, result) ⇒ Object
1530 1531 1532 1533 |
# File 'lib/rdoc/rd/block_parser.rb', line 1530 def _reduce_38(val, _values, result) result = val result end |
#_reduce_39(val, _values, result) ⇒ Object
1535 1536 1537 1538 1539 |
# File 'lib/rdoc/rd/block_parser.rb', line 1535 def _reduce_39(val, _values, result) result = RDoc::Markup::ListItem.new nil, val[0], *val[1] result end |
#_reduce_4(val, _values, result) ⇒ Object
1345 1346 1347 1348 |
# File 'lib/rdoc/rd/block_parser.rb', line 1345 def _reduce_4(val, _values, result) result = val[0] result end |
#_reduce_40(val, _values, result) ⇒ Object
1541 1542 1543 1544 1545 |
# File 'lib/rdoc/rd/block_parser.rb', line 1541 def _reduce_40(val, _values, result) result = RDoc::Markup::List.new :NOTE, *val[0] result end |
#_reduce_41(val, _values, result) ⇒ Object
1547 1548 1549 1550 |
# File 'lib/rdoc/rd/block_parser.rb', line 1547 def _reduce_41(val, _values, result) result.push(val[1]) result end |
#_reduce_42(val, _values, result) ⇒ Object
1552 1553 1554 1555 |
# File 'lib/rdoc/rd/block_parser.rb', line 1552 def _reduce_42(val, _values, result) result = val result end |
#_reduce_43(val, _values, result) ⇒ Object
1557 1558 1559 1560 1561 1562 1563 |
# File 'lib/rdoc/rd/block_parser.rb', line 1557 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
1565 1566 1567 1568 1569 |
# File 'lib/rdoc/rd/block_parser.rb', line 1565 def _reduce_44(val, _values, result) result = RDoc::Markup::List.new :LABEL, *val[0] result end |
#_reduce_45(val, _values, result) ⇒ Object
1571 1572 1573 1574 |
# File 'lib/rdoc/rd/block_parser.rb', line 1571 def _reduce_45(val, _values, result) result.push(val[1]) result end |
#_reduce_46(val, _values, result) ⇒ Object
1576 1577 1578 1579 |
# File 'lib/rdoc/rd/block_parser.rb', line 1576 def _reduce_46(val, _values, result) result = val result end |
#_reduce_47(val, _values, result) ⇒ Object
1581 1582 1583 1584 1585 |
# File 'lib/rdoc/rd/block_parser.rb', line 1581 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
1587 1588 1589 1590 1591 |
# File 'lib/rdoc/rd/block_parser.rb', line 1587 def _reduce_48(val, _values, result) result = [val[1]].concat(val[2]) result end |
#_reduce_49(val, _values, result) ⇒ Object
1593 1594 1595 1596 1597 |
# File 'lib/rdoc/rd/block_parser.rb', line 1593 def _reduce_49(val, _values, result) result = [val[1]] result end |
#_reduce_5(val, _values, result) ⇒ Object
1350 1351 1352 1353 |
# File 'lib/rdoc/rd/block_parser.rb', line 1350 def _reduce_5(val, _values, result) result = val result end |
#_reduce_50(val, _values, result) ⇒ Object
1599 1600 1601 1602 1603 |
# File 'lib/rdoc/rd/block_parser.rb', line 1599 def _reduce_50(val, _values, result) result = val[2] result end |
#_reduce_51(val, _values, result) ⇒ Object
1605 1606 1607 1608 1609 |
# File 'lib/rdoc/rd/block_parser.rb', line 1605 def _reduce_51(val, _values, result) result = [] result end |
#_reduce_52(val, _values, result) ⇒ Object
1611 1612 1613 1614 |
# File 'lib/rdoc/rd/block_parser.rb', line 1611 def _reduce_52(val, _values, result) result.concat val[1] result end |
#_reduce_54(val, _values, result) ⇒ Object
reduce 53 omitted
1618 1619 1620 1621 |
# File 'lib/rdoc/rd/block_parser.rb', line 1618 def _reduce_54(val, _values, result) result = val result end |
#_reduce_55(val, _values, result) ⇒ Object
1623 1624 1625 1626 |
# File 'lib/rdoc/rd/block_parser.rb', line 1623 def _reduce_55(val, _values, result) result = val result end |
#_reduce_57(val, _values, result) ⇒ Object
reduce 56 omitted
1630 1631 1632 1633 |
# File 'lib/rdoc/rd/block_parser.rb', line 1630 def _reduce_57(val, _values, result) result = [] result end |
#_reduce_6(val, _values, result) ⇒ Object
1355 1356 1357 1358 |
# File 'lib/rdoc/rd/block_parser.rb', line 1355 def _reduce_6(val, _values, result) result = val result end |
#_reduce_62(val, _values, result) ⇒ Object
reduce 61 omitted
1643 1644 1645 1646 1647 |
# File 'lib/rdoc/rd/block_parser.rb', line 1643 def _reduce_62(val, _values, result) result = paragraph [val[0]].concat(val[1]) result end |
#_reduce_63(val, _values, result) ⇒ Object
1649 1650 1651 1652 1653 |
# File 'lib/rdoc/rd/block_parser.rb', line 1649 def _reduce_63(val, _values, result) result = paragraph [val[0]] result end |
#_reduce_64(val, _values, result) ⇒ Object
1655 1656 1657 1658 1659 |
# File 'lib/rdoc/rd/block_parser.rb', line 1655 def _reduce_64(val, _values, result) result = paragraph [val[0]].concat(val[1]) result end |
#_reduce_65(val, _values, result) ⇒ Object
1661 1662 1663 1664 1665 |
# File 'lib/rdoc/rd/block_parser.rb', line 1661 def _reduce_65(val, _values, result) result = paragraph [val[0]] result end |
#_reduce_66(val, _values, result) ⇒ Object
1667 1668 1669 1670 1671 |
# File 'lib/rdoc/rd/block_parser.rb', line 1667 def _reduce_66(val, _values, result) result = [val[0]].concat(val[1]) result end |
#_reduce_67(val, _values, result) ⇒ Object
1673 1674 1675 1676 |
# File 'lib/rdoc/rd/block_parser.rb', line 1673 def _reduce_67(val, _values, result) result.concat val[1] result end |
#_reduce_68(val, _values, result) ⇒ Object
1678 1679 1680 1681 |
# File 'lib/rdoc/rd/block_parser.rb', line 1678 def _reduce_68(val, _values, result) result = val[1] result end |
#_reduce_69(val, _values, result) ⇒ Object
1683 1684 1685 1686 |
# File 'lib/rdoc/rd/block_parser.rb', line 1683 def _reduce_69(val, _values, result) result = val result end |
#_reduce_71(val, _values, result) ⇒ Object
reduce 70 omitted
1690 1691 1692 1693 |
# File 'lib/rdoc/rd/block_parser.rb', line 1690 def _reduce_71(val, _values, result) result = [] result end |
#_reduce_72(val, _values, result) ⇒ Object
1695 1696 1697 1698 |
# File 'lib/rdoc/rd/block_parser.rb', line 1695 def _reduce_72(val, _values, result) result = [] result end |
#_reduce_8(val, _values, result) ⇒ Object
reduce 7 omitted
1362 1363 1364 1365 |
# File 'lib/rdoc/rd/block_parser.rb', line 1362 def _reduce_8(val, _values, result) result = val result end |
#_reduce_9(val, _values, result) ⇒ Object
1367 1368 1369 1370 |
# File 'lib/rdoc/rd/block_parser.rb', line 1367 def _reduce_9(val, _values, result) result = val result end |
#_reduce_none(val, _values, result) ⇒ Object
1700 1701 1702 |
# File 'lib/rdoc/rd/block_parser.rb', line 1700 def _reduce_none(val, _values, result) val[0] end |
#add_footnote(content) ⇒ Object
Adds footnote content
to the document
1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 |
# File 'lib/rdoc/rd/block_parser.rb', line 1045 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
1059 1060 1061 1062 1063 |
# File 'lib/rdoc/rd/block_parser.rb', line 1059 def add_label label @labels[label] = true label end |
#content(values) ⇒ Object
Retrieves the content of values
as a single String
1028 1029 1030 |
# File 'lib/rdoc/rd/block_parser.rb', line 1028 def content values values.map { |value| value.content }.join end |
#line_index ⇒ Object
Current line number
983 984 985 |
# File 'lib/rdoc/rd/block_parser.rb', line 983 def line_index @i end |
#next_token ⇒ Object
Returns the next token from the document
751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 |
# File 'lib/rdoc/rd/block_parser.rb', line 751 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
967 968 969 970 971 972 973 974 975 976 977 978 |
# File 'lib/rdoc/rd/block_parser.rb', line 967 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
1035 1036 1037 1038 1039 1040 |
# File 'lib/rdoc/rd/block_parser.rb', line 1035 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.
707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 |
# File 'lib/rdoc/rd/block_parser.rb', line 707 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 |