mdspell 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/mdspell.svg)](http://badge.fury.io/rb/mdspell)
|
3
4
|
[![Build Status](https://travis-ci.org/mtuchowski/mdspell.svg)](
|
4
5
|
https://travis-ci.org/mtuchowski/mdspell)
|
5
6
|
[![Code Climate](https://codeclimate.com/github/mtuchowski/mdspell/badges/gpa.svg)](
|
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
|