Module: RSpecDoc::MarkdownUtil
- Defined in:
- lib/rspec-doc/markdown_util.rb
Class Method Summary collapse
- .code_block(type, body) ⇒ Object
- .http_headers_table(kv) ⇒ Object
- .json_block(h) ⇒ Object
- .kv_table(kv, params = {}) ⇒ Object
- .table(header, body) ⇒ Object
Class Method Details
.code_block(type, body) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/rspec-doc/markdown_util.rb', line 38 def self.code_block(type, body) [ "```#{type.to_s}", body, '```' ].join("\n") end |
.http_headers_table(kv) ⇒ Object
33 34 35 36 |
# File 'lib/rspec-doc/markdown_util.rb', line 33 def self.http_headers_table(kv) formatter = -> (k) { k.to_s.split('_').map(&:capitalize).join('-') } self.kv_table(kv, {key_formatter: formatter}) end |
.json_block(h) ⇒ Object
46 47 48 49 |
# File 'lib/rspec-doc/markdown_util.rb', line 46 def self.json_block(h) h = JSON.parse(h) if h.is_a? String self.code_block(:json, JSON.pretty_generate(h)) end |
.kv_table(kv, params = {}) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/rspec-doc/markdown_util.rb', line 14 def self.kv_table(kv, params = {}) return '' unless kv kv = JSON.parse(kv) if kv.is_a? String items = [] kv.each do |key, value| next unless value value = value.map { |k, v| "#{k}: #{v}" }.join("\n") if value.is_a? Hash value = value.join("\n") if value.is_a? Enumerable key = params[:key_formatter].call(key) if params[:key_formatter].is_a? Proc items << [key, value] end return '' if items.size == 0 self.table(['Key', 'Value'], items) end |
.table(header, body) ⇒ Object
4 5 6 7 8 9 10 11 12 |
# File 'lib/rspec-doc/markdown_util.rb', line 4 def self.table(header, body) return '' unless header.is_a?(Enumerable) and body.is_a?(Enumerable) header_line = "| #{header.join(' | ')} |" direction_line = "| #{':--- |' * header.size}" [header_line, direction_line] .concat(body.map { |item| "| #{item.join(' | ')} |" }) .join("\n") end |