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.
699 700 701 702 703 704 705 706 |
# File 'lib/rdoc/rd/block_parser.rb', line 699 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
683 684 685 |
# File 'lib/rdoc/rd/block_parser.rb', line 683 def footnotes @footnotes end |
#include_path ⇒ Object
Path to find included files in
693 694 695 |
# File 'lib/rdoc/rd/block_parser.rb', line 693 def include_path @include_path end |
#labels ⇒ Object (readonly)
Labels for items in this document
688 689 690 |
# File 'lib/rdoc/rd/block_parser.rb', line 688 def labels @labels end |
Instance Method Details
#_reduce_1(val, _values, result) ⇒ Object
reduce 0 omitted
1334 1335 1336 1337 |
# File 'lib/rdoc/rd/block_parser.rb', line 1334 def _reduce_1(val, _values, result) result = RDoc::Markup::Document.new(*val[0]) result end |
#_reduce_10(val, _values, result) ⇒ Object
1376 1377 1378 1379 |
# File 'lib/rdoc/rd/block_parser.rb', line 1376 def _reduce_10(val, _values, result) result = [RDoc::Markup::BlankLine.new] result end |
#_reduce_11(val, _values, result) ⇒ Object
1381 1382 1383 1384 |
# File 'lib/rdoc/rd/block_parser.rb', line 1381 def _reduce_11(val, _values, result) result = val[0].parts result end |
#_reduce_12(val, _values, result) ⇒ Object
1386 1387 1388 1389 1390 1391 1392 |
# File 'lib/rdoc/rd/block_parser.rb', line 1386 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
1394 1395 1396 1397 1398 |
# File 'lib/rdoc/rd/block_parser.rb', line 1394 def _reduce_13(val, _values, result) result = RDoc::Markup::Include.new val[0], @include_path result end |
#_reduce_14(val, _values, result) ⇒ Object
1400 1401 1402 1403 1404 1405 |
# File 'lib/rdoc/rd/block_parser.rb', line 1400 def _reduce_14(val, _values, result) # val[0] is Array of String result = paragraph val[0] result end |
#_reduce_15(val, _values, result) ⇒ Object
1407 1408 1409 1410 |
# File 'lib/rdoc/rd/block_parser.rb', line 1407 def _reduce_15(val, _values, result) result << val[1].rstrip result end |
#_reduce_16(val, _values, result) ⇒ Object
1412 1413 1414 1415 |
# File 'lib/rdoc/rd/block_parser.rb', line 1412 def _reduce_16(val, _values, result) result = [val[0].rstrip] result end |
#_reduce_17(val, _values, result) ⇒ Object
1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 |
# File 'lib/rdoc/rd/block_parser.rb', line 1417 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
1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 |
# File 'lib/rdoc/rd/block_parser.rb', line 1428 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
1439 1440 1441 1442 1443 |
# File 'lib/rdoc/rd/block_parser.rb', line 1439 def _reduce_19(val, _values, result) result << val[1] result end |
#_reduce_2(val, _values, result) ⇒ Object
1339 1340 1341 1342 |
# File 'lib/rdoc/rd/block_parser.rb', line 1339 def _reduce_2(val, _values, result) raise ParseError, "file empty" result end |
#_reduce_20(val, _values, result) ⇒ Object
1445 1446 1447 1448 1449 |
# File 'lib/rdoc/rd/block_parser.rb', line 1445 def _reduce_20(val, _values, result) result.concat val[2] result end |
#_reduce_21(val, _values, result) ⇒ Object
1451 1452 1453 1454 1455 |
# File 'lib/rdoc/rd/block_parser.rb', line 1451 def _reduce_21(val, _values, result) result << "\n" result end |
#_reduce_22(val, _values, result) ⇒ Object
1457 1458 1459 1460 1461 1462 1463 |
# File 'lib/rdoc/rd/block_parser.rb', line 1457 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
1473 1474 1475 1476 1477 |
# File 'lib/rdoc/rd/block_parser.rb', line 1473 def _reduce_27(val, _values, result) result = val[0] result end |
#_reduce_28(val, _values, result) ⇒ Object
1479 1480 1481 1482 1483 |
# File 'lib/rdoc/rd/block_parser.rb', line 1479 def _reduce_28(val, _values, result) result = val[1] result end |
#_reduce_29(val, _values, result) ⇒ Object
1485 1486 1487 1488 1489 |
# File 'lib/rdoc/rd/block_parser.rb', line 1485 def _reduce_29(val, _values, result) result = val[1].push(val[2]) result end |
#_reduce_3(val, _values, result) ⇒ Object
1344 1345 1346 1347 |
# File 'lib/rdoc/rd/block_parser.rb', line 1344 def _reduce_3(val, _values, result) result = val[0].concat val[1] result end |
#_reduce_30(val, _values, result) ⇒ Object
1491 1492 1493 1494 |
# File 'lib/rdoc/rd/block_parser.rb', line 1491 def _reduce_30(val, _values, result) result = val[0] << val[1] result end |
#_reduce_31(val, _values, result) ⇒ Object
1496 1497 1498 1499 |
# File 'lib/rdoc/rd/block_parser.rb', line 1496 def _reduce_31(val, _values, result) result = [val[0]] result end |
#_reduce_32(val, _values, result) ⇒ Object
1501 1502 1503 1504 1505 |
# File 'lib/rdoc/rd/block_parser.rb', line 1501 def _reduce_32(val, _values, result) result = RDoc::Markup::List.new :BULLET, *val[0] result end |
#_reduce_33(val, _values, result) ⇒ Object
1507 1508 1509 1510 |
# File 'lib/rdoc/rd/block_parser.rb', line 1507 def _reduce_33(val, _values, result) result.push(val[1]) result end |
#_reduce_34(val, _values, result) ⇒ Object
1512 1513 1514 1515 |
# File 'lib/rdoc/rd/block_parser.rb', line 1512 def _reduce_34(val, _values, result) result = val result end |
#_reduce_35(val, _values, result) ⇒ Object
1517 1518 1519 1520 1521 |
# File 'lib/rdoc/rd/block_parser.rb', line 1517 def _reduce_35(val, _values, result) result = RDoc::Markup::ListItem.new nil, val[0], *val[1] result end |
#_reduce_36(val, _values, result) ⇒ Object
1523 1524 1525 1526 1527 |
# File 'lib/rdoc/rd/block_parser.rb', line 1523 def _reduce_36(val, _values, result) result = RDoc::Markup::List.new :NUMBER, *val[0] result end |
#_reduce_37(val, _values, result) ⇒ Object
1529 1530 1531 1532 |
# File 'lib/rdoc/rd/block_parser.rb', line 1529 def _reduce_37(val, _values, result) result.push(val[1]) result end |
#_reduce_38(val, _values, result) ⇒ Object
1534 1535 1536 1537 |
# File 'lib/rdoc/rd/block_parser.rb', line 1534 def _reduce_38(val, _values, result) result = val result end |
#_reduce_39(val, _values, result) ⇒ Object
1539 1540 1541 1542 1543 |
# File 'lib/rdoc/rd/block_parser.rb', line 1539 def _reduce_39(val, _values, result) result = RDoc::Markup::ListItem.new nil, val[0], *val[1] result end |
#_reduce_4(val, _values, result) ⇒ Object
1349 1350 1351 1352 |
# File 'lib/rdoc/rd/block_parser.rb', line 1349 def _reduce_4(val, _values, result) result = val[0] result end |
#_reduce_40(val, _values, result) ⇒ Object
1545 1546 1547 1548 1549 |
# File 'lib/rdoc/rd/block_parser.rb', line 1545 def _reduce_40(val, _values, result) result = RDoc::Markup::List.new :NOTE, *val[0] result end |
#_reduce_41(val, _values, result) ⇒ Object
1551 1552 1553 1554 |
# File 'lib/rdoc/rd/block_parser.rb', line 1551 def _reduce_41(val, _values, result) result.push(val[1]) result end |
#_reduce_42(val, _values, result) ⇒ Object
1556 1557 1558 1559 |
# File 'lib/rdoc/rd/block_parser.rb', line 1556 def _reduce_42(val, _values, result) result = val result end |
#_reduce_43(val, _values, result) ⇒ Object
1561 1562 1563 1564 1565 1566 1567 |
# File 'lib/rdoc/rd/block_parser.rb', line 1561 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
1569 1570 1571 1572 1573 |
# File 'lib/rdoc/rd/block_parser.rb', line 1569 def _reduce_44(val, _values, result) result = RDoc::Markup::List.new :LABEL, *val[0] result end |
#_reduce_45(val, _values, result) ⇒ Object
1575 1576 1577 1578 |
# File 'lib/rdoc/rd/block_parser.rb', line 1575 def _reduce_45(val, _values, result) result.push(val[1]) result end |
#_reduce_46(val, _values, result) ⇒ Object
1580 1581 1582 1583 |
# File 'lib/rdoc/rd/block_parser.rb', line 1580 def _reduce_46(val, _values, result) result = val result end |
#_reduce_47(val, _values, result) ⇒ Object
1585 1586 1587 1588 1589 |
# File 'lib/rdoc/rd/block_parser.rb', line 1585 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
1591 1592 1593 1594 1595 |
# File 'lib/rdoc/rd/block_parser.rb', line 1591 def _reduce_48(val, _values, result) result = [val[1]].concat(val[2]) result end |
#_reduce_49(val, _values, result) ⇒ Object
1597 1598 1599 1600 1601 |
# File 'lib/rdoc/rd/block_parser.rb', line 1597 def _reduce_49(val, _values, result) result = [val[1]] result end |
#_reduce_5(val, _values, result) ⇒ Object
1354 1355 1356 1357 |
# File 'lib/rdoc/rd/block_parser.rb', line 1354 def _reduce_5(val, _values, result) result = val result end |
#_reduce_50(val, _values, result) ⇒ Object
1603 1604 1605 1606 1607 |
# File 'lib/rdoc/rd/block_parser.rb', line 1603 def _reduce_50(val, _values, result) result = val[2] result end |
#_reduce_51(val, _values, result) ⇒ Object
1609 1610 1611 1612 1613 |
# File 'lib/rdoc/rd/block_parser.rb', line 1609 def _reduce_51(val, _values, result) result = [] result end |
#_reduce_52(val, _values, result) ⇒ Object
1615 1616 1617 1618 |
# File 'lib/rdoc/rd/block_parser.rb', line 1615 def _reduce_52(val, _values, result) result.concat val[1] result end |
#_reduce_54(val, _values, result) ⇒ Object
reduce 53 omitted
1622 1623 1624 1625 |
# File 'lib/rdoc/rd/block_parser.rb', line 1622 def _reduce_54(val, _values, result) result = val result end |
#_reduce_55(val, _values, result) ⇒ Object
1627 1628 1629 1630 |
# File 'lib/rdoc/rd/block_parser.rb', line 1627 def _reduce_55(val, _values, result) result = val result end |
#_reduce_57(val, _values, result) ⇒ Object
reduce 56 omitted
1634 1635 1636 1637 |
# File 'lib/rdoc/rd/block_parser.rb', line 1634 def _reduce_57(val, _values, result) result = [] result end |
#_reduce_6(val, _values, result) ⇒ Object
1359 1360 1361 1362 |
# File 'lib/rdoc/rd/block_parser.rb', line 1359 def _reduce_6(val, _values, result) result = val result end |
#_reduce_62(val, _values, result) ⇒ Object
reduce 61 omitted
1647 1648 1649 1650 1651 |
# File 'lib/rdoc/rd/block_parser.rb', line 1647 def _reduce_62(val, _values, result) result = paragraph [val[0]].concat(val[1]) result end |
#_reduce_63(val, _values, result) ⇒ Object
1653 1654 1655 1656 1657 |
# File 'lib/rdoc/rd/block_parser.rb', line 1653 def _reduce_63(val, _values, result) result = paragraph [val[0]] result end |
#_reduce_64(val, _values, result) ⇒ Object
1659 1660 1661 1662 1663 |
# File 'lib/rdoc/rd/block_parser.rb', line 1659 def _reduce_64(val, _values, result) result = paragraph [val[0]].concat(val[1]) result end |
#_reduce_65(val, _values, result) ⇒ Object
1665 1666 1667 1668 1669 |
# File 'lib/rdoc/rd/block_parser.rb', line 1665 def _reduce_65(val, _values, result) result = paragraph [val[0]] result end |
#_reduce_66(val, _values, result) ⇒ Object
1671 1672 1673 1674 1675 |
# File 'lib/rdoc/rd/block_parser.rb', line 1671 def _reduce_66(val, _values, result) result = [val[0]].concat(val[1]) result end |
#_reduce_67(val, _values, result) ⇒ Object
1677 1678 1679 1680 |
# File 'lib/rdoc/rd/block_parser.rb', line 1677 def _reduce_67(val, _values, result) result.concat val[1] result end |
#_reduce_68(val, _values, result) ⇒ Object
1682 1683 1684 1685 |
# File 'lib/rdoc/rd/block_parser.rb', line 1682 def _reduce_68(val, _values, result) result = val[1] result end |
#_reduce_69(val, _values, result) ⇒ Object
1687 1688 1689 1690 |
# File 'lib/rdoc/rd/block_parser.rb', line 1687 def _reduce_69(val, _values, result) result = val result end |
#_reduce_71(val, _values, result) ⇒ Object
reduce 70 omitted
1694 1695 1696 1697 |
# File 'lib/rdoc/rd/block_parser.rb', line 1694 def _reduce_71(val, _values, result) result = [] result end |
#_reduce_72(val, _values, result) ⇒ Object
1699 1700 1701 1702 |
# File 'lib/rdoc/rd/block_parser.rb', line 1699 def _reduce_72(val, _values, result) result = [] result end |
#_reduce_8(val, _values, result) ⇒ Object
reduce 7 omitted
1366 1367 1368 1369 |
# File 'lib/rdoc/rd/block_parser.rb', line 1366 def _reduce_8(val, _values, result) result = val result end |
#_reduce_9(val, _values, result) ⇒ Object
1371 1372 1373 1374 |
# File 'lib/rdoc/rd/block_parser.rb', line 1371 def _reduce_9(val, _values, result) result = val result end |
#_reduce_none(val, _values, result) ⇒ Object
1704 1705 1706 |
# File 'lib/rdoc/rd/block_parser.rb', line 1704 def _reduce_none(val, _values, result) val[0] end |
#add_footnote(content) ⇒ Object
Adds footnote content
to the document
1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 |
# File 'lib/rdoc/rd/block_parser.rb', line 1049 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
1063 1064 1065 1066 1067 |
# File 'lib/rdoc/rd/block_parser.rb', line 1063 def add_label label @labels[label] = true label end |
#content(values) ⇒ Object
Retrieves the content of values
as a single String
1032 1033 1034 |
# File 'lib/rdoc/rd/block_parser.rb', line 1032 def content values values.map { |value| value.content }.join end |
#line_index ⇒ Object
Current line number
987 988 989 |
# File 'lib/rdoc/rd/block_parser.rb', line 987 def line_index @i end |
#next_token ⇒ Object
Returns the next token from the document
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 908 909 910 911 |
# File 'lib/rdoc/rd/block_parser.rb', line 755 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
971 972 973 974 975 976 977 978 979 980 981 982 |
# File 'lib/rdoc/rd/block_parser.rb', line 971 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
1039 1040 1041 1042 1043 1044 |
# File 'lib/rdoc/rd/block_parser.rb', line 1039 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.
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 747 748 749 750 |
# File 'lib/rdoc/rd/block_parser.rb', line 711 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 |