class Scopedog::Exporters::MarkdownExporter
Public Class Methods
new(opts = {})
click to toggle source
@param opts [Hash] @option opts [String] :dir
# File lib/scopedog/exporters/markdown_exporter.rb, line 5 def initialize(opts = {}) @dir = opts[:dir] end
Public Instance Methods
export(record_class, destination = {})
click to toggle source
@param record_class [Scopedog::RecordClass] @param dest [Hash] @option dest [String] :prefix @option dest [String] :name
# File lib/scopedog/exporters/markdown_exporter.rb, line 13 def export(record_class, destination = {}) name = destination[:name] || record_class.name.to_s.underscore name = "#{name}.md" unless File.extname(name) == '.md' dir = @dir dir = File.join(dir, destination[:prefix]) if destination[:prefix] if name.include? '/' name, prefix = name.split('/').yield_self { |p| [p[-1], p[0..-2]] } dir = File.join(dir, prefix) end FileUtils.mkdir_p(dir) unless File.exists?(dir) File.open(File.join(dir, name), 'w') do |f| f.puts <<~MARKDOWN # #{record_class.name} #{record_class.docstring} ```sql -- default scope #{record_class.default_sql} ``` MARKDOWN unless record_class.scopes.empty? f.puts f.puts "## Scopes" record_class.scopes.each do |s| f.puts f.puts <<~MARKDOWN ### `#{s.name}` #{s.docstring} ```sql #{s.sql} ``` MARKDOWN end end end end