Sha256: 8add82ce4489dd3d2aff12a7b1e443e6b9eb18183db18cb1af07bcbbddef024e

Contents?: true

Size: 1.31 KB

Versions: 10

Compression:

Stored size: 1.31 KB

Contents

module Csscss
  module Parser
    module Outline
      extend Parser::Base

      class Parser < Parslet::Parser
        include Color

        rule(:outline_width) { BorderWidth::Parser.new.border_width_side }
        rule(:outline_style) { BorderStyle::Parser.new.border_style_side }
        rule(:outline_color) { BorderColor::Parser.new.border_color_side }

        rule(:outline) {
          (
           symbol("inherit") >> eof | (
             outline_width.maybe.as(:outline_width) >>
             outline_style.maybe.as(:outline_style) >>
             outline_color.maybe.as(:outline_color)
           )
          ).as(:outline)
        }
        root(:outline)
      end

      class Transformer < Parslet::Transform
        extend Color::Transformer
        extend Color::PlainColorValue

        rule(outline: simple(:inherit)) {[]}

        rule(outline: {
          outline_width:simple(:width),
          outline_style:simple(:style),
          outline_color:simple(:color)
        }) {
          [].tap do |declarations|
            declarations << Declaration.from_parser("outline-width", width) if width
            declarations << Declaration.from_parser("outline-style", style) if style
            declarations << Declaration.from_parser("outline-color", color) if color
          end
        }
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

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