mdspell 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/mdspell.rb +6 -4
- data/lib/mdspell/cli.rb +11 -8
- data/lib/mdspell/configuration.rb +7 -0
- data/lib/mdspell/spell_checker.rb +9 -2
- data/lib/mdspell/version.rb +4 -1
- data/spec/examples.cache +50 -31
- data/spec/examples/mdspell.config +1 -0
- data/spec/mdspell/cli_spec.rb +50 -0
- data/spec/mdspell/configuration_spec.rb +98 -0
- data/spec/mdspell/spell_checker_spec.rb +1 -1
- metadata +7 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 167c31fb49e320ecb9a67cae141e171b806446ea
|
4
|
+
data.tar.gz: 209aa4bc10977836b2ab9458510fb798a3621d2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd3666dcba329f752f9ce3f5c87ace2cbbbaea87a6613a124fae877823a2558302e905fa8f786eed2f9581e0de6256c18154b94103e1f6ab5da557dfe551b551
|
7
|
+
data.tar.gz: 7e5b5582be2cc45272e47586693ce108488e6d2b0bd66c8728cc27a254b75488a7a5310254138df3b04f4f81a909acf9c3e0a971d8d70de3a925897714b886bd
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# MdSpell
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/mdspell)
|
3
4
|
[](
|
4
5
|
https://travis-ci.org/mtuchowski/mdspell)
|
5
6
|
[](
|
data/lib/mdspell.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
+
require_relative 'mdspell/version'
|
1
2
|
require_relative 'mdspell/cli'
|
2
3
|
require_relative 'mdspell/configuration'
|
3
4
|
require_relative 'mdspell/spell_checker'
|
4
5
|
require_relative 'mdspell/text_line'
|
5
6
|
require_relative 'mdspell/typo'
|
6
|
-
require_relative 'mdspell/version'
|
7
7
|
|
8
8
|
require 'rainbow'
|
9
9
|
|
@@ -15,10 +15,12 @@ module MdSpell
|
|
15
15
|
|
16
16
|
# Spell-check each file.
|
17
17
|
cli.files.each do |filename|
|
18
|
-
|
18
|
+
spell_checker = SpellChecker.new(filename)
|
19
|
+
|
20
|
+
verbose "Spell-checking #{spell_checker.filename}..."
|
19
21
|
|
20
|
-
|
21
|
-
error "#{filename}:#{typo.line.location}: #{typo.word}"
|
22
|
+
spell_checker.typos.each do |typo|
|
23
|
+
error "#{spell_checker.filename}:#{typo.line.location}: #{typo.word}"
|
22
24
|
end
|
23
25
|
end
|
24
26
|
end
|
data/lib/mdspell/cli.rb
CHANGED
@@ -8,16 +8,14 @@ module MdSpell
|
|
8
8
|
banner "Usage: #{File.basename($PROGRAM_NAME)} [options] [FILE.md|DIR ...]"
|
9
9
|
|
10
10
|
option :config_file,
|
11
|
-
short: '-c',
|
11
|
+
short: '-c FILE',
|
12
12
|
long: '--config FILE',
|
13
|
-
description: 'The configuration file to use'
|
14
|
-
default: '~/.mdspell'
|
13
|
+
description: 'The configuration file to use'
|
15
14
|
|
16
15
|
option :language,
|
17
|
-
short: '-l',
|
16
|
+
short: '-l LANG',
|
18
17
|
long: '--language LANG',
|
19
|
-
description: 'Set documents language'
|
20
|
-
default: 'en_US'
|
18
|
+
description: 'Set documents language'
|
21
19
|
|
22
20
|
option :verbose,
|
23
21
|
short: '-v',
|
@@ -35,11 +33,15 @@ module MdSpell
|
|
35
33
|
exit: 0
|
36
34
|
|
37
35
|
def run(argv = ARGV)
|
36
|
+
fail ArgumentError, 'expected Array of command line options' unless argv.is_a? Array
|
37
|
+
|
38
38
|
parse_options(argv)
|
39
39
|
|
40
40
|
# Load optional config file if it's present.
|
41
|
-
|
42
|
-
|
41
|
+
if config[:config_file]
|
42
|
+
config_filename = File.expand_path(config[:config_file])
|
43
|
+
MdSpell::Configuration.from_file(config_filename) if File.exist?(config_filename)
|
44
|
+
end
|
43
45
|
|
44
46
|
# Store command line configuration options.
|
45
47
|
MdSpell::Configuration.merge!(config)
|
@@ -53,6 +55,7 @@ module MdSpell
|
|
53
55
|
end
|
54
56
|
end
|
55
57
|
cli_arguments.flatten!
|
58
|
+
cli_arguments
|
56
59
|
end
|
57
60
|
end
|
58
61
|
end
|
@@ -4,5 +4,12 @@ module MdSpell
|
|
4
4
|
# Stores configuration from both command line and config file.
|
5
5
|
class Configuration
|
6
6
|
extend Mixlib::Config
|
7
|
+
|
8
|
+
config_strict_mode true
|
9
|
+
|
10
|
+
default :config_file, '~/.mdspell'
|
11
|
+
default :language, 'en_US'
|
12
|
+
default :verbose, false
|
13
|
+
default :version, VERSION
|
7
14
|
end
|
8
15
|
end
|
@@ -15,8 +15,15 @@ module MdSpell
|
|
15
15
|
# Create a new instance from specified file.
|
16
16
|
# @param filename [String] a name of file to load.
|
17
17
|
def initialize(filename)
|
18
|
-
|
19
|
-
|
18
|
+
if filename == '-'
|
19
|
+
@filename = 'stdin'
|
20
|
+
text = STDIN.read
|
21
|
+
else
|
22
|
+
@filename = filename
|
23
|
+
text = File.read(filename)
|
24
|
+
end
|
25
|
+
|
26
|
+
@document = Kramdown::Document.new(text, input: 'GFM')
|
20
27
|
end
|
21
28
|
|
22
29
|
# Returns found spelling errors.
|
data/lib/mdspell/version.rb
CHANGED
data/spec/examples.cache
CHANGED
@@ -1,39 +1,58 @@
|
|
1
1
|
example_id | status | run_time |
|
2
2
|
--------------------------------------------- | ------- | --------------- |
|
3
|
-
./spec/mdspell/
|
4
|
-
./spec/mdspell/
|
5
|
-
./spec/mdspell/
|
3
|
+
./spec/mdspell/cli_spec.rb[1:1] | passed | 0.0001 seconds |
|
4
|
+
./spec/mdspell/cli_spec.rb[1:2] | passed | 0.00012 seconds |
|
5
|
+
./spec/mdspell/cli_spec.rb[1:3:1] | passed | 0.00016 seconds |
|
6
|
+
./spec/mdspell/cli_spec.rb[1:4:1:1] | passed | 0.00041 seconds |
|
7
|
+
./spec/mdspell/cli_spec.rb[1:4:2:1] | passed | 0.00054 seconds |
|
8
|
+
./spec/mdspell/cli_spec.rb[1:4:3:1] | passed | 0.00111 seconds |
|
9
|
+
./spec/mdspell/configuration_spec.rb[1:1:1] | passed | 0.00033 seconds |
|
10
|
+
./spec/mdspell/configuration_spec.rb[1:1:2:1] | passed | 0.00038 seconds |
|
11
|
+
./spec/mdspell/configuration_spec.rb[1:1:2:2] | passed | 0.00034 seconds |
|
12
|
+
./spec/mdspell/configuration_spec.rb[1:1:3:1] | passed | 0.00055 seconds |
|
13
|
+
./spec/mdspell/configuration_spec.rb[1:2:1] | passed | 0.00034 seconds |
|
14
|
+
./spec/mdspell/configuration_spec.rb[1:2:2:1] | passed | 0.00035 seconds |
|
15
|
+
./spec/mdspell/configuration_spec.rb[1:2:2:2] | passed | 0.00038 seconds |
|
16
|
+
./spec/mdspell/configuration_spec.rb[1:3:1] | passed | 0.00071 seconds |
|
17
|
+
./spec/mdspell/configuration_spec.rb[1:3:2:1] | passed | 0.00037 seconds |
|
18
|
+
./spec/mdspell/configuration_spec.rb[1:3:2:2] | passed | 0.00035 seconds |
|
19
|
+
./spec/mdspell/configuration_spec.rb[1:4:1] | passed | 0.00033 seconds |
|
20
|
+
./spec/mdspell/configuration_spec.rb[1:4:2:1] | passed | 0.00043 seconds |
|
21
|
+
./spec/mdspell/configuration_spec.rb[1:4:2:2] | passed | 0.00044 seconds |
|
22
|
+
./spec/mdspell/spell_checker_spec.rb[1:1:1] | passed | 0.00059 seconds |
|
23
|
+
./spec/mdspell/spell_checker_spec.rb[1:1:2] | passed | 0.0006 seconds |
|
24
|
+
./spec/mdspell/spell_checker_spec.rb[1:1:3] | passed | 0.00066 seconds |
|
6
25
|
./spec/mdspell/spell_checker_spec.rb[1:2:1] | passed | 0.00014 seconds |
|
7
|
-
./spec/mdspell/spell_checker_spec.rb[1:2:2] | passed | 0.
|
8
|
-
./spec/mdspell/spell_checker_spec.rb[1:2:3] |
|
9
|
-
./spec/mdspell/spell_checker_spec.rb[1:3:1] | passed | 0.
|
10
|
-
./spec/mdspell/spell_checker_spec.rb[1:3:2:1] |
|
11
|
-
./spec/mdspell/spell_checker_spec.rb[1:4:1] | passed | 0.
|
12
|
-
./spec/mdspell/spell_checker_spec.rb[1:5:1] |
|
13
|
-
./spec/mdspell/spell_checker_spec.rb[1:5:2] | passed | 0.
|
26
|
+
./spec/mdspell/spell_checker_spec.rb[1:2:2] | passed | 0.00035 seconds |
|
27
|
+
./spec/mdspell/spell_checker_spec.rb[1:2:3] | passed | 0.0005 seconds |
|
28
|
+
./spec/mdspell/spell_checker_spec.rb[1:3:1] | passed | 0.00116 seconds |
|
29
|
+
./spec/mdspell/spell_checker_spec.rb[1:3:2:1] | passed | 0.00074 seconds |
|
30
|
+
./spec/mdspell/spell_checker_spec.rb[1:4:1] | passed | 0.03383 seconds |
|
31
|
+
./spec/mdspell/spell_checker_spec.rb[1:5:1] | passed | 0.01874 seconds |
|
32
|
+
./spec/mdspell/spell_checker_spec.rb[1:5:2] | passed | 0.00913 seconds |
|
14
33
|
./spec/mdspell/spell_checker_spec.rb[1:5:3] | pending | 0.00001 seconds |
|
15
|
-
./spec/mdspell/text_line_spec.rb[1:1:1] | passed | 0.
|
16
|
-
./spec/mdspell/text_line_spec.rb[1:1:2] | passed | 0.
|
17
|
-
./spec/mdspell/text_line_spec.rb[1:1:3] | passed | 0.
|
18
|
-
./spec/mdspell/text_line_spec.rb[1:1:4] | passed | 0.
|
19
|
-
./spec/mdspell/text_line_spec.rb[1:2:1] | passed | 0.
|
20
|
-
./spec/mdspell/text_line_spec.rb[1:3:1] | passed | 0.
|
21
|
-
./spec/mdspell/text_line_spec.rb[1:4:1] | passed | 0.
|
22
|
-
./spec/mdspell/text_line_spec.rb[1:5:1] | passed | 0.
|
23
|
-
./spec/mdspell/text_line_spec.rb[1:6:1] | passed | 0.
|
24
|
-
./spec/mdspell/text_line_spec.rb[1:6:2:1] | passed | 0.
|
34
|
+
./spec/mdspell/text_line_spec.rb[1:1:1] | passed | 0.00008 seconds |
|
35
|
+
./spec/mdspell/text_line_spec.rb[1:1:2] | passed | 0.00009 seconds |
|
36
|
+
./spec/mdspell/text_line_spec.rb[1:1:3] | passed | 0.00007 seconds |
|
37
|
+
./spec/mdspell/text_line_spec.rb[1:1:4] | passed | 0.00007 seconds |
|
38
|
+
./spec/mdspell/text_line_spec.rb[1:2:1] | passed | 0.00013 seconds |
|
39
|
+
./spec/mdspell/text_line_spec.rb[1:3:1] | passed | 0.00007 seconds |
|
40
|
+
./spec/mdspell/text_line_spec.rb[1:4:1] | passed | 0.00007 seconds |
|
41
|
+
./spec/mdspell/text_line_spec.rb[1:5:1] | passed | 0.0004 seconds |
|
42
|
+
./spec/mdspell/text_line_spec.rb[1:6:1] | passed | 0.00015 seconds |
|
43
|
+
./spec/mdspell/text_line_spec.rb[1:6:2:1] | passed | 0.00039 seconds |
|
25
44
|
./spec/mdspell/text_line_spec.rb[1:6:3:1] | passed | 0.00011 seconds |
|
26
45
|
./spec/mdspell/text_line_spec.rb[1:6:3:2] | passed | 0.0001 seconds |
|
27
|
-
./spec/mdspell/text_line_spec.rb[1:6:4:1] | passed | 0.
|
28
|
-
./spec/mdspell/text_line_spec.rb[1:7:1] | passed | 0.
|
29
|
-
./spec/mdspell/text_line_spec.rb[1:7:2] | passed | 0.
|
30
|
-
./spec/mdspell/typo_spec.rb[1:1:1] | passed | 0.
|
31
|
-
./spec/mdspell/typo_spec.rb[1:1:2] | passed | 0.
|
46
|
+
./spec/mdspell/text_line_spec.rb[1:6:4:1] | passed | 0.00043 seconds |
|
47
|
+
./spec/mdspell/text_line_spec.rb[1:7:1] | passed | 0.00011 seconds |
|
48
|
+
./spec/mdspell/text_line_spec.rb[1:7:2] | passed | 0.00094 seconds |
|
49
|
+
./spec/mdspell/typo_spec.rb[1:1:1] | passed | 0.00052 seconds |
|
50
|
+
./spec/mdspell/typo_spec.rb[1:1:2] | passed | 0.00009 seconds |
|
32
51
|
./spec/mdspell/typo_spec.rb[1:1:3] | passed | 0.00008 seconds |
|
33
|
-
./spec/mdspell/typo_spec.rb[1:2:1] | passed | 0.
|
34
|
-
./spec/mdspell/typo_spec.rb[1:2:2] | passed | 0.
|
52
|
+
./spec/mdspell/typo_spec.rb[1:2:1] | passed | 0.00097 seconds |
|
53
|
+
./spec/mdspell/typo_spec.rb[1:2:2] | passed | 0.00013 seconds |
|
35
54
|
./spec/mdspell/typo_spec.rb[1:2:3] | passed | 0.00014 seconds |
|
36
|
-
./spec/mdspell/typo_spec.rb[1:3:1] | passed | 0.
|
37
|
-
./spec/mdspell/typo_spec.rb[1:4:1] | passed | 0.
|
38
|
-
./spec/mdspell/typo_spec.rb[1:5:1] | passed | 0.
|
39
|
-
./spec/mdspell/typo_spec.rb[1:5:2] | passed | 0.
|
55
|
+
./spec/mdspell/typo_spec.rb[1:3:1] | passed | 0.00042 seconds |
|
56
|
+
./spec/mdspell/typo_spec.rb[1:4:1] | passed | 0.00016 seconds |
|
57
|
+
./spec/mdspell/typo_spec.rb[1:5:1] | passed | 0.00028 seconds |
|
58
|
+
./spec/mdspell/typo_spec.rb[1:5:2] | passed | 0.00034 seconds |
|
@@ -0,0 +1 @@
|
|
1
|
+
language 'pl'
|
@@ -0,0 +1,50 @@
|
|
1
|
+
describe MdSpell::CLI do
|
2
|
+
it { is_expected.to respond_to :run }
|
3
|
+
it { is_expected.to respond_to :files }
|
4
|
+
|
5
|
+
after(:all) do
|
6
|
+
MdSpell::Configuration.reset
|
7
|
+
end
|
8
|
+
|
9
|
+
context '#run' do
|
10
|
+
it 'should expect command line options array' do
|
11
|
+
[nil, 'string', 42].each do |argument|
|
12
|
+
expect do
|
13
|
+
subject.run(argument)
|
14
|
+
end.to raise_error ArgumentError, 'expected Array of command line options'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context '#files' do
|
20
|
+
context 'if single file given' do
|
21
|
+
it 'should return its path' do
|
22
|
+
subject.run(['README.md'])
|
23
|
+
expect(subject.files).to have(1).item
|
24
|
+
|
25
|
+
expect(subject.files[0]).to eq 'README.md'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'if directory given' do
|
30
|
+
it 'should return all markdown files in that directory' do
|
31
|
+
subject.run(['spec/examples'])
|
32
|
+
expect(subject.files).to have(2).item
|
33
|
+
|
34
|
+
expect(subject.files).to include('spec/examples/with_errors.md')
|
35
|
+
expect(subject.files).to include('spec/examples/simple.md')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'if both directory and single file given' do
|
40
|
+
it 'should return all files' do
|
41
|
+
subject.run(['README.md', 'spec/examples'])
|
42
|
+
expect(subject.files).to have(3).item
|
43
|
+
|
44
|
+
expect(subject.files).to include('spec/examples/with_errors.md')
|
45
|
+
expect(subject.files).to include('spec/examples/simple.md')
|
46
|
+
expect(subject.files).to include('README.md')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
describe MdSpell::Configuration do
|
2
|
+
before(:each) do
|
3
|
+
MdSpell::Configuration.reset
|
4
|
+
end
|
5
|
+
|
6
|
+
after(:all) do
|
7
|
+
MdSpell::Configuration.reset
|
8
|
+
end
|
9
|
+
|
10
|
+
def run_app(args = [])
|
11
|
+
MdSpell::CLI.new.run(args)
|
12
|
+
end
|
13
|
+
|
14
|
+
context ':config_file' do
|
15
|
+
it "should default to '~/.mdspell'" do
|
16
|
+
run_app
|
17
|
+
expect(MdSpell::Configuration[:config_file]).to eq '~/.mdspell'
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'command line argument' do
|
21
|
+
it "uses '-c' short flag" do
|
22
|
+
run_app(['-c', 'short'])
|
23
|
+
expect(MdSpell::Configuration[:config_file]).to eq 'short'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "uses '--config' long flag" do
|
27
|
+
run_app(['--config', 'long'])
|
28
|
+
expect(MdSpell::Configuration[:config_file]).to eq 'long'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'if file exists' do
|
33
|
+
it 'should merge its content' do
|
34
|
+
run_app(['-c', 'spec/examples/mdspell.config'])
|
35
|
+
expect(MdSpell::Configuration[:language]).to eq 'pl'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context ':language' do
|
41
|
+
it "should default to 'en_US'" do
|
42
|
+
run_app
|
43
|
+
expect(MdSpell::Configuration[:language]).to eq 'en_US'
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'command line argument' do
|
47
|
+
it "uses '-l' short flag" do
|
48
|
+
run_app(['-l', 'en_GB'])
|
49
|
+
expect(MdSpell::Configuration[:language]).to eq 'en_GB'
|
50
|
+
end
|
51
|
+
|
52
|
+
it "uses '--language' long flag" do
|
53
|
+
run_app(['--language', 'uk'])
|
54
|
+
expect(MdSpell::Configuration[:language]).to eq 'uk'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context ':verbose' do
|
60
|
+
it 'should default to false' do
|
61
|
+
run_app
|
62
|
+
expect(MdSpell::Configuration[:verbose]).to eq false
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'command line argument' do
|
66
|
+
it "uses '-v' short flag" do
|
67
|
+
run_app(['-v'])
|
68
|
+
expect(MdSpell::Configuration[:verbose]).to eq true
|
69
|
+
end
|
70
|
+
|
71
|
+
it "uses '--verbose' long flag" do
|
72
|
+
run_app(['--verbose'])
|
73
|
+
expect(MdSpell::Configuration[:verbose]).to eq true
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context ':version' do
|
79
|
+
it 'should return proper string' do
|
80
|
+
run_app
|
81
|
+
expect(MdSpell::Configuration[:version]).to eq MdSpell::VERSION
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'command line argument' do
|
85
|
+
it "uses '-V' short flag" do
|
86
|
+
expect do
|
87
|
+
run_app(['-V'])
|
88
|
+
end.to raise_error SystemExit
|
89
|
+
end
|
90
|
+
|
91
|
+
it "uses '--version' long flag" do
|
92
|
+
expect do
|
93
|
+
run_app(['--version'])
|
94
|
+
end.to raise_error SystemExit
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mdspell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marek Tuchowski
|
@@ -57,8 +57,11 @@ files:
|
|
57
57
|
- lib/mdspell/typo.rb
|
58
58
|
- lib/mdspell/version.rb
|
59
59
|
- spec/examples.cache
|
60
|
+
- spec/examples/mdspell.config
|
60
61
|
- spec/examples/simple.md
|
61
62
|
- spec/examples/with_errors.md
|
63
|
+
- spec/mdspell/cli_spec.rb
|
64
|
+
- spec/mdspell/configuration_spec.rb
|
62
65
|
- spec/mdspell/spell_checker_spec.rb
|
63
66
|
- spec/mdspell/text_line_spec.rb
|
64
67
|
- spec/mdspell/typo_spec.rb
|
@@ -92,7 +95,10 @@ summary: A Ruby markdown spell checking tool.
|
|
92
95
|
test_files:
|
93
96
|
- spec/spec_helper.rb
|
94
97
|
- spec/examples/with_errors.md
|
98
|
+
- spec/examples/mdspell.config
|
95
99
|
- spec/examples/simple.md
|
100
|
+
- spec/mdspell/configuration_spec.rb
|
101
|
+
- spec/mdspell/cli_spec.rb
|
96
102
|
- spec/mdspell/text_line_spec.rb
|
97
103
|
- spec/mdspell/typo_spec.rb
|
98
104
|
- spec/mdspell/spell_checker_spec.rb
|