File tree Expand file tree Collapse file tree 3 files changed +72
-0
lines changed
Expand file tree Collapse file tree 3 files changed +72
-0
lines changed Original file line number Diff line number Diff line change 2323require "csscss/parser/padding"
2424require "csscss/parser/border_width"
2525require "csscss/parser/border_color"
26+ require "csscss/parser/border_style"
2627
Original file line number Diff line number Diff line change 1+ module Csscss
2+ module Parser
3+ module BorderStyle
4+ extend Parser ::Base
5+
6+ class Parser < Parslet ::Parser
7+ include Common
8+
9+ rule ( :border_style_side ) {
10+ symbol_list ( %w( none hidden dotted dashed solid
11+ double groove ridge inset outset
12+ ) )
13+ }
14+
15+ rule ( :border_style ) {
16+ (
17+ symbol ( "inherit" ) >> eof | (
18+ border_style_side . maybe . as ( :top ) >>
19+ border_style_side . maybe . as ( :right ) >>
20+ border_style_side . maybe . as ( :bottom ) >>
21+ border_style_side . maybe . as ( :left )
22+ )
23+ ) . as ( :border_style )
24+ }
25+
26+ root ( :border_style )
27+ end
28+
29+ class Transformer < Parslet ::Transform
30+ @property = :border_style
31+ extend MultiSideTransformer
32+
33+ class << self
34+ def side_declaration ( side , value )
35+ Declaration . from_parser ( "border-#{ side } -style" , value )
36+ end
37+ end
38+ end
39+ end
40+ end
41+ end
Original file line number Diff line number Diff line change 1+ require "test_helper"
2+
3+ module Csscss ::Parser
4+ module BorderStyle
5+ describe BorderStyle do
6+ include CommonParserTests
7+
8+ before do
9+ @parser = Parser . new
10+ @trans = Transformer . new
11+ end
12+
13+ it "converts shorthand rules to longhand" do
14+ trans ( "none dashed solid ridge" ) . must_equal ( [
15+ dec ( "border-top-style" , "none" ) ,
16+ dec ( "border-right-style" , "dashed" ) ,
17+ dec ( "border-bottom-style" , "solid" ) ,
18+ dec ( "border-left-style" , "ridge" )
19+ ] )
20+
21+ trans ( "none dashed" ) . must_equal ( [
22+ dec ( "border-top-style" , "none" ) ,
23+ dec ( "border-right-style" , "dashed" ) ,
24+ dec ( "border-bottom-style" , "none" ) ,
25+ dec ( "border-left-style" , "dashed" )
26+ ] )
27+ end
28+ end
29+ end
30+ end
You can’t perform that action at this time.
0 commit comments