Commit e6c6e1d4 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Use class << self pattern in Web::ClassIcons.

Instead of prefixing each static method with "self.", use this
Ruby trick to place all these methods into the 'eigenclass'.
parent c3ca9f57
Loading
Loading
Loading
Loading
+53 −49
Original line number Diff line number Diff line
@@ -5,8 +5,9 @@ require 'fileutils'
module JsDuck
  module Web
    class ClassIcons
      class << self
        # Returns CSS class name for an icon of class
      def self.get(cls)
        def get(cls)
          class_icon_providers.each do |tag|
            if cls[tag.tagname]
              return "icon-#{tag.tagname}"
@@ -17,7 +18,7 @@ module JsDuck
        end

        # Generates CSS for class icons
      def self.css
        def css
          css = []
          class_icon_providers.each do |tag|
            css << <<-EOCSS
@@ -37,7 +38,7 @@ module JsDuck
        end

        # Copies all class icons to given destination dir.
      def self.write(dir)
        def write(dir)
          FileUtils.mkdir(dir)

          icons = {}
@@ -56,17 +57,20 @@ module JsDuck
          end
        end

      def self.class_icon_providers
        private

        def class_icon_providers
          @providers ||= generate_class_icon_providers
        end

        # Find tags with #class_icon and sort them from highest priority to lowest
      def self.generate_class_icon_providers
        def generate_class_icon_providers
          TagRegistry.tags.find_all {|t| t.class_icon }.sort do |a, b|
            a.class_icon[:priority] <=> b.class_icon[:priority]
          end.reverse
        end
      end
    end

  end
end