Sha256: 52d2dcea0780b359e6b432ea5eb3756d43e7ac28fb7bc01b7ed8ad22859a5c9e

Contents?: true

Size: 971 Bytes

Versions: 1

Compression:

Stored size: 971 Bytes

Contents

def init
  tags = Tags::Library.visible_tags
  create_tag_methods(tags - %i[example see note])
  sections :index, tags.map { |t| t.to_s.tr('.', '_').to_sym }
end

private

def tag(name, opts = nil)
  return unless object.has_tag?(name)
  opts ||= options_for_tag(name)
  @no_names = true if opts[:no_names]
  @no_types = true if opts[:no_types]
  @name = name
  out = erb('tag')
  @no_names = nil
  @no_types = nil
  out
end

def create_tag_methods(tags)
  tags.each do |tag|
    tag_meth = tag.to_s.tr('.', '_')
    next if respond_to?(tag_meth)
    instance_eval(<<-eof, __FILE__, __LINE__ + 1)
      def #{tag_meth}; tag(#{tag.inspect}) end
    eof
  end
end

def options_for_tag(tag)
  opts = { no_types: true, no_names: true }
  case Tags::Library.factory_method_for(tag)
  when :with_types
    opts[:no_types] = false
  when :with_types_and_name
    opts[:no_types] = false
    opts[:no_names] = false
  when :with_name
    opts[:no_names] = false
  end
  opts
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
yard-chef-2.0.0 templates/default/chef_tags/setup.rb