Module: DocGen

Defined in:
lib/doc_gen/parser.rb,
lib/doc_gen/renderer.rb

Overview

DocGen: Prism-based parser and Jekyll Markdown renderer for test documentation.

Usage:

require_relative 'lib/doc_gen/parser'
require_relative 'lib/doc_gen/renderer'

contexts = DocGen::Parser.parse_files(Dir['test/**/*_spec.rb'])
DocGen::Renderer.render(contexts, output_dir: 'docs/tests')

Defined Under Namespace

Classes: Context, NamespaceBuilder, Parser, Renderer, Spec

Class Method Summary collapse

Class Method Details

.humanize(name) ⇒ Object

Convert a raw describe name to a human-readable title.

Takes the last

segment and splits CamelCase into words.

Examples:

'Site::Tlc::DetectorLogics' => 'Detector Logics'
'Site::Core'                => 'Core'
'Detector Logic'            => 'Detector Logic'  (already readable)


88
89
90
91
92
# File 'lib/doc_gen/parser.rb', line 88

def self.humanize(name)
  segment = name.split('::').last || name
  segment.gsub(/([a-z\d])([A-Z])/, '\1 \2')
         .gsub(/([A-Z]+)([A-Z][a-z])/, '\1 \2')
end

.slugify(name) ⇒ Object

Convert a name to a URL/filesystem-friendly slug.



74
75
76
77
78
79
80
# File 'lib/doc_gen/parser.rb', line 74

def self.slugify(name)
  name.gsub('::', '_')
      .gsub(/[^a-zA-Z0-9_]+/, '_')
      .gsub(/_+/, '_')
      .gsub(/\A_+|_+\z/, '')
      .downcase
end