lib/lookbook/tags.rb



module Lookbook
  module Tags
    def define_tag(name, args = nil, opts = {}, &block)
      name = name.to_s.downcase.underscore.to_sym
      if args.is_a? Hash
        opts = args
        args = nil
      end
      opts[:args] = args
      opts[:parser] = block if block
      Lookbook.config.preview_tags[name] = opts
    end

    def self.process_tags(tag_objects)
      return [] if tag_objects.none?
      tag_objects.map do |tag_object|
        opts = Lookbook.config.preview_tags[tag_object.tag_name] || {}
        Lookbook::Tag.new(tag_object, opts[:args], **opts.except(:args))
      end.compact
    end
  end
end