import_js 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/import-js +34 -5
- data/lib/import_js.rb +5 -4
- data/lib/import_js/command_line_editor.rb +35 -16
- data/lib/import_js/emacs_editor.rb +3 -3
- data/lib/import_js/importer.rb +1 -1
- data/lib/import_js/version.rb +4 -0
- data/lib/import_js/vim_editor.rb +4 -3
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b70c1d5fa29773c4f00513bb4826ec35b4e5cbae
|
4
|
+
data.tar.gz: 235340096abac84c1e4b8d80cd15bb29522bb928
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 029f4a067d7e9e924842aa047f4308113ee8309a01871ad797585da2dd658f3a9b4093fbc3a82df3ab64e96a2746945ed3ac968f9149c0e8e1e20a20864d51ac
|
7
|
+
data.tar.gz: 58f4f6b597977e7712a2755f5b7753144727228ddae6b92e01ade3380aa9887df2f688aed993fab7b77d11892deca84816e0f13cec03b4b3a8656f0e1e29dc83
|
data/bin/import-js
CHANGED
@@ -1,18 +1,47 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'import_js'
|
4
|
+
require 'slop'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
opts = Slop.parse do |o|
|
8
|
+
o.string '-w', '--word', 'a word/variable to import'
|
9
|
+
o.array '--selections', 'a list of resolved selections, e.g. Foo:0,Bar:1'
|
10
|
+
o.on '-v', '--version', 'print the current version' do
|
11
|
+
puts ImportJS::VERSION
|
12
|
+
exit
|
13
|
+
end
|
14
|
+
o.on '-h', '--help', 'prints help' do
|
15
|
+
puts o
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
end
|
4
19
|
|
5
|
-
word = ARGV.delete_at(0)
|
6
20
|
file_contents = STDIN.read.split("\n")
|
7
21
|
|
8
|
-
|
9
|
-
|
22
|
+
if opts[:selections]
|
23
|
+
# Convert array of string tuples to hash, `word` => `selectedIndex`
|
24
|
+
opts[:selections] = Hash[opts[:selections].map do |str|
|
25
|
+
tuple = str.split(':')
|
26
|
+
[tuple.first, tuple[1].to_i]
|
27
|
+
end]
|
28
|
+
end
|
10
29
|
|
11
|
-
editor = ImportJS::CommandLineEditor.new(
|
30
|
+
editor = ImportJS::CommandLineEditor.new(file_contents, opts)
|
12
31
|
importer = ImportJS::Importer.new(editor)
|
13
|
-
if word
|
32
|
+
if opts[:word]
|
14
33
|
importer.import
|
15
34
|
else
|
16
35
|
importer.import_all
|
17
36
|
end
|
37
|
+
|
38
|
+
# Print resulting file to stdout
|
18
39
|
puts editor.current_file_content
|
40
|
+
|
41
|
+
# Print messages to stderr
|
42
|
+
meta = {
|
43
|
+
messages: editor.messages
|
44
|
+
}
|
45
|
+
ask = editor.ask_for_selections
|
46
|
+
meta[:ask_for_selections] = ask unless ask.empty?
|
47
|
+
STDERR.puts meta.to_json
|
data/lib/import_js.rb
CHANGED
@@ -8,10 +8,11 @@ module ImportJS
|
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
-
require_relative 'import_js/
|
11
|
+
require_relative 'import_js/command_line_editor'
|
12
|
+
require_relative 'import_js/configuration'
|
13
|
+
require_relative 'import_js/emacs_editor'
|
12
14
|
require_relative 'import_js/import_statement'
|
13
15
|
require_relative 'import_js/importer'
|
16
|
+
require_relative 'import_js/js_module'
|
17
|
+
require_relative 'import_js/version'
|
14
18
|
require_relative 'import_js/vim_editor'
|
15
|
-
require_relative 'import_js/emacs_editor'
|
16
|
-
require_relative 'import_js/command_line_editor'
|
17
|
-
require_relative 'import_js/configuration'
|
@@ -1,8 +1,11 @@
|
|
1
1
|
module ImportJS
|
2
2
|
class CommandLineEditor
|
3
|
-
def initialize(
|
4
|
-
@word = word
|
3
|
+
def initialize(lines, opts)
|
5
4
|
@lines = lines
|
5
|
+
@messages = []
|
6
|
+
@ask_for_selections = []
|
7
|
+
@selections = opts[:selections] unless opts[:selections].empty?
|
8
|
+
@word = opts[:word]
|
6
9
|
end
|
7
10
|
|
8
11
|
# @return [String]
|
@@ -10,6 +13,12 @@ module ImportJS
|
|
10
13
|
@word
|
11
14
|
end
|
12
15
|
|
16
|
+
# @return [String?]
|
17
|
+
def path_to_current_file
|
18
|
+
# Not yet implemented.
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
|
13
22
|
# @param file_path [String]
|
14
23
|
def open_file(_file_path)
|
15
24
|
fail 'not supported'
|
@@ -17,7 +26,12 @@ module ImportJS
|
|
17
26
|
|
18
27
|
# @param str [String]
|
19
28
|
def message(str)
|
20
|
-
|
29
|
+
@messages << str
|
30
|
+
end
|
31
|
+
|
32
|
+
# @return [Array]
|
33
|
+
def ask_for_selections
|
34
|
+
@ask_for_selections
|
21
35
|
end
|
22
36
|
|
23
37
|
# @return [String]
|
@@ -25,6 +39,11 @@ module ImportJS
|
|
25
39
|
@lines.join("\n")
|
26
40
|
end
|
27
41
|
|
42
|
+
# @return [String]
|
43
|
+
def messages
|
44
|
+
@messages.join("\n")
|
45
|
+
end
|
46
|
+
|
28
47
|
# Reads a line from the file.
|
29
48
|
#
|
30
49
|
# Lines are one-indexed, so 1 means the first line in the file.
|
@@ -75,31 +94,31 @@ module ImportJS
|
|
75
94
|
|
76
95
|
# Ask the user to select something from a list of alternatives.
|
77
96
|
#
|
78
|
-
# @param
|
97
|
+
# @param word [String] The word/variable to import
|
79
98
|
# @param alternatives [Array<String>] A list of alternatives
|
80
99
|
# @return [Number, nil] the index of the selected alternative, or nil if
|
81
100
|
# nothing was selected.
|
82
|
-
def ask_for_selection(
|
83
|
-
|
84
|
-
|
85
|
-
|
101
|
+
def ask_for_selection(word, alternatives)
|
102
|
+
if @selections
|
103
|
+
# this is a re-run, where selections have already been made
|
104
|
+
@selections[word]
|
105
|
+
else
|
106
|
+
@ask_for_selections << {
|
107
|
+
word: word,
|
108
|
+
alternatives: alternatives
|
109
|
+
}
|
110
|
+
nil
|
86
111
|
end
|
87
|
-
print 'Select number: '
|
88
|
-
selected = gets.strip
|
89
|
-
selected_index = selected.to_i - 1
|
90
|
-
return nil if selected_index < 0
|
91
|
-
return nil if selected_index >= alternatives.length
|
92
|
-
selected_index
|
93
112
|
end
|
94
113
|
|
95
|
-
# Get the preferred max length of a line
|
114
|
+
# Get the preferred max length of a line.
|
96
115
|
# @return [Number?]
|
97
116
|
def max_line_length
|
98
117
|
80
|
99
118
|
end
|
100
119
|
|
101
120
|
# @return [String] shiftwidth number of spaces if expandtab is not set,
|
102
|
-
# otherwise `\t
|
121
|
+
# otherwise `\t`.
|
103
122
|
def tab
|
104
123
|
' '
|
105
124
|
end
|
@@ -113,13 +113,13 @@ class ImportJS::EmacsEditor
|
|
113
113
|
|
114
114
|
# Ask the user to select something from a list of alternatives.
|
115
115
|
#
|
116
|
-
# @param
|
116
|
+
# @param word [String] The word/variable to import
|
117
117
|
# @param alternatives [Array<String>] A list of alternatives
|
118
118
|
# @return [Number, nil] the index of the selected alternative, or nil if
|
119
119
|
# nothing was selected.
|
120
|
-
def ask_for_selection(
|
120
|
+
def ask_for_selection(word, alternatives)
|
121
121
|
puts "asking for selection"
|
122
|
-
puts
|
122
|
+
puts "ImportJS: Pick JS module to import for '#{word}':"
|
123
123
|
puts JSON.pretty_generate(alternatives)
|
124
124
|
return
|
125
125
|
|
data/lib/import_js/importer.rb
CHANGED
data/lib/import_js/vim_editor.rb
CHANGED
@@ -93,12 +93,13 @@ module ImportJS
|
|
93
93
|
|
94
94
|
# Ask the user to select something from a list of alternatives.
|
95
95
|
#
|
96
|
-
# @param
|
96
|
+
# @param word [String] The word/variable to import
|
97
97
|
# @param alternatives [Array<String>] A list of alternatives
|
98
98
|
# @return [Number, nil] the index of the selected alternative, or nil if
|
99
99
|
# nothing was selected.
|
100
|
-
def ask_for_selection(
|
101
|
-
escaped_list =
|
100
|
+
def ask_for_selection(word, alternatives)
|
101
|
+
escaped_list =
|
102
|
+
["\"ImportJS: Pick JS module to import for '#{word}':\""]
|
102
103
|
escaped_list << alternatives.each_with_index.map do |alternative, i|
|
103
104
|
"\"#{i + 1}: #{alternative}\""
|
104
105
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: import_js
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henric Trotzig
|
@@ -9,7 +9,27 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2015-11-15 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: slop
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.2'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 4.2.1
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '4.2'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 4.2.1
|
13
33
|
description: A tool to simplify importing javascript modules
|
14
34
|
email: henric.trotzig@gmail.com
|
15
35
|
executables:
|
@@ -25,6 +45,7 @@ files:
|
|
25
45
|
- lib/import_js/import_statement.rb
|
26
46
|
- lib/import_js/importer.rb
|
27
47
|
- lib/import_js/js_module.rb
|
48
|
+
- lib/import_js/version.rb
|
28
49
|
- lib/import_js/vim_editor.rb
|
29
50
|
homepage: http://rubygems.org/gems/import_js
|
30
51
|
licenses:
|