@@ -65,48 +65,37 @@ var CSSLint = (function(){
6565 } ;
6666
6767 /**
68- * Returns a ruleset configuration object with all current rules, modified by inline embedded rules.
68+ * Returns a ruleset object based on embedded rules.
6969 * @param {String } text A string of css containing embedded rules.
70- * @return A ruleset object.
70+ * @param {Object } ruleset A ruleset object to modify.
71+ * @return {Object } A ruleset object.
7172 * @method getEmbeddedRuleset
7273 */
73- api . getEmbeddedRuleset = function ( text ) {
74+ function applyEmbeddedRuleset ( text , ruleset ) {
7475 var valueMap ,
75- ruleset = this . getRuleset ( ) ,
7676 embedded = text && text . match ( embeddedRuleset ) ,
7777 rules = embedded && embedded [ 1 ] ;
7878
79- if ( ! rules ) {
80- return ruleset ;
79+ if ( rules ) {
80+ valueMap = {
81+ "true" : 2 , // true is error
82+ "false" : 0 , // false is ignore
83+ "2" : 2 ,
84+ "1" : 1 ,
85+ "0" : 0
86+ } ;
87+
88+ rules . toLowerCase ( ) . split ( "," ) . forEach ( function ( rule ) {
89+ var pair = rule . split ( ":" ) ,
90+ property = pair [ 0 ] || "" ,
91+ value = pair [ 1 ] || "" ;
92+
93+ ruleset [ property . trim ( ) ] = valueMap [ value . trim ( ) ] ;
94+ } ) ;
8195 }
8296
83- valueMap = {
84- 'true' : 2 , // true is error
85- 'false' : 0 , // false is ignore
86- '2' : 2 ,
87- '1' : 1 ,
88- '0' : 0
89- } ;
90-
91- rules . toLowerCase ( ) . split ( ',' ) . forEach ( function ( rule ) {
92- var pair = rule . split ( ':' ) ,
93- property = ( pair [ 0 ] || '' ) . trim ( ) , // normalize properties
94- value = valueMap [ ( pair [ 1 ] || '' ) . trim ( ) ] ; // normalize values
95-
96- if ( ! ruleset . hasOwnProperty ( property ) ) {
97- return ;
98- }
99-
100- if ( ! value ) {
101- delete ruleset [ property ] ;
102- return ;
103- }
104-
105- ruleset [ property ] = value ;
106- } ) ;
107-
10897 return ruleset ;
109- } ;
98+ }
11099
111100 //-------------------------------------------------------------------------
112101 // Formatters
@@ -190,20 +179,19 @@ var CSSLint = (function(){
190179 // normalize line endings
191180 lines = text . replace ( / \n \r ? / g, "$split$" ) . split ( '$split$' ) ;
192181
193- // always perfer file-level rulesets
194- if ( embeddedRuleset . test ( text ) ) {
195- ruleset = this . getEmbeddedRuleset ( text ) ;
196- }
197-
198182 if ( ! ruleset ) {
199183 ruleset = this . getRuleset ( ) ;
200184 }
201185
186+ if ( embeddedRuleset . test ( text ) ) {
187+ ruleset = applyEmbeddedRuleset ( text , ruleset ) ;
188+ }
189+
202190 reporter = new Reporter ( lines , ruleset ) ;
203191
204192 ruleset . errors = 2 ; //always report parsing errors as errors
205193 for ( i in ruleset ) {
206- if ( ruleset . hasOwnProperty ( i ) ) {
194+ if ( ruleset . hasOwnProperty ( i ) && ruleset [ i ] ) {
207195 if ( rules [ i ] ) {
208196 rules [ i ] . init ( parser , reporter ) ;
209197 }
0 commit comments