Module: YardToRbsInline::Converter::Subscriptable

Included in:
CodeVisitor
Defined in:
lib/yard_to_rbs_inline/converter/subscriptable.rb

Instance Method Summary collapse

Instance Method Details

#capture_error_message(subscriber) ⇒ Object

: [X] (subscriber) { () -> X } -> X



25
26
27
28
29
30
31
# File 'lib/yard_to_rbs_inline/converter/subscriptable.rb', line 25

def capture_error_message(subscriber)
  @subscribers ||= [] #: Array[subscriber]
  @subscribers.push(subscriber)
  yield
ensure
  @subscribers.pop
end

#capture_error_to_write_comment(node, &block) ⇒ Object

: [X] (Prism::Node) { () -> X } -> X



41
42
43
# File 'lib/yard_to_rbs_inline/converter/subscriptable.rb', line 41

def capture_error_to_write_comment(node, &block)
  capture_error_message(subscriber_to_prepend_error(node), &block)
end

#emit_error_message(error_message) ⇒ Object

: (String) -> void



18
19
20
# File 'lib/yard_to_rbs_inline/converter/subscriptable.rb', line 18

def emit_error_message(error_message)
  (@subscribers || []).each { |subscriber| subscriber.call(error_message) }
end

#subscriber_to_prepend_error(node) ⇒ Object

: (Prism::Node) -> subscriber



34
35
36
37
38
# File 'lib/yard_to_rbs_inline/converter/subscriptable.rb', line 34

def subscriber_to_prepend_error(node)
  lambda { |message|
    text_with_mod.mods << PrependLine.from_node_and_content(node, "# YARD to RBS Error: #{message}")
  }
end