Class: Ibex::Frontend::RuleDocumentation
- Inherits:
-
Object
- Object
- Ibex::Frontend::RuleDocumentation
- Defined in:
- lib/ibex/frontend/rule_documentation.rb
Overview
Attaches immediately preceding lossless line-comment blocks to parsed rules.
Class Method Summary collapse
Instance Method Summary collapse
- #enrich(node) ⇒ Object
-
#initialize(document) ⇒ RuleDocumentation
constructor
A new instance of RuleDocumentation.
Constructor Details
#initialize(document) ⇒ RuleDocumentation
Returns a new instance of RuleDocumentation.
16 17 18 19 20 21 |
# File 'lib/ibex/frontend/rule_documentation.rb', line 16 def initialize(document) @segments_by_line = index_segments(document) #: Hash[Integer, Array[Segment]] @inline_lines = document.tokens.filter_map do |token| token.location.line if token.type == :inline end #: Array[Integer] end |
Class Method Details
.enrich(node, document) ⇒ Object
11 12 13 |
# File 'lib/ibex/frontend/rule_documentation.rb', line 11 def self.enrich(node, document) new(document).enrich(node) end |
Instance Method Details
#enrich(node) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/ibex/frontend/rule_documentation.rb', line 24 def enrich(node) rules = node.rules.map { |rule| documented_rule(rule) } if node.is_a?(AST::Root) AST::Root.new( class_name: node.class_name, superclass: node.superclass, declarations: node.declarations, rules: rules, user_code: node.user_code, loc: node.loc, extended: node.extended, cst: node.cst ) else AST::Fragment.new(declarations: node.declarations, rules: rules, loc: node.loc) end end |