Class: TRuby::DocsExampleVerifier
- Inherits:
-
Object
- Object
- TRuby::DocsExampleVerifier
- Defined in:
- lib/t_ruby/docs_example_verifier.rb
Overview
Verifies code examples extracted from documentation.
Performs:
-
Syntax validation (parsing)
-
Type checking (for .trb examples)
-
Compilation (generates Ruby output)
Defined Under Namespace
Classes: VerificationResult
Instance Method Summary collapse
-
#initialize ⇒ DocsExampleVerifier
constructor
A new instance of DocsExampleVerifier.
-
#print_results(results, verbose: false) ⇒ Object
Print results to stdout.
-
#summary(results) ⇒ Hash
Generate a summary report.
-
#verify_example(example) ⇒ VerificationResult
Verify a single code example.
-
#verify_file(file_path) ⇒ Array<VerificationResult>
Verify all examples in a file.
-
#verify_glob(pattern) ⇒ Array<VerificationResult>
Verify all examples from multiple files.
Constructor Details
#initialize ⇒ DocsExampleVerifier
Returns a new instance of DocsExampleVerifier.
48 49 50 51 |
# File 'lib/t_ruby/docs_example_verifier.rb', line 48 def initialize @extractor = DocsExampleExtractor.new @compiler = TRuby::Compiler.new end |
Instance Method Details
#print_results(results, verbose: false) ⇒ Object
Print results to stdout
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/t_ruby/docs_example_verifier.rb', line 110 def print_results(results, verbose: false) results.each do |result| next if result.pass? && !verbose status_icon = case result.status when :pass then "\e[32m✓\e[0m" when :fail then "\e[31m✗\e[0m" when :skip then "\e[33m○\e[0m" end puts "#{status_icon} #{result.file_path}:#{result.line_number}" result.errors&.each do |error| puts " #{error}" end end summary_data = summary(results) puts puts "Results: #{summary_data[:passed]} passed, #{summary_data[:failed]} failed, #{summary_data[:skipped]} skipped" puts "Pass rate: #{summary_data[:pass_rate]}%" end |
#summary(results) ⇒ Hash
Generate a summary report
96 97 98 99 100 101 102 103 104 |
# File 'lib/t_ruby/docs_example_verifier.rb', line 96 def summary(results) { total: results.size, passed: results.count(&:pass?), failed: results.count(&:fail?), skipped: results.count(&:skip?), pass_rate: results.empty? ? 0 : (results.count(&:pass?).to_f / results.size * 100).round(2), } end |
#verify_example(example) ⇒ VerificationResult
Verify a single code example
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/t_ruby/docs_example_verifier.rb', line 75 def verify_example(example) return skip_result(example, "Marked as skip-verify") unless example.should_verify? case example.language when "trb" verify_trb_example(example) when "ruby" verify_ruby_example(example) when "rbs" verify_rbs_example(example) else skip_result(example, "Unknown language: #{example.language}") end rescue StandardError => e fail_result(example, ["Exception: #{e.message}"]) end |
#verify_file(file_path) ⇒ Array<VerificationResult>
Verify all examples in a file
57 58 59 60 |
# File 'lib/t_ruby/docs_example_verifier.rb', line 57 def verify_file(file_path) examples = @extractor.extract_from_file(file_path) examples.map { |example| verify_example(example) } end |
#verify_glob(pattern) ⇒ Array<VerificationResult>
Verify all examples from multiple files
66 67 68 69 |
# File 'lib/t_ruby/docs_example_verifier.rb', line 66 def verify_glob(pattern) examples = @extractor.extract_from_glob(pattern) examples.map { |example| verify_example(example) } end |