Sha256: 51e08e94536c97c2ad0248680138e610f10b6b08e579faef45cb978d533e2430

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

require 'coderay'
require 'yaml'

module Undercase
  class Pattern
    PATTERNS = Array.new
    SCSS_FILE = 'app/assets/stylesheets/undercase/_patterns.scss'
    YAML_PATH = 'lib/undercase/patterns/'
    SCSS_PATH = 'app/assets/stylesheets/undercase/patterns/'
    HAML_PATH = 'app/views/undercase/patterns/'

    attr_reader :key

    def initialize(key)
      @key = key
      @metadata = YAML.load_file(yaml_path)
    end

    def to_partial_path
      'undercase/patterns/pattern'
    end

    def name
      @metadata.fetch('name')
    end

    def usage
      @metadata.fetch('usage')
    end

    def description
      @metadata.fetch('description')
    end

    def category
      @metadata.fetch('category')
    end

    def display_code?
      @metadata.fetch('display', true)
    end

    def highlighted_source
      source = File.read(File.expand_path("../../../app/views/undercase/patterns/_#@key.html.haml", __FILE__))
      CodeRay.scan(source, :haml).div(:css => :class).html_safe
    end

    private

    def yaml_path
      File.expand_path("../patterns/#{key}.yml", __FILE__)
    end

    class << self
      def all
        directory = File.dirname(__FILE__)
        Dir["#{directory}/patterns/*.yml"].map do |d|
          filename_as_symbol = File.basename(d).sub(/\.yml/, '').to_sym
          Pattern.new(filename_as_symbol)
        end
      end

      def for_category(category)
        Pattern.all.select { |pattern| pattern.category == category }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
undercase-0.2.57 lib/undercase/pattern.rb
undercase-0.2.29 lib/undercase/pattern.rb