Class: PointBlank::DOM::DOMObject
- Inherits:
-
Object
- Object
- PointBlank::DOM::DOMObject
- Includes:
- Enumerable
- Defined in:
- lib/mmmd/blankshell.rb
Overview
DOM Object
Direct Known Subclasses
Block, HorizontalRule, InlineAutolink, InlineBreak, InlineFormattable, InlinePre, InlineRoot, LeafBlock, OLBlock, Paragraph, TempText, Text, ULBlock
Class Attribute Summary collapse
-
.parser ⇒ Object
Returns the value of attribute parser.
-
.scanner ⇒ Object
Returns the value of attribute scanner.
-
.unsorted_children ⇒ Object
Returns the value of attribute unsorted_children.
-
.unsorted_overlays ⇒ Object
Returns the value of attribute unsorted_overlays.
Instance Attribute Summary collapse
-
#content ⇒ Object
Returns the value of attribute content.
-
#parent ⇒ Object
Returns the value of attribute parent.
-
#parser ⇒ Object
Returns the value of attribute parser.
-
#position ⇒ Object
Returns the value of attribute position.
-
#properties ⇒ Object
Returns the value of attribute properties.
-
#temp_children ⇒ Object
readonly
Returns the value of attribute temp_children.
Class Method Summary collapse
-
.define_child(child, priority = 9999) ⇒ void
Define valid child for this DOMObject class.
-
.define_overlay(overlay, priority = 9999) ⇒ void
Define an overlay - a parsing strategy that occurs once a block is closed.
-
.define_parser(parser) ⇒ void
Define self parser for this DOMObject class.
-
.define_scanner(scanner) ⇒ void
Define child element scanner for this DOMObject class.
-
.inherited(subclass) ⇒ Object
Make subclasses inherit scanner and valid children.
-
.parse(doc) ⇒ self
Parse a document.
-
.sort_children ⇒ void
Sort children by priority.
-
.sort_overlays ⇒ void
Sort overlays by priority.
-
.upsource ⇒ Object
Source parameters from parent (fixes recursive dependency).
-
.valid_children ⇒ Array<Class>
Get array of valid children sorted by priority.
-
.valid_overlays ⇒ Array<::PointBlank::Parsing::NullOverlay>
Get array of valid overlays sorted by priority.
Instance Method Summary collapse
-
#[](index) ⇒ DOMObject
Get element at position.
-
#[]=(index, element) ⇒ DOMObject
Set element at position.
-
#append_child(child) ⇒ Object
Append child.
-
#append_temp_child(child) ⇒ Object
Append temp child.
-
#children ⇒ Array<DOMObject>
Return an array duplicate of all children.
-
#each(&block) ⇒ Object
Iterate over each child of DOMObject.
-
#initialize ⇒ DOMObject
constructor
A new instance of DOMObject.
-
#root ⇒ ::PointBlank::DOM::DOMObject
Get root element containing this child.
Constructor Details
#initialize ⇒ DOMObject
Returns a new instance of DOMObject.
1554 1555 1556 1557 1558 1559 |
# File 'lib/mmmd/blankshell.rb', line 1554 def initialize @children = [] @temp_children = [] @properties = {} @content = "" end |
Class Attribute Details
.parser ⇒ Object
Returns the value of attribute parser.
1547 1548 1549 |
# File 'lib/mmmd/blankshell.rb', line 1547 def parser @parser end |
.scanner ⇒ Object
Returns the value of attribute scanner.
1547 1548 1549 |
# File 'lib/mmmd/blankshell.rb', line 1547 def scanner @scanner end |
.unsorted_children ⇒ Object
Returns the value of attribute unsorted_children.
1547 1548 1549 |
# File 'lib/mmmd/blankshell.rb', line 1547 def unsorted_children @unsorted_children end |
.unsorted_overlays ⇒ Object
Returns the value of attribute unsorted_overlays.
1547 1548 1549 |
# File 'lib/mmmd/blankshell.rb', line 1547 def @unsorted_overlays end |
Instance Attribute Details
#content ⇒ Object
Returns the value of attribute content.
1618 1619 1620 |
# File 'lib/mmmd/blankshell.rb', line 1618 def content @content end |
#parent ⇒ Object
Returns the value of attribute parent.
1618 1619 1620 |
# File 'lib/mmmd/blankshell.rb', line 1618 def parent @parent end |
#parser ⇒ Object
Returns the value of attribute parser.
1618 1619 1620 |
# File 'lib/mmmd/blankshell.rb', line 1618 def parser @parser end |
#position ⇒ Object
Returns the value of attribute position.
1618 1619 1620 |
# File 'lib/mmmd/blankshell.rb', line 1618 def position @position end |
#properties ⇒ Object
Returns the value of attribute properties.
1618 1619 1620 |
# File 'lib/mmmd/blankshell.rb', line 1618 def properties @properties end |
#temp_children ⇒ Object (readonly)
Returns the value of attribute temp_children.
1619 1620 1621 |
# File 'lib/mmmd/blankshell.rb', line 1619 def temp_children @temp_children end |
Class Method Details
.define_child(child, priority = 9999) ⇒ void
This method returns an undefined value.
Define valid child for this DOMObject class
1476 1477 1478 1479 |
# File 'lib/mmmd/blankshell.rb', line 1476 def define_child(child, priority = 9999) @unsorted_children ||= [] @unsorted_children.append([child, priority]) end |
.define_overlay(overlay, priority = 9999) ⇒ void
This method returns an undefined value.
Define an overlay - a parsing strategy that occurs once a block is closed. May transform block if #process method of the overlay class returns a class.
1501 1502 1503 1504 |
# File 'lib/mmmd/blankshell.rb', line 1501 def (, priority = 9999) @unsorted_overlays ||= [] @unsorted_overlays.append([, priority]) end |
.define_parser(parser) ⇒ void
This method returns an undefined value.
Define self parser for this DOMObject class
1491 1492 1493 1494 |
# File 'lib/mmmd/blankshell.rb', line 1491 def define_parser(parser) parser.parser_for = self @parser = parser end |
.define_scanner(scanner) ⇒ void
This method returns an undefined value.
Define child element scanner for this DOMObject class
1484 1485 1486 |
# File 'lib/mmmd/blankshell.rb', line 1484 def define_scanner(scanner) @scanner = scanner end |
.inherited(subclass) ⇒ Object
Make subclasses inherit scanner and valid children
1459 1460 1461 1462 1463 1464 |
# File 'lib/mmmd/blankshell.rb', line 1459 def inherited(subclass) subclass.parser ||= @parser subclass.scanner ||= @scanner subclass.unsorted_children ||= @unsorted_children.dup || [] super(subclass) end |
.parse(doc) ⇒ self
Parse a document
1515 1516 1517 1518 1519 1520 |
# File 'lib/mmmd/blankshell.rb', line 1515 def parse(doc) newdoc = new newdoc.parser = parser.new scan = @scanner.new(doc, newdoc) scan.scan end |
.sort_children ⇒ void
This method returns an undefined value.
Sort children by priority
1468 1469 1470 1471 |
# File 'lib/mmmd/blankshell.rb', line 1468 def sort_children @valid_children = @unsorted_children&.sort_by(&:last)&.map(&:first) || [] end |
.sort_overlays ⇒ void
This method returns an undefined value.
Sort overlays by priority
1508 1509 1510 1511 |
# File 'lib/mmmd/blankshell.rb', line 1508 def @valid_overlays = @unsorted_overlays&.sort_by(&:last)&.map(&:first) || [] end |
.upsource ⇒ Object
Source parameters from parent (fixes recursive dependency)
1523 1524 1525 1526 1527 1528 1529 1530 1531 |
# File 'lib/mmmd/blankshell.rb', line 1523 def upsource superclass&.tap do |sc| @scanner = sc.scanner @parser = sc.parser @unsorted_children = sc.unsorted_children.dup @unsorted_overlays = sc..dup end sort_children end |
.valid_children ⇒ Array<Class>
Get array of valid children sorted by priority
1542 1543 1544 1545 |
# File 'lib/mmmd/blankshell.rb', line 1542 def valid_children sort_children unless @valid_children @valid_children end |
.valid_overlays ⇒ Array<::PointBlank::Parsing::NullOverlay>
Get array of valid overlays sorted by priority
1535 1536 1537 1538 |
# File 'lib/mmmd/blankshell.rb', line 1535 def unless @valid_overlays @valid_overlays end |
Instance Method Details
#[](index) ⇒ DOMObject
Get element at position
1576 1577 1578 |
# File 'lib/mmmd/blankshell.rb', line 1576 def [](index) @children[index] end |
#[]=(index, element) ⇒ DOMObject
Set element at position
1565 1566 1567 1568 1569 1570 1571 |
# File 'lib/mmmd/blankshell.rb', line 1565 def []=(index, element) unless element.is_a? ::PointBlank::DOM::DOMObject raise DOMError, "invalid DOM class #{element.class}" end @children[index] = element end |
#append_child(child) ⇒ Object
Append child
1602 1603 1604 1605 1606 1607 1608 1609 1610 |
# File 'lib/mmmd/blankshell.rb', line 1602 def append_child(child) unless child.is_a? ::PointBlank::DOM::DOMObject raise DOMError, "invalid DOM class #{child.class}" end child.parent = self child.position = @children.length @children.append(child) end |
#append_temp_child(child) ⇒ Object
Append temp child
1614 1615 1616 |
# File 'lib/mmmd/blankshell.rb', line 1614 def append_temp_child(child) @temp_children.append(child) end |
#children ⇒ Array<DOMObject>
Return an array duplicate of all children
1588 1589 1590 |
# File 'lib/mmmd/blankshell.rb', line 1588 def children @children.dup end |
#each(&block) ⇒ Object
Iterate over each child of DOMObject
1582 1583 1584 |
# File 'lib/mmmd/blankshell.rb', line 1582 def each(&block) @children.each(&block) end |
#root ⇒ ::PointBlank::DOM::DOMObject
Get root element containing this child
1594 1595 1596 1597 1598 |
# File 'lib/mmmd/blankshell.rb', line 1594 def root current_root = self current_root = current_root.parent while current_root.parent current_root end |