class Terraspace::Seeder::Content
Public Class Methods
new(parsed)
click to toggle source
# File lib/terraspace/seeder/content.rb, line 5 def initialize(parsed) @parsed = parsed end
Public Instance Methods
all_vars()
click to toggle source
# File lib/terraspace/seeder/content.rb, line 71 def all_vars select_vars(@parsed) end
build()
click to toggle source
# File lib/terraspace/seeder/content.rb, line 9 def build lines = [] lines << "# Required variables:" unless required_vars.empty? required_vars.each do |name, meta| lines << build_line(name, meta) end lines << "" unless required_vars.empty? lines << "# Optional variables:" unless optional_vars.empty? optional_vars.each do |name, meta| lines << build_line(name, meta) end lines.join("\n") + "\n" end
build_line(name, meta)
click to toggle source
# File lib/terraspace/seeder/content.rb, line 23 def build_line(name, meta) value = var_value(meta) name = "# #{name}" if meta["default"] # optional so add as a comment name = "%-#{rpad}s" % name # rpad to align = signs "#{name} = #{value}" end
desc_example(desc)
click to toggle source
# File lib/terraspace/seeder/content.rb, line 56 def desc_example(desc) return unless desc md = desc.match(/([eE]xample|IE): (.*)/) return unless md md[2] end
escape(type, value)
click to toggle source
# File lib/terraspace/seeder/content.rb, line 41 def escape(type, value) if type&.include?('(') # complex type "[...] # #{type}" elsif %w[null any true false].include?(value) value # no quotes else %Q|"#{value}"| # add quotes end end
optional_vars()
click to toggle source
# File lib/terraspace/seeder/content.rb, line 67 def optional_vars select_vars(@parsed) { |meta| !meta["default"].nil? } end
required_vars()
click to toggle source
# File lib/terraspace/seeder/content.rb, line 63 def required_vars select_vars(@parsed) { |meta| meta["default"].nil? } end
rpad()
click to toggle source
# File lib/terraspace/seeder/content.rb, line 51 def rpad all_vars.keys.map(&:size).max end
select_vars(parsed) { |meta| ... }
click to toggle source
# File lib/terraspace/seeder/content.rb, line 75 def select_vars(parsed) vars = parsed.dig("variable") return [] unless vars vars.select do |name,meta| block_given? ? yield(meta) : true end end
var_value(meta)
click to toggle source
# File lib/terraspace/seeder/content.rb, line 30 def var_value(meta) type, default = meta["type"], meta["default"] if default escape(type, default) else value = desc_example(meta["description"]) || type || "any" escape(type, value) end end