legal_markdown 0.4.2 → 0.4.3
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.
- data/Rakefile +50 -0
- data/lib/legal_markdown.rb +4 -3
- data/lib/legal_markdown/legal_to_markdown.rb +7 -6
- data/lib/legal_markdown/legal_to_markdown/mixins.rb +48 -40
- data/lib/legal_markdown/make_yaml_frontmatter.rb +66 -69
- data/lib/legal_markdown/roman_numerals.rb +1 -9
- data/lib/legal_markdown/version.rb +1 -1
- data/libpeerconnection.log +0 -0
- data/test/test_legal_markdown_to_markdown.rb +19 -17
- data/test/tests/00.load_write_no_action.headers +5 -0
- data/test/tests/01.load_partial_no_action.headers +22 -0
- data/test/tests/02.load_partials_no_action.headers +24 -0
- data/test/tests/10.mixins_in_headers_and_text.headers +21 -0
- data/test/tests/12.opt_clauses_no_subs.headers +19 -0
- data/test/tests/13.opt_clauses_subs.headers +27 -0
- data/test/tests/14.opt_clauses_with_mixins.headers +24 -0
- data/test/tests/20.block_no_addons.headers +37 -0
- data/test/tests/21.block_no_indents.headers +37 -0
- data/test/tests/22.block_all_indents.headers +37 -0
- data/test/tests/23.block_part_indents.headers +37 -0
- data/test/tests/24.block_no_closing_ticks.headers +36 -0
- data/test/tests/25.block_no_resets.headers +37 -0
- data/test/tests/26.block_all_resets.headers +37 -0
- data/test/tests/27.block_part_resets.headers +44 -0
- data/test/tests/28.block_provs_multi_line_no_indent.headers +46 -0
- data/test/tests/29.block_provs_multi_line_indents.headers +46 -0
- data/test/tests/30.block_all_leader_types.headers +49 -0
- data/test/tests/31.block_complex_leader_types.headers +49 -0
- data/test/tests/32.block_new_leader_style.headers +49 -0
- data/test/tests/33.block_with_pre_simple.headers +37 -0
- data/test/tests/34.block_with_pre_complex.headers +37 -0
- data/test/tests/35.block_with_preval.headers +37 -0
- data/test/tests/36.block_with_crossrefs.headers +37 -0
- data/test/tests/37.block_with_diff_start_pt.headers +37 -0
- data/test/tests/40.block_with_mixins.headers +49 -0
- data/test/tests/41.block_with_opt_clauses.headers +52 -0
- data/test/tests/42.block_with_opt_clauses_and_mixins.headers +58 -0
- data/test/tests/45.all_features_speed_ratchet.headers +209 -0
- data/test/tests/45.all_features_speed_ratchet.json +1 -0
- data/test/tests/45.all_features_speed_ratchet.lmd +207 -0
- data/test/tests/45.all_features_speed_ratchet.md +164 -0
- metadata +69 -4
data/Rakefile
CHANGED
|
@@ -7,4 +7,54 @@ Rake::TestTask.new do |t|
|
|
|
7
7
|
t.verbose = true
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
+
desc "Push the Gem & Update Sublime Package"
|
|
11
|
+
task :publish do
|
|
12
|
+
system "git push github master"
|
|
13
|
+
system "git push wsl master"
|
|
14
|
+
Dir.chdir(File.dirname(__FILE__))
|
|
15
|
+
pkg = ENV['HOME'] + "/.config/sublime-text-2/Packages/Legal Document Creator"
|
|
16
|
+
FileUtils.cp_r( File.dirname(__FILE__) + "/lib" , pkg )
|
|
17
|
+
Dir.chdir(pkg)
|
|
18
|
+
f = "lib/legal_markdown.rb"
|
|
19
|
+
c = File::read(f) + "\n\nLegalMarkdown::parse(ARGV)"
|
|
20
|
+
File.open(f, "w") { |f| f.write( c ); f.close }
|
|
21
|
+
message = "Package updated at #{Time.now.utc} to reflect changes in Gem."
|
|
22
|
+
system "git add -A"
|
|
23
|
+
system "git commit -m #{message.shellescape}"
|
|
24
|
+
system "git push github master"
|
|
25
|
+
system "git push wsl master"
|
|
26
|
+
Dir.chdir(File.dirname(__FILE__))
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# call with rake site:publish
|
|
30
|
+
desc "Publish New Version of Gem"
|
|
31
|
+
task :pushit do
|
|
32
|
+
fail "Does not look like the Version file is updated!" unless `git status -s`.split("\n").include?(" M lib/legal_markdown/version.rb")
|
|
33
|
+
require Dir.pwd + "/lib/legal_markdown/version.rb"
|
|
34
|
+
tag = LegalMarkdown::VERSION
|
|
35
|
+
system "git checkout master"
|
|
36
|
+
system "git add -A"
|
|
37
|
+
system "git commit -m 'Version Bump of Gem to version #{tag}'"
|
|
38
|
+
system "git tag -a v" + tag
|
|
39
|
+
system "git push github master --tags"
|
|
40
|
+
system "git push wsl master --tags"
|
|
41
|
+
system "rake install"
|
|
42
|
+
system "gem push pkg/legal_markdown-#{tag}.gem"
|
|
43
|
+
Dir.chdir(File.dirname(__FILE__))
|
|
44
|
+
pkg = ENV['HOME'] + "/.config/sublime-text-2/Packages/Legal Document Creator"
|
|
45
|
+
FileUtils.cp_r( File.dirname(__FILE__) + "/lib" , pkg )
|
|
46
|
+
Dir.chdir(pkg)
|
|
47
|
+
f = "lib/legal_markdown.rb"
|
|
48
|
+
c = File::read(f) + "\n\nLegalMarkdown::parse(ARGV)"
|
|
49
|
+
File.open(f, "w") { |f| f.write( c ); f.close }
|
|
50
|
+
message = "Package updated at reflect changes in Gem to version #{tag}."
|
|
51
|
+
system "git add -A"
|
|
52
|
+
system "git commit -m #{message.shellescape}"
|
|
53
|
+
system "git push github master"
|
|
54
|
+
system "git push wsl master"
|
|
55
|
+
Dir.chdir(File.dirname(__FILE__))
|
|
56
|
+
system "google-chrome https://github.com/compleatang/legal-markdown/releases"
|
|
57
|
+
system "gl"
|
|
58
|
+
end
|
|
59
|
+
|
|
10
60
|
task :default => [:test]
|
data/lib/legal_markdown.rb
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#! ruby
|
|
2
|
-
|
|
3
|
-
require
|
|
4
|
-
require
|
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
3
|
+
require 'legal_markdown/version.rb'
|
|
4
|
+
require 'legal_markdown/make_yaml_frontmatter.rb'
|
|
5
|
+
require 'legal_markdown/legal_to_markdown.rb'
|
|
5
6
|
|
|
6
7
|
module LegalMarkdown
|
|
7
8
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
2
|
+
require 'legal_to_markdown/load_source.rb'
|
|
3
|
+
require 'legal_to_markdown/mixins.rb'
|
|
4
|
+
require 'legal_to_markdown/leaders.rb'
|
|
5
|
+
require 'legal_to_markdown/json_builder.rb'
|
|
6
|
+
require 'legal_to_markdown/writer.rb'
|
|
7
|
+
require 'roman_numerals'
|
|
7
8
|
|
|
8
9
|
module LegalToMarkdown
|
|
9
10
|
|
|
@@ -11,47 +11,14 @@ module LegalToMarkdown
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def clauses_mixins
|
|
14
|
-
clauses_to_delete = []
|
|
15
|
-
clauses_to_mixin = []
|
|
14
|
+
@clauses_to_delete = []
|
|
15
|
+
@clauses_to_mixin = []
|
|
16
|
+
set_up_opt_clauses
|
|
17
|
+
backup_opt_clauses
|
|
16
18
|
|
|
17
|
-
@
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
clauses_to_mixin << mixin if replacer == "true"
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
clauses_to_delete.each { |m| @headers.delete(m) }
|
|
24
|
-
clauses_to_mixin.each { |m| @headers.delete(m) }
|
|
25
|
-
|
|
26
|
-
until clauses_to_delete.size == 0
|
|
27
|
-
clauses_to_delete.each do | mixin |
|
|
28
|
-
pattern = /(\[\{\{#{mixin}\}\}\s*?)(.*?\n*?)(\])/m
|
|
29
|
-
sub_pattern = /\[\{\{(\S+?)\}\}\s*?/
|
|
30
|
-
@content[pattern]
|
|
31
|
-
get_it_all = $& || ""
|
|
32
|
-
sub_clause = $2 || ""
|
|
33
|
-
if sub_clause[sub_pattern] && clauses_to_delete.include?($1)
|
|
34
|
-
next
|
|
35
|
-
elsif sub_clause[sub_pattern]
|
|
36
|
-
pattern = /\[\{\{#{mixin}\}\}\s*?.*?\n*?\].*?\n*?\]/m
|
|
37
|
-
@content[pattern]; get_it_all = $& || ""
|
|
38
|
-
end
|
|
39
|
-
@content = @content.gsub( get_it_all, "" )
|
|
40
|
-
clauses_to_delete.delete( mixin ) unless @content[pattern]
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
until clauses_to_mixin.size == 0
|
|
45
|
-
clauses_to_mixin.each do | mixin |
|
|
46
|
-
pattern = /(\[\{\{#{mixin}\}\}\s*?)(.*?\n*?)(\])/m
|
|
47
|
-
sub_pattern = /\[\{\{(\S+?)\}\}\s*?/
|
|
48
|
-
@content[pattern]
|
|
49
|
-
get_it_all = $& || ""
|
|
50
|
-
sub_clause = $2 || ""
|
|
51
|
-
next if sub_clause[sub_pattern] && clauses_to_mixin.include?($1)
|
|
52
|
-
@content = @content.gsub( get_it_all, sub_clause.lstrip )
|
|
53
|
-
clauses_to_mixin.delete( mixin ) unless @content[pattern]
|
|
54
|
-
end
|
|
19
|
+
until @clauses_added.size == 0 && @clauses_deleted.size == 0
|
|
20
|
+
clauses_churn_add
|
|
21
|
+
clauses_churn_delete
|
|
55
22
|
end
|
|
56
23
|
end
|
|
57
24
|
|
|
@@ -71,5 +38,46 @@ module LegalToMarkdown
|
|
|
71
38
|
@content.squeeze!(" ")
|
|
72
39
|
@headers = nil if @headers.empty?
|
|
73
40
|
end
|
|
41
|
+
|
|
42
|
+
def set_up_opt_clauses
|
|
43
|
+
@headers.each do | mixin, replacer |
|
|
44
|
+
replacer = replacer.to_s.downcase
|
|
45
|
+
@clauses_to_delete << mixin if replacer == "false"
|
|
46
|
+
@clauses_to_mixin << mixin if replacer == "true"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def backup_opt_clauses
|
|
51
|
+
@clauses_to_delete.each { |m| @headers.delete(m) }
|
|
52
|
+
@clauses_to_mixin.each { |m| @headers.delete(m) }
|
|
53
|
+
@clauses_deleted = @clauses_to_delete.dup
|
|
54
|
+
@clauses_added = @clauses_to_mixin.dup
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def clauses_churn_add
|
|
58
|
+
@clauses_added.each do | mixin |
|
|
59
|
+
pattern = /(\[\{\{#{mixin}\}\}\s*?)(.*?\n*?)(\])/m
|
|
60
|
+
sub_pattern = /\[\{\{(\S+?)\}\}\s*?/
|
|
61
|
+
@content[pattern]
|
|
62
|
+
get_it_all = $& || ""
|
|
63
|
+
sub_clause = $2 || ""
|
|
64
|
+
next if sub_clause[sub_pattern] && ( @clauses_to_mixin.include?($1) || @clauses_to_delete.include?($1) )
|
|
65
|
+
@content = @content.gsub( get_it_all, sub_clause.lstrip )
|
|
66
|
+
@clauses_added.delete( mixin ) unless @content[pattern]
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def clauses_churn_delete
|
|
71
|
+
@clauses_deleted.each do | mixin |
|
|
72
|
+
pattern = /(\[\{\{#{mixin}\}\}\s*?)(.*?\n*?)(\])/m
|
|
73
|
+
sub_pattern = /\[\{\{(\S+?)\}\}\s*?/
|
|
74
|
+
@content[pattern]
|
|
75
|
+
get_it_all = $& || ""
|
|
76
|
+
sub_clause = $2 || ""
|
|
77
|
+
next if sub_clause[sub_pattern] && ( @clauses_to_mixin.include?($1) || @clauses_to_delete.include?($1) )
|
|
78
|
+
@content = @content.gsub( get_it_all, "" )
|
|
79
|
+
@clauses_deleted.delete( mixin ) unless @content[pattern]
|
|
80
|
+
end
|
|
81
|
+
end
|
|
74
82
|
end
|
|
75
83
|
end
|
|
@@ -3,17 +3,16 @@ require 'yaml'
|
|
|
3
3
|
|
|
4
4
|
class MakeYamlFrontMatter
|
|
5
5
|
|
|
6
|
-
def initialize(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
write_it( new_yaml + parsed_file[1] )
|
|
6
|
+
def initialize(args)
|
|
7
|
+
find_yaml_if_yaml(load(args))
|
|
8
|
+
scan_and_filter_yaml
|
|
9
|
+
build_new_yaml_frontmatter unless @yaml_data_as_array == [{},{},{},{}]
|
|
10
|
+
write_it
|
|
12
11
|
end
|
|
13
12
|
|
|
14
|
-
def load(
|
|
13
|
+
def load(args)
|
|
15
14
|
begin
|
|
16
|
-
@file =
|
|
15
|
+
@file = args[-1]
|
|
17
16
|
if @file != "-"
|
|
18
17
|
source_file = File::read(@file) if File::exists?(@file) && File::readable?(@file)
|
|
19
18
|
else
|
|
@@ -33,83 +32,81 @@ class MakeYamlFrontMatter
|
|
|
33
32
|
end
|
|
34
33
|
|
|
35
34
|
def find_yaml_if_yaml( source )
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
content = source
|
|
45
|
-
end
|
|
46
|
-
rescue => e
|
|
47
|
-
puts "Sorry, something went wrong when I was loading the YAML front matter: #{e.message}."
|
|
35
|
+
yaml_pattern = /\A(---\s*\n.*?\n?)^(---\s*$\n?)/m
|
|
36
|
+
parts = source.partition( yaml_pattern )
|
|
37
|
+
if parts[1] != ""
|
|
38
|
+
@headers = YAML.load(parts[1])
|
|
39
|
+
@content = parts[2]
|
|
40
|
+
else
|
|
41
|
+
@headers = {}
|
|
42
|
+
@content = source
|
|
48
43
|
end
|
|
49
|
-
return [headers, content]
|
|
50
44
|
end
|
|
51
45
|
|
|
52
|
-
def
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
def scan_and_filter_yaml
|
|
47
|
+
mixin_pattern = /[^\[]{{(\S+)}}/
|
|
48
|
+
opt_clauses_pattern = /\[{{(\S+)}}/
|
|
49
|
+
@structured_headers_pattern = /(^l+.|^l\d+.)/
|
|
50
|
+
@yaml_data_as_array = []
|
|
51
|
+
@yaml_data_as_array << ( filter_yaml(scan_doc(mixin_pattern)) || {} )
|
|
52
|
+
@yaml_data_as_array << ( filter_yaml(scan_doc(opt_clauses_pattern)) || {} )
|
|
53
|
+
@yaml_data_as_array << ( filter_yaml(scan_doc(@structured_headers_pattern)) || {} )
|
|
54
|
+
@yaml_data_as_array << ( @yaml_data_as_array.last.empty? ? {} : filter_yaml(%w{no-indent no-reset level-style}) )
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def build_new_yaml_frontmatter
|
|
58
|
+
@content = "\n---\n\n" + @content
|
|
59
|
+
replacers = {0=>"Mixins", 1=>"Optional Clauses", 2=>"Structured Headers", 3=>"Properties"}
|
|
60
|
+
stringy = @yaml_data_as_array.inject("") do |string, section|
|
|
61
|
+
unless section.empty?
|
|
62
|
+
string << "\n\# " + replacers[@yaml_data_as_array.index(section)] + "\n"
|
|
63
|
+
string << sink_it(section)
|
|
64
|
+
end
|
|
65
|
+
string
|
|
56
66
|
end
|
|
57
|
-
|
|
67
|
+
@content = stringy + @content
|
|
68
|
+
@content = "---\n" + @content
|
|
58
69
|
end
|
|
59
70
|
|
|
60
|
-
def
|
|
61
|
-
|
|
62
|
-
|
|
71
|
+
def write_it
|
|
72
|
+
@content.scan(/(\[PARTIALSTART\].*?\[PARTIALENDS\]\[(.*?)\])/m).each do |set|
|
|
73
|
+
replacer = set[1]
|
|
74
|
+
to_replace = set[0]
|
|
75
|
+
@content.gsub!(to_replace, replacer)
|
|
76
|
+
end
|
|
77
|
+
if @file != "-"
|
|
78
|
+
File.open(@file, "w") {|f| f.write( @content ); f.close }
|
|
79
|
+
else
|
|
80
|
+
STDOUT.write @content
|
|
81
|
+
end
|
|
63
82
|
end
|
|
64
83
|
|
|
65
|
-
def
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
84
|
+
def scan_doc(pattern)
|
|
85
|
+
found = @content.scan(pattern).uniq.sort.flatten
|
|
86
|
+
if pattern == @structured_headers_pattern
|
|
87
|
+
found = convert_ll_to_level_two found
|
|
69
88
|
end
|
|
89
|
+
found
|
|
70
90
|
end
|
|
71
91
|
|
|
72
|
-
def
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
@structured_headers_pattern = /(^l+.)/
|
|
76
|
-
mixins = filter_yaml(yaml_data, scan_doc(content, mixin_pattern))
|
|
77
|
-
opt_clauses = filter_yaml(yaml_data, scan_doc(content, opt_clauses_pattern))
|
|
78
|
-
levels = filter_yaml(yaml_data, scan_doc(content, @structured_headers_pattern))
|
|
79
|
-
extras = filter_yaml(yaml_data, %w{no-indent no-reset level-style})
|
|
80
|
-
return [mixins, opt_clauses, levels, extras]
|
|
92
|
+
def convert_ll_to_level_two(levels)
|
|
93
|
+
# receives an array in form ["l.", "ll.", "lll."] returns array in form ["level-1", "level-2"]
|
|
94
|
+
levels.inject([]){|arr, level| level[/((l+)\.)|(l(\d+)\.*)/]; $2 ? arr << "level-" + $2.length.to_s : arr << "level-" + $&.delete("l")}
|
|
81
95
|
end
|
|
82
96
|
|
|
83
|
-
def
|
|
84
|
-
|
|
85
|
-
if
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if yaml_data_as_array[1]
|
|
90
|
-
front << "\n\# Optional Clauses\n"
|
|
91
|
-
yaml_data_as_array[1].each{ |head, val| front << head + ": " + val.to_s + "\n" }
|
|
92
|
-
end
|
|
93
|
-
if yaml_data_as_array[2]
|
|
94
|
-
front << "\n\# Structured Headers\n"
|
|
95
|
-
yaml_data_as_array[2].each{ |head, val| front << head + ": \"" + val.to_s + "\"\n" }
|
|
96
|
-
end
|
|
97
|
-
if yaml_data_as_array[3]
|
|
98
|
-
yaml_data_as_array[3].each{ |head, val| front << head + ": " + val.to_s + "\n" }
|
|
97
|
+
def filter_yaml(stuff)
|
|
98
|
+
# @headers will be a hash, stuff is an array, returns a filtered hash
|
|
99
|
+
if stuff
|
|
100
|
+
stuff_in_yaml = stuff.inject({}) do |hash, elem|
|
|
101
|
+
@headers.has_key?(elem) ? hash.merge({elem => @headers[elem]}) : hash.merge({elem => ""})
|
|
102
|
+
end
|
|
99
103
|
end
|
|
100
|
-
front << "\n---\n\n"
|
|
101
104
|
end
|
|
102
105
|
|
|
103
|
-
def
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
final_content.gsub!(to_replace, replacer)
|
|
108
|
-
end
|
|
109
|
-
if @file != "-"
|
|
110
|
-
File.open(@file, "w") {|f| f.write( final_content ) }
|
|
111
|
-
else
|
|
112
|
-
STDOUT.write final_content
|
|
106
|
+
def sink_it(section)
|
|
107
|
+
section.inject("") do |string, head|
|
|
108
|
+
string << head[0] + ": \"" + ( head[1].to_s.gsub("\"", "\\\"") || "" ) + "\"\n"
|
|
109
|
+
string
|
|
113
110
|
end
|
|
114
111
|
end
|
|
115
112
|
end
|
|
@@ -52,15 +52,7 @@ module RomanNumerals
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def self.to_roman_lower(value)
|
|
55
|
-
value
|
|
56
|
-
result = ''
|
|
57
|
-
@base_digits.keys.reverse.each do |decimal|
|
|
58
|
-
while value >= decimal
|
|
59
|
-
value -= decimal
|
|
60
|
-
result += @base_digits[decimal]
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
result.downcase
|
|
55
|
+
self.to_roman_upper(value).downcase
|
|
64
56
|
end
|
|
65
57
|
|
|
66
58
|
def self.to_decimal_string(value)
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#! ruby
|
|
2
2
|
require 'test/unit'
|
|
3
|
-
require '
|
|
3
|
+
require 'securerandom'
|
|
4
4
|
require 'json'
|
|
5
5
|
require 'legal_markdown'
|
|
6
6
|
|
|
@@ -18,22 +18,12 @@ class TestLegalMarkdownToMarkdown < Test::Unit::TestCase
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def get_file ( filename )
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
rescue => e
|
|
24
|
-
raise "Could not find file #{filename}: #{e.message}."
|
|
25
|
-
contents = ""
|
|
26
|
-
end
|
|
27
|
-
if contents && contents != ""
|
|
28
|
-
return contents.rstrip
|
|
29
|
-
else
|
|
30
|
-
return ""
|
|
31
|
-
end
|
|
21
|
+
contents = IO.read(filename)
|
|
22
|
+
contents.rstrip
|
|
32
23
|
end
|
|
33
24
|
|
|
34
25
|
def create_temp
|
|
35
|
-
temp_file =
|
|
36
|
-
return temp_file.path
|
|
26
|
+
temp_file = "/tmp/lmdtests-" + SecureRandom.hex
|
|
37
27
|
end
|
|
38
28
|
|
|
39
29
|
def destroy_temp ( temp_file )
|
|
@@ -45,7 +35,7 @@ class TestLegalMarkdownToMarkdown < Test::Unit::TestCase
|
|
|
45
35
|
end
|
|
46
36
|
|
|
47
37
|
def test_markdown_files
|
|
48
|
-
puts "
|
|
38
|
+
puts "Testing lmd to markdown files.\n\n"
|
|
49
39
|
@lmdfiles.each do | lmd_file |
|
|
50
40
|
puts "Testing => #{lmd_file}"
|
|
51
41
|
temp_file = create_temp
|
|
@@ -56,8 +46,8 @@ class TestLegalMarkdownToMarkdown < Test::Unit::TestCase
|
|
|
56
46
|
end
|
|
57
47
|
end
|
|
58
48
|
|
|
59
|
-
def
|
|
60
|
-
puts "
|
|
49
|
+
def test_the_json_files
|
|
50
|
+
puts "\n\nTesting lmd to json files.\n\n"
|
|
61
51
|
@lmdfiles.each do | lmd_file |
|
|
62
52
|
puts "Testing => #{lmd_file}"
|
|
63
53
|
temp_file = create_temp
|
|
@@ -73,4 +63,16 @@ class TestLegalMarkdownToMarkdown < Test::Unit::TestCase
|
|
|
73
63
|
destroy_temp temp_file
|
|
74
64
|
end
|
|
75
65
|
end
|
|
66
|
+
|
|
67
|
+
def test_yaml_headers
|
|
68
|
+
puts "\n\nTesting Make YAML Frontmatter.\n\n"
|
|
69
|
+
@lmdfiles.each do | lmd_file |
|
|
70
|
+
puts "Testing => #{lmd_file}"
|
|
71
|
+
temp_file = create_temp
|
|
72
|
+
benchmark_file = File.basename(lmd_file, ".lmd") + ".headers"
|
|
73
|
+
`cat #{lmd_file} | legal2md --headers - > #{temp_file}`
|
|
74
|
+
assert_equal(get_file(benchmark_file), get_file(temp_file), "This file threw an exception => #{lmd_file}")
|
|
75
|
+
destroy_temp temp_file
|
|
76
|
+
end
|
|
77
|
+
end
|
|
76
78
|
end
|