@@ -8,7 +8,6 @@ var ReplaceMany = require("./ReplaceMany");
8
8
var loaderUtils = require ( "loader-utils" ) ;
9
9
var SourceListMap = require ( "source-list-map" ) . SourceListMap ;
10
10
var CleanCSS = require ( "clean-css" ) ;
11
- var getLocalIdent = require ( "./getLocalIdent" ) ;
12
11
13
12
module . exports = function ( content , map ) {
14
13
if ( this . cacheable ) this . cacheable ( ) ;
@@ -17,8 +16,6 @@ module.exports = function(content, map) {
17
16
var forceMinimize = query . minimize ;
18
17
var importLoaders = parseInt ( query . importLoaders , 10 ) || 0 ;
19
18
var minimize = typeof forceMinimize !== "undefined" ? ! ! forceMinimize : ( this && this . minimize ) ;
20
- var localIdentName = query . localIdentName || "[hash:base64]" ;
21
- var localIdentRegExp = query . localIdentRegExp ;
22
19
23
20
if ( typeof map !== "string" ) {
24
21
map = JSON . stringify ( map ) ;
@@ -65,26 +62,7 @@ module.exports = function(content, map) {
65
62
// replace :local()
66
63
var locals = { } ;
67
64
var localExtends = { } ;
68
- stuff . locals . forEach ( function ( local ) {
69
- var ident ;
70
- var name = local . name ;
71
- if ( ! locals [ name ] ) {
72
- ident = getLocalIdent ( this , localIdentName , name , {
73
- regExp : localIdentRegExp
74
- } ) ;
75
- locals [ name ] = ident ;
76
- } else {
77
- ident = locals [ name ] ;
78
- }
79
- if ( local . extends ) {
80
- local . extends . forEach ( function ( extend ) {
81
- if ( ! localExtends [ name ] )
82
- localExtends [ name ] = [ ] ;
83
- localExtends [ name ] . push ( extend ) ;
84
- } ) ;
85
- }
86
- replacer . replace ( local . start , local . length , local . prefix + ident ) ;
87
- } , this ) ;
65
+ require ( "./processLocals" ) . call ( this , stuff . locals , query , replacer , locals , localExtends ) ;
88
66
89
67
// remove stuff
90
68
stuff . remove . forEach ( function ( rem ) {
@@ -99,37 +77,9 @@ module.exports = function(content, map) {
99
77
}
100
78
101
79
// generate the locals
102
- var localKeys = Object . keys ( locals ) ;
103
- if ( localKeys . length > 0 ) {
104
- var localLines = localKeys . map ( function ( key , idx ) {
105
- var line = " " + JSON . stringify ( key ) + ": " ;
106
- function addExtend ( extend ) {
107
- if ( extend . from ) {
108
- var importUrl = importUrlPrefix + extend . from ;
109
- if ( importedUrls . indexOf ( importUrl ) < 0 ) {
110
- result . push ( "exports.i(require(" + loaderUtils . stringifyRequest ( this , importUrl ) + "), \"\");" ) ;
111
- importedUrls . push ( importUrl ) ;
112
- }
113
- line += " + \" \" + require(" + loaderUtils . stringifyRequest ( this , importUrl ) + ").locals[" + JSON . stringify ( extend . name ) + "]" ;
114
- } else if ( locals [ extend . name ] ) {
115
- line += " + \" \" + " + JSON . stringify ( locals [ extend . name ] ) ;
116
- if ( localExtends [ extend . name ] ) {
117
- localExtends [ extend . name ] . forEach ( addExtend , this ) ;
118
- }
119
- } else if ( this . emitError ) {
120
- this . emitError ( "Cannot extend from unknown class '" + extend . name + "'" ) ;
121
- }
122
- }
123
- line += JSON . stringify ( locals [ key ] ) ;
124
- if ( localExtends [ key ] ) {
125
- localExtends [ key ] . forEach ( addExtend , this ) ;
126
- }
127
- if ( idx !== localKeys . length - 1 ) line += "," ;
128
- return line ;
129
- } , this ) ;
130
- result . push ( "exports.locals = {" ) ;
131
- result . push ( localLines . join ( "\n" ) ) ;
132
- result . push ( "};" ) ;
80
+ var localsData = require ( "./generateLocals" ) . call ( this , locals , localExtends , importedUrls , importUrlPrefix , result , ".locals" ) ;
81
+ if ( localsData ) {
82
+ result . push ( "exports.locals = " + localsData + ";" ) ;
133
83
}
134
84
135
85
// transform the CSS
0 commit comments