• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Nu-hin / remote_ruby / 13684372865

05 Mar 2025 07:54PM UTC coverage: 93.402% (+0.07%) from 93.333%
13684372865

push

github

Nu-hin
Extract TextModeBuilder

41 of 41 new or added lines in 4 files covered. (100.0%)

1 existing line in 1 file now uncovered.

906 of 970 relevant lines covered (93.4%)

90.55 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/lib/remote_ruby/source_extractor.rb
1
# frozen_string_literal: true
2

3
require 'method_source'
20✔
4
require 'parser/current'
20✔
5
require 'unparser'
20✔
6

7
# Opt-in to most recent AST format
8
Parser::Builders::Default.emit_lambda              = true
20✔
9
Parser::Builders::Default.emit_procarg0            = true
20✔
10
Parser::Builders::Default.emit_encoding            = true
20✔
11
Parser::Builders::Default.emit_index               = true
20✔
12
Parser::Builders::Default.emit_arg_inside_procarg0 = true
20✔
13
Parser::Builders::Default.emit_forward_arg         = true
20✔
14
Parser::Builders::Default.emit_kwargs              = true
20✔
15
Parser::Builders::Default.emit_match_pattern       = true
20✔
16

17
module RemoteRuby
20✔
18
  # Receives a block and extracts Ruby code (as a string) with this block's
19
  # source
20
  class SourceExtractor
20✔
21
    def extract(&block)
20✔
22
      ast = Parser::CurrentRuby.parse(block.source)
500✔
23
      block_node = find_block(ast)
500✔
24

25
      return '' unless block_node
500✔
26

27
      _, body = parse(block_node)
500✔
28
      Unparser.unparse(body)
500✔
29
    end
30

31
    private
20✔
32

33
    def find_block(node)
20✔
34
      return nil unless node.is_a? AST::Node
1,060✔
35
      return node if node.type == :block
780✔
36

37
      node.children.each do |child|
280✔
38
        res = find_block(child)
560✔
39
        return res if res
560✔
40
      end
41

UNCOV
42
      nil
43
    end
44

45
    def parse(node)
20✔
46
      args = node.children[1].children
500✔
47
      body = node.children[2]
500✔
48
      [args, body]
500✔
49
    end
50
  end
51
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc