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

Nu-hin / remote_ruby / 13608525548

01 Mar 2025 08:28PM UTC coverage: 92.736% (+0.007%) from 92.729%
13608525548

push

github

Nu-hin
Add error handling section to the README

983 of 1060 relevant lines covered (92.74%)

83.38 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)
480✔
23
      block_node = find_block(ast)
480✔
24

25
      return '' unless block_node
480✔
26

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

31
    private
20✔
32

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

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

42
      nil
43
    end
44

45
    def parse(node)
20✔
46
      args = node.children[1].children
480✔
47
      body = node.children[2]
480✔
48
      [args, body]
480✔
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