Skip to content

Commit

Permalink
ES6 module support
Browse files Browse the repository at this point in the history
  • Loading branch information
hughsk committed May 15, 2015
1 parent 15826fc commit bb63825
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 17 deletions.
39 changes: 24 additions & 15 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ global.Function = lFunction
const isRequire = require('is-require')('require')
const position = require('file-position')
const seval = require('static-eval')
const escodegen = require('escodegen')
const acorn = require('acorn')
const clone = require('clone')
const path = require('path')
Expand All @@ -26,7 +27,8 @@ function selected(editor) {
locations: true,
ecmaVersion: 6,
allowReturnOutsideFunction: true,
allowHashBang: true
allowHashBang: true,
sourceType: 'module'
})

var packages = []
Expand All @@ -44,27 +46,34 @@ function selected(editor) {

var dst = node.evalled = node.evalled || seval(node.arguments[0], env)
if (!dst) return
if (!included(lookup, node, ranges)) return

var included = false

for (var i = 0; i < ranges.length; i++) {
var loc = clone(node.loc)
packages.push(dst)
})

loc.start.line--
loc.end.line--
astw(ast)(function(node) {
if (node.type !== 'ImportDeclaration') return
var source = node.source
if (source.type !== 'Literal') return
if (!included(lookup, node, ranges)) return
packages.push(source.value)
})

var a = getIndex(lookup, ranges[i])
var b = getIndex(lookup, loc)
return packages
}

if (included = overlap(a, b)) break
}
function included(lookup, node, ranges) {
for (var i = 0; i < ranges.length; i++) {
var loc = clone(node.loc)

if (!included) return
loc.start.line--
loc.end.line--

packages.push(dst)
})
var a = getIndex(lookup, ranges[i])
var b = getIndex(lookup, loc)

return packages
if (overlap(a, b)) return true
}
}

function overlap(a, b) {
Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
"loophole": "^1.0.0",
"static-eval": "^0.2.4"
},
"devDependencies": {},
"devDependencies": {
"escodegen": "^1.6.1"
},
"repository": {
"type": "git",
"url": "git://github.com/hughsk/atom-selected-requires.git"
Expand Down
5 changes: 5 additions & 0 deletions spec/fixture.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,9 @@ const a = require('first')
const b = require('second')
const c = require('third')

import {d, e} from './fourth'
import * as f from './fifth'
import g from './sixth'
import { default as h } from './seventh'

console.log('hello world', _ => 'es6 needs to work ^_^')
86 changes: 85 additions & 1 deletion spec/index-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,11 @@ describe('atom-selected-packages', function() {
expect(packages[0]).toBe('first')
expect(packages[1]).toBe('second')
expect(packages[2]).toBe('third')
expect(packages.length).toBe(3)
expect(packages[3]).toBe('./fourth')
expect(packages[4]).toBe('./fifth')
expect(packages[5]).toBe('./sixth')
expect(packages[6]).toBe('./seventh')
expect(packages.length).toBe(7)
})
})

Expand Down Expand Up @@ -92,4 +96,84 @@ describe('atom-selected-packages', function() {
expect(packages.length).toBe(2)
})
})

it('can select from "import" keyword', function(done) {
return openFile(fixture, function(editor) {
editor.setSelectedBufferRanges([
[[4, 0], [4, 1]]
])

var packages = selected(editor)
var selections = editor.getSelections().map(function(selection) {
return selection.getText()
})

expect(packages[0]).toBe('./fourth')
expect(packages.length).toBe(1)
})
})

it('can select from "import" specifiers', function(done) {
return openFile(fixture, function(editor) {
editor.setSelectedBufferRanges([
[[4, 10], [4, 11]]
])

var packages = selected(editor)
var selections = editor.getSelections().map(function(selection) {
return selection.getText()
})

expect(packages[0]).toBe('./fourth')
expect(packages.length).toBe(1)
})
})

it('can select from "from" keyword', function(done) {
return openFile(fixture, function(editor) {
editor.setSelectedBufferRanges([
[[4, 16], [4, 17]]
])

var packages = selected(editor)
var selections = editor.getSelections().map(function(selection) {
return selection.getText()
})

expect(packages[0]).toBe('./fourth')
expect(packages.length).toBe(1)
})
})

it('can select from "as" keyword', function(done) {
return openFile(fixture, function(editor) {
editor.setSelectedBufferRanges([
[[5, 11], [5, 12]]
])

var packages = selected(editor)
var selections = editor.getSelections().map(function(selection) {
return selection.getText()
})

expect(packages[0]).toBe('./fifth')
expect(packages.length).toBe(1)
})
})

it('can select from "import" strings', function(done) {
return openFile(fixture, function(editor) {
editor.setSelectedBufferRanges([
[[6, 20], [6, 21]]
])

var packages = selected(editor)
var selections = editor.getSelections().map(function(selection) {
return selection.getText()
})

expect(packages[0]).toBe('./sixth')
expect(packages.length).toBe(1)
})
})
})

0 comments on commit bb63825

Please sign in to comment.