module Playbook::PbDocHelper
def get_class_name(kit)
def get_class_name(kit) folder = is_subkit?(kit) ? pb_camelize(kit.split("/")[0]) : pb_camelize(kit) item = is_subkit?(kit) ? pb_camelize(kit.split("/")[-1]) : pb_camelize(kit) "Playbook::Pb#{folder}::#{item}".safe_constantize end
def get_kit_examples(kit, type)
def get_kit_examples(kit, type) example_file = File.join(Playbook::Engine.root, "app", "pb_kits", "playbook", "pb_#{kit}", "docs", "example.yml") if File.exist? example_file examples_list = YAML.load_file(example_file) examples_list = examples_list.inject({}) { |item, (k, v)| item[k.to_sym] = v; item } all_kit_examples = {} all_kit_examples[:kit] = kit all_kit_examples[:examples] = examples_list[:examples][type] return all_kit_examples else return {} end end
def has_kit_type?(kit, type)
def has_kit_type?(kit, type) type ||= "rails" if type == "rails" return Dir["playbook/pb_#{kit}/*.html.erb"].empty? elsif type == "react" return Dir["playbook/pb_#{kit}/*.jsx"].empty? end end
def pb_kit(kit: "", type: "rails")
def pb_kit(kit: "", type: "rails") @type = type @kit_examples = get_kit_examples(kit, type) render partial: "playbook/config/kit_example" end
def pb_kit_api(kit)
def pb_kit_api(kit) kit_class_obj = get_class_name(kit) @kit_api = kit_class_obj.instance_method(:initialize).parameters.map(&:last) render partial: "playbook/config/pb_kit_api" end
def pb_kit_title(title)
def pb_kit_title(title) title.remove("pb_").titleize.tr("_", " ") end
def pb_kits(type: "rails")
def pb_kits(type: "rails") display_kits = [] MENU["kits"].sort.each do |kit| title = render_clickable_title(kit) ui = raw("<div class='pb--docItem-ui'> #{pb_kit(kit: kit, type: type)}</div>") display_kits << title + ui end raw("<div class='pb--docItem'>" + display_kits.join("</div><div class='pb--docItem'>") + "</div>") end
def render_clickable_title(kit)
def render_clickable_title(kit) render inline: "<a href='#{kit_show_path(kit)}'> #{pb_rails(:title, props: { text: pb_kit_title(kit), tag: 'h3', size: '2' })}</a>" end