Module: ReadmeHelpers

Defined in:
lib/potassium/helpers/readme-helpers.rb

Instance Method Summary collapse

Instance Method Details

#add_readme_header(header, iterpolation_values = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/potassium/helpers/readme-helpers.rb', line 16

def add_readme_header(header, iterpolation_values = {})
  header_data = readme_header_data(header, iterpolation_values)
  return if read_file("README.md").match("## #{header_data[:title]}")

  if header_data[:body]
    insert_into_readme do
      <<-HERE.gsub(/^ {8}/, '')

      ## #{header_data[:title]}

      #{header_data[:body]}
      HERE
    end
  else
    insert_into_readme do
      <<-HERE.gsub(/^ {8}/, '')

      ## #{header_data[:title]}
      HERE
    end
  end
end

#add_readme_section(header, section, iterpolation_values = {}) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/potassium/helpers/readme-helpers.rb', line 2

def add_readme_section(header, section, iterpolation_values = {})
  section_data = readme_section_data(header, section, iterpolation_values)
  add_readme_header(header, iterpolation_values)

  insert_into_readme(section_data[:header_title]) do
    <<-HERE.gsub(/^ {6}/, '')

    ### #{section_data[:title]}

    #{section_data[:body]}
    HERE
  end
end

#get_readmeObject



68
69
70
71
# File 'lib/potassium/helpers/readme-helpers.rb', line 68

def get_readme
  file = File.expand_path("../../assets/README.yml", __FILE__)
  YAML.load(File.read(file))
end

#insert_into_readme(after_text = nil, &block) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/potassium/helpers/readme-helpers.rb', line 73

def insert_into_readme(after_text = nil, &block)
  if after_text
    line = "#{after_text}\n"
    insert_into_file "README.md", after: line do
      block.call
    end
  else
    append_to_file "README.md" do
      block.call
    end
  end
end

#interpolate_text(text, iterpolation_values) ⇒ Object



61
62
63
64
65
66
# File 'lib/potassium/helpers/readme-helpers.rb', line 61

def interpolate_text(text, iterpolation_values)
  return unless text
  b = binding
  iterpolation_values.each { |k, v| singleton_class.send(:define_method, k) { v } }
  ERB.new(text).result(b)
end

#readme_header_data(header, iterpolation_values) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/potassium/helpers/readme-helpers.rb', line 39

def readme_header_data(header, iterpolation_values)
  file = get_readme
  header_data = file["readme"]["headers"][header.to_s]

  {
    title: header_data["title"],
    body: interpolate_text(header_data["body"], iterpolation_values)
  }
end

#readme_section_data(header, section, iterpolation_values) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/potassium/helpers/readme-helpers.rb', line 49

def readme_section_data(header, section, iterpolation_values)
  file = get_readme
  header_data = file["readme"]["headers"][header.to_s]
  section_data = header_data["sections"][section.to_s]

  {
    header_title: header_data["title"],
    title: interpolate_text(section_data["title"], iterpolation_values),
    body: interpolate_text(section_data["body"], iterpolation_values)
  }
end