Sha256: 5756298df2d8bc587eb39db401d3efea2f93442488a78d0a557ddcaac1d5b56f

Contents?: true

Size: 1013 Bytes

Versions: 4

Compression:

Stored size: 1013 Bytes

Contents

require 'set'
require Sassy.root.join('scss', 'is_scss')

module Sassy
  module SCSS
    class Rule

      include IsSCSS

      def initialize(selector, &block)
        raise ArgumentError if selector.blank?
        @selector = selector
        instance_eval(&block) if block_given?
      end

      def declarations
        @declarations ||= DeclarationSet.new
      end

      def rules
        @rules ||= RuleSet.new
      end

      def r(selector, &block)
        rules.add(selector, &block)
      end

      def d(property, value)
        declarations.add(property, value)
      end

      def to_scss
        a = ["#{@selector} {"]
        a << declarations.to_scss unless declarations.empty?
        a << rules.to_scss unless rules.empty?
        a << "}"
        a.join(" ")
      end

      private

      def method_missing(method, *args, &block)
        if block_given?
          r(method, &block)
        else
          d(method.to_s.gsub('_', '-'), args[0])
        end
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sassy-1.0.0 lib/sassy/scss/rule.rb
sassy-0.0.3 lib/sassy/scss/rule.rb
sassy-0.0.2 lib/sassy/scss/rule.rb
sassy-0.0.1 lib/sassy/scss/rule.rb