mindmapdoc 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data/lib/mindmapdoc.rb +117 -0
- data.tar.gz.sig +0 -0
- metadata +107 -0
- metadata.gz.sig +1 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 888e10fb37ea910866c7a53ee53dc7ef47adc35d
|
4
|
+
data.tar.gz: 0217632f2c5fb6af79a3a76396f05e05f9f2d77c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: af147ee78bd0bea1adc01c7104ce908db9393a71a6945be54e8228bb7abcbf8cfa84afe36c0c5061fb25774d691216bd934c031f7b01c54b7f6ad4abca919efa
|
7
|
+
data.tar.gz: dfdf15930f4fb11a11d17f8140814000d8c81ff13b0c9a0bf3fc177970e9627b929e75d121a8885be1f18e85d5ac2f391972a204a4d79e032ae2857cc5db5503
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data/lib/mindmapdoc.rb
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: mindmapdoc.rb
|
4
|
+
|
5
|
+
require 'rdiscount'
|
6
|
+
require 'mindmapviz'
|
7
|
+
|
8
|
+
|
9
|
+
class MindmapDoc
|
10
|
+
|
11
|
+
attr_accessor :root
|
12
|
+
|
13
|
+
def initialize(s=nil, root: 'root')
|
14
|
+
|
15
|
+
@root, @tree, @txtdoc, @svg = root, '', '', ''
|
16
|
+
import(s) if s
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
def import(s)
|
21
|
+
|
22
|
+
if s =~ /^# / then
|
23
|
+
@txtdoc = s.gsub(/\r/,'')
|
24
|
+
@tree, @html = parse_doc s
|
25
|
+
else
|
26
|
+
@tree, @txtdoc = parse_tree s
|
27
|
+
end
|
28
|
+
|
29
|
+
@svg = build_svg(@tree)
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_svg()
|
34
|
+
@svg
|
35
|
+
end
|
36
|
+
|
37
|
+
def to_tree()
|
38
|
+
@tree
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_md()
|
42
|
+
@txtdoc
|
43
|
+
end
|
44
|
+
|
45
|
+
alias to_doc to_md
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def build_svg(s)
|
50
|
+
|
51
|
+
src = s.lines.map {|x| "%s # #%s" % [x.chomp, x.downcase.gsub(/\s/,'')]}\
|
52
|
+
.join("\n")
|
53
|
+
|
54
|
+
mmv = Mindmapviz.new src, fields: %w(label url), delimiter: ' # '
|
55
|
+
mmv.to_svg.sub(/.*(?=\<svg)/m,'')
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
# returns a indented string representation of the mindmap and HTML from
|
60
|
+
# the rendered Markdown
|
61
|
+
#
|
62
|
+
def parse_doc(md)
|
63
|
+
|
64
|
+
s = RDiscount.new(md.gsub(/\r/,'')).to_html.gsub(/(?<=\<h)[^\<]+/) do |x|
|
65
|
+
id = x[/(?<=\>).*/].downcase.gsub(/\s/,'')
|
66
|
+
"#{ x[/\d/]} id='#{id}'>#{x[/(?<=\>).*/]}"
|
67
|
+
end
|
68
|
+
|
69
|
+
linex = md.scan(/#[^\n]+\n/).map {|x| (' ' * (x.scan(/#/).length - 1)) + x[/(?<=# ).*/]}
|
70
|
+
#log.info 'mindmap: linex: ' + linex.inspect
|
71
|
+
@root = linex.shift
|
72
|
+
linex.map! {|x| x[2..-1]}
|
73
|
+
#log.info 'mindmap: root: ' + @root.inspect
|
74
|
+
txt = linex.join("\n")
|
75
|
+
|
76
|
+
#log.info 'mindmap: txt: ' + txt.inspect
|
77
|
+
|
78
|
+
[txt, s]
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
# returns a markdown document
|
83
|
+
#
|
84
|
+
def parse_tree(s)
|
85
|
+
|
86
|
+
asrc = [@root] + s.gsub(/\r/,'').strip.lines.map {|x| ' ' + x}
|
87
|
+
|
88
|
+
a2 = asrc.inject([]) do |r,x|
|
89
|
+
|
90
|
+
if x.strip.length > 0 then
|
91
|
+
r << '#' * (x.scan(/ {2}/).length + 1) + ' ' + x.lstrip
|
92
|
+
else
|
93
|
+
r
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
#log.info 'mindmap: a2' + a2.inspect
|
99
|
+
a = @txtdoc.split(/.*(?=\n#)/).map(&:strip)
|
100
|
+
|
101
|
+
a3 = []
|
102
|
+
|
103
|
+
a2.each do |x|
|
104
|
+
|
105
|
+
r = a.grep /#{x}/
|
106
|
+
#log.info 'mindmap: ' + r.inspect
|
107
|
+
r2 = r.any? ? r.first : x
|
108
|
+
a3 << "\n" + r2.strip.sub(/\w/) {|x| x.upcase} + "\n"
|
109
|
+
|
110
|
+
end
|
111
|
+
#log.info 'mindmap: a3:' + a3.inspect
|
112
|
+
|
113
|
+
[asrc.join, a3.join]
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mindmapdoc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Robertson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
|
14
|
+
YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
|
15
|
+
8ixkARkWAmV1MB4XDTE3MTIxMzE3MDI1MloXDTE4MTIxMzE3MDI1MlowSDESMBAG
|
16
|
+
A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
|
17
|
+
EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
18
|
+
ggEBANUSRMsoPwmyyjX7NWbm/7AAjcFhBvoq+DQfba3odafOKaYSRIacI40ih4fz
|
19
|
+
Xgq8bLViuSuzrcZQltAaODMtiaoChvx+7Z0cBVOM8lNTsZsIuQpvC3hG1/zSSM+p
|
20
|
+
wBKLcEx8dyn9akv01YVCo5Q+gOpd4M5Y8+NaB19tU5RBqfgI7m5APL7lwU0ABkDD
|
21
|
+
dWm0fffqTPJsDT5N1kHJmA0gLa8YWnNNfPuPin+kJA5WwNf+gHdZk5Weg/w6hBMY
|
22
|
+
b/KKn5TH0BXqq2ltPTRSMw7BMjP3IPSnb9HmUwTQFkOg6uQlVp607LSbgXt/d5Xi
|
23
|
+
5a49uibOKrry3TYNzWeXYqrKC+UCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
|
24
|
+
DwQEAwIEsDAdBgNVHQ4EFgQUtaS+kGKXIk2/2wy6scOOk+nJ3/QwJgYDVR0RBB8w
|
25
|
+
HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
|
26
|
+
c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAUTBcLzPB
|
27
|
+
hrrqcUUBhUJc9Z2lV5lfELDkjEAipO5wMFs1Ybuj72LMFx7MAdCbgY0zqk6VkjMK
|
28
|
+
ZFCF02AdVdONAFZzvKV5S+iNo2Kob6wfU5Y0HWSTGicigs7DHm5ne2/l+Lrl+1rE
|
29
|
+
yLlecx1/TDqpBFD7EP1eA+vpbhQvRsE0J9mWbjrCf7XomTB0f1ohCrsTjLu4NRD/
|
30
|
+
nJ3dURkoefkzkacSIx0QUw4uPPEUA0+ds8+reD+XGhid/icCR4p3ef9c63BCDXHa
|
31
|
+
MVgPwk1JjHwj6LchFY/zTEamSovovbrRFMSbfw5kdbPk/wmOGRYaEwTk7wm8u0Zm
|
32
|
+
RRHYVIirxLY0zg==
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2017-12-13 00:00:00.000000000 Z
|
35
|
+
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rdiscount
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '2.2'
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.2.0.1
|
46
|
+
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - "~>"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '2.2'
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 2.2.0.1
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: mindmapviz
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.2'
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.2.3
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0.2'
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.2.3
|
76
|
+
description:
|
77
|
+
email: james@jamesrobertson.eu
|
78
|
+
executables: []
|
79
|
+
extensions: []
|
80
|
+
extra_rdoc_files: []
|
81
|
+
files:
|
82
|
+
- lib/mindmapdoc.rb
|
83
|
+
homepage: https://github.com/jrobertson/mindmapdoc
|
84
|
+
licenses:
|
85
|
+
- MIT
|
86
|
+
metadata: {}
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubyforge_project:
|
103
|
+
rubygems_version: 2.6.13
|
104
|
+
signing_key:
|
105
|
+
specification_version: 4
|
106
|
+
summary: mindmapdoc
|
107
|
+
test_files: []
|
metadata.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
�����*ЙZn��im�� �����:G�D� ��wf����oq,�
|