mindwords 0.1.1 → 0.1.2
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.tar.gz.sig +0 -0
- data/lib/mindwords.rb +108 -6
- metadata +3 -4
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 979c08954b01240d160226705d4d6fd2735bda65542d137766f8448154168d96
|
4
|
+
data.tar.gz: 38b5068bc8094f08b9225ab5b370274ef80abad45b5acbd1c73ac0dac774b605
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53bec0cce041880c0daa73fab6a82afa58902f48eabcfef80e7f43d150bd45fb6cae895945f50b90b24532f2acdc6be3962775295ed8446d34b27550ce25f5c5
|
7
|
+
data.tar.gz: 1c92d7835762bf2b9f2e25fd7d52dc8d159963ad7a950cf3c6f6eb45fc426ba5cde51fa54950335503efe1cf094855b59c2cc0917412b1f176a8951d2cad5feb
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/mindwords.rb
CHANGED
@@ -5,12 +5,14 @@
|
|
5
5
|
require 'rexle'
|
6
6
|
|
7
7
|
class MindWords
|
8
|
-
|
8
|
+
using ColouredText
|
9
|
+
|
9
10
|
def initialize(s, debug: false)
|
10
11
|
|
11
12
|
@debug = debug
|
12
|
-
|
13
|
-
|
13
|
+
@a = s.strip.lines
|
14
|
+
|
15
|
+
lines = @a.map do |line|
|
14
16
|
|
15
17
|
word = line.split(/ (?=#)/,2)
|
16
18
|
|
@@ -41,6 +43,8 @@ class MindWords
|
|
41
43
|
|
42
44
|
end
|
43
45
|
|
46
|
+
@h = h
|
47
|
+
|
44
48
|
a = rexlize(h)
|
45
49
|
doc = Rexle.new(['root', {}, '', *a])
|
46
50
|
|
@@ -64,12 +68,90 @@ class MindWords
|
|
64
68
|
redundants.compact.each {|x| doc.element(x).delete }
|
65
69
|
rm_duplicates(doc)
|
66
70
|
|
71
|
+
@xml = doc.root.xml pretty: true
|
67
72
|
@outline = treeize doc.root
|
68
73
|
|
69
74
|
end
|
75
|
+
|
76
|
+
def search(keyword)
|
77
|
+
|
78
|
+
a = @a.grep(/#{keyword}/i).map do |line|
|
79
|
+
|
80
|
+
words = line.split
|
81
|
+
r = words.grep /#{keyword}/i
|
82
|
+
i = words.index r[0]
|
83
|
+
|
84
|
+
[line, i]
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
return nil if a.empty?
|
89
|
+
#return a[0][0] if a.length < 2
|
90
|
+
|
91
|
+
a2 = a.sort_by(&:last).map(&:first)
|
92
|
+
MindWords.new(a2.join)
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
def sort()
|
97
|
+
s = @a.sort.join
|
98
|
+
|
99
|
+
def s.to_s()
|
100
|
+
self.lines.map do |x|
|
101
|
+
title, hashtags = x.split(/(?=#)/,2)
|
102
|
+
title + hashtags.chomp.brown
|
103
|
+
end.join("\n")
|
104
|
+
end
|
105
|
+
|
106
|
+
return s
|
107
|
+
end
|
108
|
+
|
109
|
+
def sort!()
|
110
|
+
@a = sort().lines
|
111
|
+
self
|
112
|
+
end
|
113
|
+
|
114
|
+
def tag_sort()
|
115
|
+
|
116
|
+
h = @a.group_by {|x| x[/#\w+/]}
|
117
|
+
s = h.sort.map {|key, value| value.sort }.join
|
118
|
+
|
119
|
+
def s.to_s()
|
120
|
+
self.lines.map do |x|
|
121
|
+
title, hashtags = x.split(/(?=#)/,2)
|
122
|
+
title + hashtags.chomp.brown
|
123
|
+
end.join("\n")
|
124
|
+
end
|
125
|
+
|
126
|
+
return s
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
def tag_sort!()
|
131
|
+
@a = tag_sort().lines
|
132
|
+
self
|
133
|
+
end
|
134
|
+
|
135
|
+
def to_h()
|
136
|
+
@h
|
137
|
+
end
|
70
138
|
|
71
|
-
def to_outline()
|
72
|
-
@outline
|
139
|
+
def to_outline(sort: true)
|
140
|
+
sort ? a2tree(tree_sort(LineTree.new(@outline).to_a)) : @outline
|
141
|
+
end
|
142
|
+
|
143
|
+
def to_s(colour: false)
|
144
|
+
|
145
|
+
return @a.join unless colour
|
146
|
+
|
147
|
+
@a.map do |x|
|
148
|
+
title, hashtags = x.split(/(?=#)/,2)
|
149
|
+
title + hashtags.chomp.brown
|
150
|
+
end.join("\n")
|
151
|
+
end
|
152
|
+
|
153
|
+
def to_xml()
|
154
|
+
@xml
|
73
155
|
end
|
74
156
|
|
75
157
|
private
|
@@ -130,6 +212,26 @@ class MindWords
|
|
130
212
|
|
131
213
|
lines.join
|
132
214
|
end
|
215
|
+
|
216
|
+
def tree_sort(a)
|
217
|
+
|
218
|
+
if a.first.is_a? Array then
|
219
|
+
a.sort_by(&:first).map {|x| tree_sort(x) }
|
220
|
+
elsif a.any?
|
221
|
+
[a.first] + tree_sort(a[1..-1])
|
222
|
+
else
|
223
|
+
[]
|
224
|
+
end
|
225
|
+
end
|
133
226
|
|
134
|
-
|
227
|
+
def a2tree(a, indent=0)
|
228
|
+
|
229
|
+
a.map do |row|
|
230
|
+
title, *remaining = row
|
231
|
+
children = remaining ? a2tree(remaining, indent+1) : ''
|
232
|
+
(' ' * indent) + title + "\n" + children
|
233
|
+
end.join
|
135
234
|
|
235
|
+
end
|
236
|
+
|
237
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mindwords
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
aWH7D2AmhOpqNwWnPHzWR/yzpigAVTrvpHfRxZleQj6Z/090nIH2KR0RdioMmPFq
|
36
36
|
3+574KQzs/gR9Y5a+iMcvHRN
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2021-01-
|
38
|
+
date: 2021-01-10 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rexle
|
@@ -83,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
requirements: []
|
86
|
-
|
87
|
-
rubygems_version: 2.7.10
|
86
|
+
rubygems_version: 3.0.3
|
88
87
|
signing_key:
|
89
88
|
specification_version: 4
|
90
89
|
summary: Helps get what's in your mind into a structure using words and hashtags.
|
metadata.gz.sig
CHANGED
Binary file
|