class Inkcite::Renderer::Responsive::Rule

Attributes

declarations[R]
klass[R]

Public Class Methods

new(tags, klass, declarations, active=true) click to toggle source
# File lib/inkcite/renderer/responsive.rb, line 43
def initialize tags, klass, declarations, active=true
  @klass = klass
  @declarations = declarations

  @tags = Set.new [*tags]

  # By default, a rule isn't considered active until it has
  # been marked used.  This allows the view to declare built-in
  # styles (such as hide or stack) that don't show up in the
  # rendered HTML unless the author references them.
  @active = active

end

Public Instance Methods

<<(tag) click to toggle source
# File lib/inkcite/renderer/responsive.rb, line 57
def << tag
  @tags << tag
end
activate!() click to toggle source
# File lib/inkcite/renderer/responsive.rb, line 61
def activate!
  @active = true
end
active?() click to toggle source
# File lib/inkcite/renderer/responsive.rb, line 65
def active?
  @active
end
att_selector_string() click to toggle source
# File lib/inkcite/renderer/responsive.rb, line 69
def att_selector_string
  ".#{@klass}"
end
block?() click to toggle source
# File lib/inkcite/renderer/responsive.rb, line 73
def block?
  declaration_string.downcase.include?('block')
end
declaration_string() click to toggle source
# File lib/inkcite/renderer/responsive.rb, line 77
def declaration_string
  if @declarations.is_a?(Hash)
    Renderer.render_styles(@declarations)
  elsif @declarations.is_a?(Array)
    @declarations.join(' ')
  else
    @declarations.to_s
  end
end
include?(tag) click to toggle source
# File lib/inkcite/renderer/responsive.rb, line 87
def include? tag
  universal? || @tags.include?(tag)
end
to_css() click to toggle source
# File lib/inkcite/renderer/responsive.rb, line 91
def to_css

  rule = ""

  att_selector = att_selector_string

  if universal?

    # Only the attribute selector is needed when the rule is universal.
    # http://www.w3.org/TR/CSS2/selector.html#universal-selector
    rule << att_selector

  else

    # Create an attribute selector that targets each tag.
    @tags.sort.each do |tag|
      rule << ',' unless rule.blank?
      rule << tag
      rule << att_selector
    end

  end

  rule << " { "
  rule << declaration_string
  rule << " }"

  rule
end
universal?() click to toggle source
# File lib/inkcite/renderer/responsive.rb, line 121
def universal?
  @tags.include?(UNIVERSAL)
end