md_edit 0.1.9 → 0.1.10
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
- checksums.yaml.gz.sig +0 -0
- data/lib/md_edit.rb +66 -32
- data.tar.gz.sig +4 -1
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47045b90019ff71705e40bb300f6a14acc4c4ec0
|
4
|
+
data.tar.gz: ba10aac7d1d29fa69a7b589a13d7e464c35c6cc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d13ae45845fd8f982284abb6078414d4d92ce269c64b072dbdd4788a574ef6aa82207032bc82ff60c1b2096a1a71c4ebef537783ad25d66c5648a0686c18490
|
7
|
+
data.tar.gz: 96be01978e1caeae144d73d9bb021bf6f062d46d8093934932ea43ce1421102002189fff4a42d91fbe56d1f3b4c506820ded6625c7347d123aec6fcbc5a08177
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/md_edit.rb
CHANGED
@@ -13,13 +13,13 @@ class MdEdit
|
|
13
13
|
|
14
14
|
# pass in a Markdown document or a Markdown filename
|
15
15
|
#
|
16
|
-
def initialize(md, debug: false)
|
16
|
+
def initialize(md, debug: false, root: 'Thoughts')
|
17
17
|
|
18
18
|
@debug = debug
|
19
19
|
|
20
20
|
s, @filename = if md.lines.length == 1 then
|
21
21
|
|
22
|
-
File.write(md, "#
|
22
|
+
File.write(md, "# #{root}\n\n") unless File.exists? md
|
23
23
|
File.exists?(md) ? [File.read(md), md] : md
|
24
24
|
|
25
25
|
else
|
@@ -48,7 +48,8 @@ class MdEdit
|
|
48
48
|
|
49
49
|
key = @sections.keys.grep(/#{s.downcase}/i).first
|
50
50
|
old_value = @sections[key].flatten.join
|
51
|
-
|
51
|
+
heading = last_heading(key)
|
52
|
+
old_section = heading + old_value
|
52
53
|
|
53
54
|
@s.sub!(old_section, '')
|
54
55
|
load_sections(@s)
|
@@ -63,13 +64,17 @@ class MdEdit
|
|
63
64
|
|
64
65
|
value = raw_value.gsub(/\r/,'')
|
65
66
|
|
66
|
-
title = heading ? heading : value.lines.first.chomp
|
67
|
+
title = (heading ? heading : value.lines.first.chomp)[/#+ +(.*)/,1]
|
68
|
+
|
67
69
|
key = @sections.keys.grep(/#{title.downcase}/i).first
|
70
|
+
|
68
71
|
return unless key
|
69
72
|
|
70
73
|
old_value = @sections[key].flatten.join
|
71
74
|
puts 'old_value: ' + old_value.inspect if @debug
|
72
|
-
|
75
|
+
|
76
|
+
heading = last_heading(key)
|
77
|
+
old_section = value =~ /^#+/ ? heading + old_value : old_value
|
73
78
|
puts 'old_section: ' + old_section.inspect if @debug
|
74
79
|
|
75
80
|
@s.sub!(old_section, value)
|
@@ -85,9 +90,14 @@ class MdEdit
|
|
85
90
|
alias edit update
|
86
91
|
|
87
92
|
def find(s, heading: true)
|
88
|
-
|
93
|
+
|
94
|
+
key = @sections.keys.grep(/#{s.downcase}/i).first
|
89
95
|
return unless key
|
90
|
-
|
96
|
+
|
97
|
+
headings = key.lines.first.split(/ > /)
|
98
|
+
title = "%s %s" % ['#' * headings.length, headings.last]
|
99
|
+
a = [title, @sections[key].join]
|
100
|
+
|
91
101
|
heading ? a.join : a
|
92
102
|
end
|
93
103
|
|
@@ -100,6 +110,14 @@ class MdEdit
|
|
100
110
|
def to_h()
|
101
111
|
@h
|
102
112
|
end
|
113
|
+
|
114
|
+
def to_outline(bullets: false)
|
115
|
+
|
116
|
+
a = indentor(@s.scan(/^#+ [^\n]+/).join("\n"))
|
117
|
+
.lines.map {|x| x.sub(/#+ +/,'')}
|
118
|
+
bullets ? a.map{|x| x.sub(/\b/,'- ')} : a.join
|
119
|
+
|
120
|
+
end
|
103
121
|
|
104
122
|
def to_s()
|
105
123
|
@s
|
@@ -107,6 +125,29 @@ class MdEdit
|
|
107
125
|
|
108
126
|
private
|
109
127
|
|
128
|
+
def indentor(s)
|
129
|
+
|
130
|
+
a = s.split(/(?<=\n)(?=#+)/)
|
131
|
+
|
132
|
+
a.map.with_index do |x, i|
|
133
|
+
|
134
|
+
# get the indentation level
|
135
|
+
indent = x[/^#+/].count('#') - 1
|
136
|
+
|
137
|
+
lines = x.lines
|
138
|
+
lines.first.prepend(' ' * indent) +
|
139
|
+
lines[1..-1].map {|y| (' ' * indent) + ' ' + y}.join
|
140
|
+
end.join
|
141
|
+
|
142
|
+
end
|
143
|
+
|
144
|
+
def last_heading(key)
|
145
|
+
|
146
|
+
a = key.lines.first.split(/ > /)
|
147
|
+
"%s %s" % ['#' * a.length, a.last]
|
148
|
+
|
149
|
+
end
|
150
|
+
|
110
151
|
def load_sections(raw_s)
|
111
152
|
|
112
153
|
# strip out any new lines gaps which are greater than 1
|
@@ -123,25 +164,14 @@ class MdEdit
|
|
123
164
|
|
124
165
|
end
|
125
166
|
|
126
|
-
def parse(
|
167
|
+
def parse(markdown)
|
127
168
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
# get the indentation level
|
133
|
-
indent = x[/^#+/].count('#') - 1
|
134
|
-
|
135
|
-
lines = x.lines
|
136
|
-
lines.first.prepend(' ' * indent) +
|
137
|
-
lines[1..-1].map {|y| (' ' * indent) + ' ' + y}.join
|
138
|
-
end
|
139
|
-
|
140
|
-
puts "a2.join: \n" + a2.join if @debug
|
141
|
-
a3 = LineTree.new(a2.join, ignore_blank_lines: false, ignore_newline: false).to_a
|
142
|
-
puts 'a3: ' + a3.inspect if @debug
|
169
|
+
s = indentor(markdown)
|
170
|
+
puts "s: \n" + s if @debug
|
171
|
+
a = LineTree.new(s, ignore_blank_lines: false, ignore_newline: false).to_a
|
172
|
+
puts 'a: ' + a.inspect if @debug
|
143
173
|
h = {}
|
144
|
-
|
174
|
+
scan a, h
|
145
175
|
|
146
176
|
return h
|
147
177
|
|
@@ -151,22 +181,25 @@ class MdEdit
|
|
151
181
|
File.write @filename, @s if @filename
|
152
182
|
end
|
153
183
|
|
154
|
-
def scan(a, h={})
|
184
|
+
def scan(a, h={}, trail=[])
|
155
185
|
|
156
186
|
a.map do |x|
|
157
187
|
|
158
|
-
|
188
|
+
raw_head = x.first
|
189
|
+
|
190
|
+
if raw_head =~ /^#/ then
|
159
191
|
|
160
|
-
|
161
|
-
|
162
|
-
r = scan(x[1..-1], h)
|
192
|
+
head = raw_head[/^[^\n]+/]
|
163
193
|
|
164
|
-
|
194
|
+
fullkey = trail + [head[/#+ +(.*)/,1]]
|
195
|
+
key = fullkey.join(" > ")
|
196
|
+
h[key] = nil
|
197
|
+
r = scan(x[1..-1], h, fullkey)
|
198
|
+
|
199
|
+
h[key] = ["\n"] + r
|
165
200
|
|
166
201
|
[head, r]
|
167
202
|
|
168
|
-
elsif x.length > 1
|
169
|
-
[head] + scan(x[1..-1])
|
170
203
|
else
|
171
204
|
x.flatten.join
|
172
205
|
end
|
@@ -175,4 +208,5 @@ class MdEdit
|
|
175
208
|
|
176
209
|
end
|
177
210
|
|
211
|
+
|
178
212
|
end
|
data.tar.gz.sig
CHANGED
@@ -1 +1,4 @@
|
|
1
|
-
|
1
|
+
EX�G�����_�w��<��T�)��kbF^���9� C��2����"��잽�X��Щ�����ڞ#[X�섽c��z�i�i�a]/X7�ܹ#
|
2
|
+
]E7�ڀ�y͖���>v�z:/&���u<x��SH��}�jdz^?�Z
|
3
|
+
I�-��/ܔ�H9$e�7�
|
4
|
+
�n�+Y���+�d/�B��X�����
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: md_edit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
R5r1JjTBaaHOaqI14bIkwUSY5q1cO4Wl7HWly80kX2AD8o/tPHvyF9Tx3pBvaboU
|
32
32
|
etnSPHbQwmBvFQ==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2017-12-
|
34
|
+
date: 2017-12-25 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: line-tree
|
metadata.gz.sig
CHANGED
Binary file
|