Sha256: 8effb0895e1d662898ae2fb0efdb439690f28f8e974a8c07767b9540e8fefb11
Contents?: true
Size: 1.93 KB
Versions: 2
Compression:
Stored size: 1.93 KB
Contents
module Lookbook module Utils include Lookbook::Engine.routes.url_helpers POSITION_PREFIX_REGEX = /^(\d+?)[-_]/ FRONTMATTER_REGEX = /\A---(.|\n)*?---/ protected def generate_id(*args) parts = args.map { |arg| arg.to_s.force_encoding("UTF-8").parameterize.underscore } parts.join("-").tr("/_", "-").delete_prefix("-").delete_suffix("-").gsub("--", "-") end def preview_class_basename(klass) class_name(klass).to_s.chomp("ComponentPreview").chomp("Component::Preview").chomp("::Preview").chomp("Component").chomp("Preview").chomp("::") end def preview_class_name(klass) preview_class_basename(klass).underscore end def class_name(klass) klass.is_a?(Class) ? klass.name : klass end def normalize_matchers(*matchers) matchers.flatten.map { |m| m.gsub(/\s/, "").downcase } end def get_position_prefix(str) parse_position_prefix(str).first end def remove_position_prefix(str) parse_position_prefix(str).last end def get_frontmatter(str) parse_frontmatter(str).first end def strip_frontmatter(str) parse_frontmatter(str).last end def to_lookup_path(path) path.split("/").map { |segment| remove_position_prefix(segment) }.join("/") end def to_preview_path(*args) args.flatten.map { |arg| preview_class_name(arg) }.join("/") end protected def default_url_options {} end private def parse_frontmatter(content) frontmatter = content.match(FRONTMATTER_REGEX) if frontmatter.nil? [{}, content] else [YAML.safe_load(frontmatter[0]), content.gsub(FRONTMATTER_REGEX, "")] end end def parse_position_prefix(str) pos = str.match(POSITION_PREFIX_REGEX) if pos.nil? [10000, str] else cleaned_str = str.gsub(POSITION_PREFIX_REGEX, "") [pos[1].to_i, cleaned_str] end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
lookbook-1.0.0.beta.2 | lib/lookbook/utils.rb |
lookbook-1.0.0.beta.1 | lib/lookbook/utils.rb |