Skip to content

Commit 003d7cd

Browse files
committed
I think i'm barking up the wrong tree here
1 parent cf698b7 commit 003d7cd

File tree

3 files changed

+25
-15
lines changed

3 files changed

+25
-15
lines changed

src/file-system-loader.js

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import Core from './index.js'
22
import fs from 'fs'
3-
import path from 'path'
3+
import pathUtils from 'path'
4+
5+
class LoaderState {
6+
constructor() {
7+
this.loaderVars = {}
8+
this.parserVars = {}
9+
}
10+
}
411

512
export default class FileSystemLoader {
613
constructor( root ) {
@@ -9,25 +16,28 @@ export default class FileSystemLoader {
916
this.seenPaths = new Set()
1017
}
1118

12-
fetch( _newPath, relativeTo ) {
13-
let newPath = _newPath.replace( /^["']|["']$/g, "" )
19+
fetch( path, relativeTo ) {
20+
let state = new LoaderState(), vars = state.loaderVars
21+
vars.path = path.replace( /^["']|["']$/g, "" )
1422
return new Promise( ( resolve, reject ) => {
15-
let rootRelativePath = path.resolve( path.dirname( relativeTo ), newPath ),
16-
fileRelativePath = this.root + rootRelativePath
23+
vars.rootRelativePath = pathUtils.resolve( pathUtils.dirname( relativeTo ), vars.path )
24+
vars.fileRelativePath = this.root + rootRelativePath
1725

1826
fs.readFile( fileRelativePath, "utf-8", ( err, source ) => {
19-
err ? reject( err ) : resolve( { source, rootRelativePath } )
27+
vars.source = source
28+
err ? reject( err ) : resolve( state )
2029
} )
2130
} )
2231
}
2332

24-
load( {source, rootRelativePath} ) {
33+
load( state ) {
34+
let { source, rootRelativePath } = state.loaderVars
2535
console.log("LOADING " + rootRelativePath)
2636
return Core.load( source, rootRelativePath, this )
27-
.then( ( { injectableSource, exportTokens } ) => {
37+
.then( state => {
2838
console.log("LOADED " + rootRelativePath)
29-
this.sources.push( injectableSource )
30-
return exportTokens
39+
this.sources.push( state.parserVars.injectableSource )
40+
return state
3141
} )
3242
}
3343
}

src/parser.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,8 @@ export default class Parser {
5151
let file = importNode.selector.match( importRegexp )[1]
5252
console.log("FETCHING " + file)
5353
return this.pathFetcher.fetch( file, relativeTo )
54-
.then( loaderData => ({
55-
loaderData,
56-
propResolver: exports => {
54+
.then( state => {
55+
state.propResolver = exports => {
5756
console.log("RESOLVING " + file)
5857
importNode.each( decl => {
5958
if ( decl.type == 'decl' ) {
@@ -62,6 +61,7 @@ export default class Parser {
6261
} )
6362
importNode.removeSelf()
6463
}
65-
}) )
64+
return state
65+
})
6666
}
6767
}

test/test-cases.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ describe( "test-cases", () => {
1818
let loader = new FileSystemLoader( testDir )
1919
let expectedTokens = JSON.parse( fs.readFileSync( path.join( testDir, testCase, "expected.json" ), "utf-8" ) )
2020
loader.fetch( `${testCase}/source.css`, "/" )
21-
.then( fetched => loader.load( fetched ) )
21+
.then( state => loader.load( state ) )
2222
.then( tokens => {
2323
assert.equal( loader.sources.join( "" ), expected )
2424
assert.equal( JSON.stringify( tokens ), JSON.stringify( expectedTokens ) )

0 commit comments

Comments
 (0)