md_inc 0.2.7 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/md_inc/md_inc_commands.rb +17 -7
- data/lib/md_inc/version.rb +1 -1
- data/lib/md_inc.rb +8 -18
- data/spec/md_inc_spec.rb +77 -0
- metadata +2 -2
@@ -1,7 +1,5 @@
|
|
1
1
|
module MdInc
|
2
2
|
module Commands
|
3
|
-
public :instance_eval
|
4
|
-
|
5
3
|
class << self
|
6
4
|
def root(path)
|
7
5
|
@root = path
|
@@ -11,13 +9,25 @@ module MdInc
|
|
11
9
|
@root ? File.join(@root, path) : path
|
12
10
|
end
|
13
11
|
|
12
|
+
def process(content)
|
13
|
+
output = process_lines(content.split("\n"))
|
14
|
+
output.flatten.join("\n")
|
15
|
+
end
|
16
|
+
|
17
|
+
def process_lines(lines)
|
18
|
+
lines.map do |line|
|
19
|
+
(line[0] == '.') ? instance_eval(line[1..-1]) : line
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
14
23
|
def x(*args)
|
15
24
|
[]
|
16
25
|
end
|
17
26
|
|
18
|
-
def inc(path)
|
27
|
+
def inc(path, recursive=true)
|
19
28
|
lines = File.readlines(full_path(path))
|
20
|
-
lines.map &:rstrip
|
29
|
+
lines.map! &:rstrip
|
30
|
+
recursive ? process_lines(lines) : lines
|
21
31
|
end
|
22
32
|
|
23
33
|
def code_inc(path, language=nil, re1=nil, re2=nil)
|
@@ -29,10 +39,10 @@ module MdInc
|
|
29
39
|
end
|
30
40
|
|
31
41
|
def code(language, lines)
|
32
|
-
|
33
|
-
["```#{language}"] + lines + ["```"]
|
34
|
-
else
|
42
|
+
if language.nil?
|
35
43
|
lines.map {|l| l.rstrip.prepend(' ')}
|
44
|
+
else
|
45
|
+
["```#{language}"] + lines + ["```"]
|
36
46
|
end
|
37
47
|
end
|
38
48
|
|
data/lib/md_inc/version.rb
CHANGED
data/lib/md_inc.rb
CHANGED
@@ -3,30 +3,20 @@ require 'md_inc/md_inc_commands'
|
|
3
3
|
|
4
4
|
module MdInc
|
5
5
|
class TextProcessor
|
6
|
-
def
|
7
|
-
|
6
|
+
def root(path)
|
7
|
+
Commands.root(path)
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
11
|
-
process(
|
10
|
+
def process(string)
|
11
|
+
Commands.process(string)
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
|
16
|
-
content.split("\n").each do |line|
|
17
|
-
if /^\./ =~ line
|
18
|
-
output << process_command(line)
|
19
|
-
else
|
20
|
-
output << line
|
21
|
-
end
|
22
|
-
end
|
23
|
-
out = output.flatten.join("\n")
|
24
|
-
out
|
14
|
+
def process_stream(stream)
|
15
|
+
Commands.process(stream.read)
|
25
16
|
end
|
26
17
|
|
27
|
-
def
|
28
|
-
|
29
|
-
Commands.instance_eval(cmd)
|
18
|
+
def process_file(path)
|
19
|
+
Commands.process(File.read(path))
|
30
20
|
end
|
31
21
|
end
|
32
22
|
end
|
data/spec/md_inc_spec.rb
CHANGED
@@ -1,6 +1,70 @@
|
|
1
1
|
require 'md_inc'
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
|
+
describe MdInc::Commands do
|
5
|
+
context '#code' do
|
6
|
+
it 'uses git style tagging if a language is supplied' do
|
7
|
+
output = MdInc::Commands.code("java", %w{foo})
|
8
|
+
output.should == [ "```java", "foo", "```"]
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'uses traditional code indenting if a language is not supplied' do
|
12
|
+
output = MdInc::Commands.code(nil, %w{foo})
|
13
|
+
output.should == [ " foo"]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context '#skip' do
|
18
|
+
let(:lines) { %w{foo skip1 skip2 bar skip3 baz skip4 skip5} }
|
19
|
+
|
20
|
+
it 'skips the lines that match the regular expression' do
|
21
|
+
output = MdInc::Commands.skip(/skip/, lines)
|
22
|
+
output.should == %w{foo bar baz}
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'doesnt skip the lines that down match the regular expression' do
|
26
|
+
output = MdInc::Commands.skip(/no match/, lines)
|
27
|
+
output.should == lines
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context '#between' do
|
32
|
+
let(:lines) { %w{aaa bbb ccc ddd eee} }
|
33
|
+
|
34
|
+
it 'returns the lines between the patterns, exclusive' do
|
35
|
+
output = MdInc::Commands.between(/aaa/, /ddd/, lines)
|
36
|
+
output.should == %w{bbb ccc}
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'will skip the whole output if first re doesnt match' do
|
40
|
+
output = MdInc::Commands.between(/no match/, /ccc/, lines)
|
41
|
+
output.should == []
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context '#normalize_indent' do
|
46
|
+
it 'does nothing to non-indented lines' do
|
47
|
+
lines = %w{aaa, bbb, ccc}
|
48
|
+
output = MdInc::Commands.normalize_indent(lines)
|
49
|
+
output.should == lines
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'does nothing to lines with at least one non-indented line' do
|
53
|
+
lines = [' aaa', 'bbb', ' ccc']
|
54
|
+
output = MdInc::Commands.normalize_indent(lines)
|
55
|
+
output.should == lines
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'unindents so that the least indented line has no indent' do
|
59
|
+
lines = [' aaa', ' bbb', ' ccc']
|
60
|
+
output = MdInc::Commands.normalize_indent(lines)
|
61
|
+
output.should == ['aaa', ' bbb', ' ccc']
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
4
68
|
describe MdInc::TextProcessor do
|
5
69
|
let(:mdi) { MdInc::TextProcessor.new }
|
6
70
|
|
@@ -28,11 +92,18 @@ describe MdInc::TextProcessor do
|
|
28
92
|
File.open("temp2",'w') do |f|
|
29
93
|
1.upto(10) {|n| f.puts "line #{n}" }
|
30
94
|
end
|
95
|
+
|
96
|
+
File.open("temp3",'w') do |f|
|
97
|
+
f.puts "temp3 line1"
|
98
|
+
f.puts ".inc 'temp1'"
|
99
|
+
f.puts "temp3 line3"
|
100
|
+
end
|
31
101
|
end
|
32
102
|
|
33
103
|
after :each do
|
34
104
|
FileUtils.rm_f("temp1")
|
35
105
|
FileUtils.rm_f("temp2")
|
106
|
+
FileUtils.rm_f("temp3")
|
36
107
|
end
|
37
108
|
|
38
109
|
it 'can pull in the contents of another file with inc' do
|
@@ -61,5 +132,11 @@ describe MdInc::TextProcessor do
|
|
61
132
|
output = mdi.process(text)
|
62
133
|
output.should == "first\nAAA\nBBB\nlast"
|
63
134
|
end
|
135
|
+
|
136
|
+
it 'can do recursive inclusion' do
|
137
|
+
text = "first\n.inc 'temp3'\nlast"
|
138
|
+
output = mdi.process(text)
|
139
|
+
output.should == "first\ntemp3 line1\naaa\nbbb\ntemp3 line3\nlast"
|
140
|
+
end
|
64
141
|
end
|
65
142
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: md_inc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-14 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: MdInc is a simple text inclusion utility (it sucks in files) intended
|
15
15
|
for use with markdown and similar utilities.
|