Sha256: 100b4c7516cdcb65bab6f925e2ecfd9e611ca0d2eb0c7d9c4d082984b5b5f27a

Contents?: true

Size: 1.46 KB

Versions: 10

Compression:

Stored size: 1.46 KB

Contents

module Csscss
  module Parser
    module Color
      include Parslet
      include Common

      rule(:color) { (hexcolor | rgb | color_keyword).as(:color) }
      rule(:rgb) { (rgb_with(numbers) | rgb_with(percent)).as(:rgb) }
      rule(:hexcolor) { (str("#") >> match["a-fA-F0-9"].repeat(1)).as(:hexcolor) >> space? }
      rule(:color_keyword) {
        colors = %w(inherit black silver gray white maroon
        red purple fuchsia green lime olive
        yellow navy blue teal aqua)
        colors.map {|c| symbol(c) }.reduce(:|).as(:keyword)
      }

      private
        def rgb_with(parser)
          symbol("rgb") >> parens do
            parser >> space? >>
            symbol(",") >>
            parser >> space? >>
            symbol(",") >>
            parser >> space?
          end
        end

      module Transformer
        def self.extended(base)
          base.instance_eval do
            extend ClassMethods

            rule(color:{rgb:simple(:value)}) {|c| transform_color(c)}
            rule(color:{keyword:simple(:value)}) {|c| transform_color(c)}
            rule(color:{hexcolor:simple(:value)}) {|c| transform_color(c)}
          end
        end

        module ClassMethods
          def transform_color(context)
            Declaration.from_parser(@property.to_s.gsub("_", "-"), context[:value])
          end
        end
      end

      module PlainColorValue
        def transform_color(context)
          context[:value]
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
csscss-1.3.3 lib/csscss/parser/color.rb
csscss-1.3.2 lib/csscss/parser/color.rb
csscss-1.3.1 lib/csscss/parser/color.rb
csscss-1.3.0 lib/csscss/parser/color.rb
csscss-1.2.0 lib/csscss/parser/color.rb
csscss-1.1.0 lib/csscss/parser/color.rb
csscss-1.0.0 lib/csscss/parser/color.rb
csscss-0.2.1 lib/csscss/parser/color.rb
csscss-0.2.0 lib/csscss/parser/color.rb
csscss-0.1.0 lib/csscss/parser/color.rb