Sha256: 1d7e9d8ad83489638687738b31bf0761158cb0a09243a13056cf54d59b486de3
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
# frozen_string_literal: true require 'pry' module TraceLocation module Generator class Markdown < Base # :nodoc: def initialize(events, return_value, options) super @gems_dir = ::TraceLocation.config.gems_dir @dest_dir = options.fetch(:dest_dir) { ::TraceLocation.config.dest_dir } @current = Time.now @filename = "trace_location-#{@current.strftime('%Y%m%d%H%m%s')}.md" @file_path = File.join(@dest_dir, @filename) end def generate setup_dir create_file $stdout.puts "Created at #{file_path}" end private attr_reader :events, :return_value, :gems_dir, :dest_dir, :current, :filename, :file_path def setup_dir FileUtils.mkdir_p(dest_dir) end def create_file File.open(file_path, 'wb+') do |io| io.write <<~MARKDOWN Generated by [trace_location](https://github.com/yhirano55/trace_location) at #{current} MARKDOWN events.select(&:call?).each do |e| pm = begin Pry::Method.from_str(e.method_str) rescue StandardError nil end next if pm.nil? path = e.path.to_s.gsub(%r{#{gems_dir}/}, '') caller_path = e.caller_path.to_s.gsub(%r{#{gems_dir}/}, '') io.write <<~MARKDOWN <details open> <summary>#{path}:#{e.lineno}</summary> ##### #{pm.name_with_owner} ```#{pm.source_type} #{pm.source.chomp} # called from #{caller_path}:#{e.caller_lineno} ``` </details> MARKDOWN end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
trace_location-0.9.0 | lib/trace_location/generator/markdown.rb |