mindwords 0.6.3 → 0.6.7
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/mindwords.rb +176 -162
- data.tar.gz.sig +0 -0
- metadata +30 -30
- metadata.gz.sig +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d489cc248683b435ca0ba18e673b7aa75aa23395a73235df19ac355e928dae4
|
4
|
+
data.tar.gz: c8276a4a42198bae89ab48af00ec48b491e5a55761e9c3ed47e20524121dbc11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f059026fe87db1dec7cd710093ccca7129817b4c461ae0f17d27aba822dce298b3a1948b8ce6c17493a802d39d0ded59edd2651b3d56c763ba455a2e68f9dd0
|
7
|
+
data.tar.gz: 3ee4096a398584ef5207fe2902d0e73806cee0791030461220b129f3169c62525c56a78cb288b9f19788813decc341ccb1e26bb6997affd68d6e0af70cd98118
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/mindwords.rb
CHANGED
@@ -8,124 +8,138 @@ require 'line-tree'
|
|
8
8
|
|
9
9
|
module HashCopy
|
10
10
|
refine Hash do
|
11
|
-
|
11
|
+
|
12
12
|
def deep_clone()
|
13
13
|
Marshal.load(Marshal.dump(self))
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
class MindWords
|
20
20
|
using ColouredText
|
21
21
|
using HashCopy
|
22
|
-
|
22
|
+
include RXFHelperModule
|
23
|
+
|
23
24
|
attr_accessor :lines, :filepath
|
24
|
-
|
25
|
+
|
25
26
|
def initialize(raws='', parent: nil, debug: false)
|
26
27
|
|
27
28
|
@parent, @debug = parent, debug
|
28
|
-
|
29
|
-
s, type = RXFHelper.read raws
|
30
|
-
|
31
|
-
@filepath = raws if type == :file or type == :dfs
|
32
|
-
lines = s.strip.gsub(/^\n/,'').lines.uniq
|
33
|
-
lines.shift if lines.first =~ /<\?mindwords\?>/
|
34
|
-
|
35
|
-
@lines = lines.inject([]) do |r,line|
|
36
|
-
|
37
|
-
# the following does 2 things:
|
38
|
-
# 1. splits words separated by a bar (|) onto their own line
|
39
|
-
# 2. prefixes a word with an underscore if the word is the
|
40
|
-
# same as the hashtag. That way it's not removed by the
|
41
|
-
# redundancy checker
|
42
29
|
|
43
|
-
|
44
|
-
words = raw_words.split(/ *\| */)
|
45
|
-
hashtags = raw_hashtags.scan(/(?<=#)\w+/)
|
46
|
-
|
47
|
-
words.each do |word|
|
48
|
-
|
49
|
-
linex = (word + raw_hashtags)
|
50
|
-
r << (hashtags.include?(word) ? linex.sub!(/\b#{word}\b/, '_\0') \
|
51
|
-
: linex)
|
52
|
-
end
|
30
|
+
import(raws) if raws.length > 1
|
53
31
|
|
54
|
-
r
|
55
|
-
end
|
56
|
-
|
57
32
|
end
|
58
|
-
|
33
|
+
|
59
34
|
def add(s)
|
60
|
-
|
35
|
+
|
61
36
|
@lines.concat s.strip.lines
|
62
|
-
|
37
|
+
|
63
38
|
end
|
64
|
-
|
39
|
+
|
65
40
|
def breadcrumb()
|
66
41
|
@parent.attributes[:breadcrumb].split(/ +\/ +/) if @parent
|
67
42
|
end
|
68
|
-
|
43
|
+
|
69
44
|
def headings()
|
70
45
|
breadcrumb[0..-2]
|
71
46
|
end
|
72
|
-
|
73
|
-
|
47
|
+
|
48
|
+
|
74
49
|
def element(id)
|
75
|
-
|
50
|
+
|
76
51
|
doc = Rexle.new(to_xml())
|
77
52
|
e = doc.root.element("//*[@id='#{id}']")
|
78
53
|
#e.attributes[:breadcrumb].to_s if e
|
79
|
-
|
54
|
+
|
80
55
|
end
|
81
|
-
|
82
|
-
|
83
|
-
|
56
|
+
|
57
|
+
# If title supplied, searches for a requested title and returns the
|
58
|
+
# associated hashtags
|
59
|
+
# When no title is supplied, it will return the hashtags for the
|
60
|
+
# parent element of a search result object
|
61
|
+
#
|
62
|
+
def hashtags(title=nil)
|
63
|
+
|
64
|
+
if title then
|
65
|
+
found = search(title)
|
66
|
+
found.hashtags() if found
|
67
|
+
else
|
68
|
+
@parent.attributes[:hashtags].split if @parent and @parent.attributes[:hashtags]
|
69
|
+
end
|
70
|
+
|
84
71
|
end
|
85
|
-
|
72
|
+
|
73
|
+
def import(raws)
|
74
|
+
|
75
|
+
s, type = RXFHelper.read raws
|
76
|
+
|
77
|
+
@filepath = raws if type == :file or type == :dfs
|
78
|
+
lines = (s.strip.gsub(/(^\n|\r)/,'') + "\n").lines.uniq
|
79
|
+
lines.shift if lines.first =~ /<\?mindwords\?>/
|
80
|
+
|
81
|
+
@lines = lines.inject([]) do |r,line|
|
82
|
+
|
83
|
+
# the following does 2 things:
|
84
|
+
# 1. splits words separated by a bar (|) onto their own line
|
85
|
+
# 2. prefixes a word with an underscore if the word is the
|
86
|
+
# same as the hashtag. That way it's not removed by the
|
87
|
+
# redundancy checker
|
88
|
+
|
89
|
+
raw_words, raw_hashtags = line.split(/(?= #)/,2)
|
90
|
+
words = raw_words.split(/ *\| */)
|
91
|
+
hashtags = raw_hashtags.scan(/(?<=#)\w+/)
|
92
|
+
|
93
|
+
words.each do |word|
|
94
|
+
|
95
|
+
linex = (word + raw_hashtags)
|
96
|
+
r << (hashtags.include?(word) ? linex.sub!(/\b#{word}\b/, '_\0') \
|
97
|
+
: linex)
|
98
|
+
end
|
99
|
+
|
100
|
+
r
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
86
104
|
# helpful when searching for a word itself using autosuggest
|
87
105
|
#
|
88
106
|
def lookup(s)
|
89
107
|
self.to_words.keys.sort.grep /^#{s}/i
|
90
|
-
end
|
91
|
-
|
92
|
-
# same as #lines but inludes the breadcrumb path; Helpful to identify
|
108
|
+
end
|
109
|
+
|
110
|
+
# same as #lines but inludes the breadcrumb path; Helpful to identify
|
93
111
|
# which words don't have a breadcrumb path.
|
94
112
|
#
|
95
113
|
def linesplus()
|
96
|
-
|
114
|
+
|
97
115
|
to_a.map do |word, _|
|
98
116
|
r = search word
|
99
117
|
r ? [word, r.breadcrumb] : [r, nil]
|
100
118
|
end
|
101
|
-
|
119
|
+
|
102
120
|
end
|
103
121
|
|
104
122
|
def save(file=@filepath)
|
105
|
-
|
123
|
+
|
106
124
|
return if @lines.empty?
|
107
|
-
|
125
|
+
|
108
126
|
puts 'before save' if @debug
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
else
|
113
|
-
raise 'Filepath not given'
|
114
|
-
end
|
115
|
-
|
127
|
+
|
128
|
+
FileX.write file, to_s()
|
129
|
+
|
116
130
|
end
|
117
131
|
|
118
|
-
# Accepts a list of words with the aim of returning a MindWords document
|
132
|
+
# Accepts a list of words with the aim of returning a MindWords document
|
119
133
|
# using matched words with hashtags from the existing MindWords document.
|
120
134
|
#
|
121
135
|
def reflect(raws)
|
122
|
-
|
136
|
+
|
123
137
|
h = to_h
|
124
|
-
|
138
|
+
|
125
139
|
missing_words = []
|
126
|
-
|
140
|
+
|
127
141
|
# add the tags from the main list
|
128
|
-
a = raws.strip.lines.map do |x|
|
142
|
+
a = raws.strip.lines.map do |x|
|
129
143
|
if h[x.chomp] then
|
130
144
|
[x.chomp, h[x.chomp]]
|
131
145
|
else
|
@@ -147,162 +161,162 @@ class MindWords
|
|
147
161
|
raws3 = a.uniq.map {|s,tags| [s, tags.map {|x| '#' + x }.join(' ')].join(' ') }.join("\n")
|
148
162
|
|
149
163
|
[MindWords.new(raws3), missing_words]
|
150
|
-
|
164
|
+
|
151
165
|
end
|
152
|
-
|
166
|
+
|
153
167
|
def search(keyword, succinct: true)
|
154
|
-
|
168
|
+
|
155
169
|
a = @lines.grep(/#{keyword}/i).map do |line|
|
156
|
-
|
170
|
+
|
157
171
|
puts 'line: ' + line.inspect if @debug
|
158
|
-
|
172
|
+
|
159
173
|
words = line.split
|
160
174
|
r = words.grep /#{keyword}/i
|
161
175
|
i = words.index r[0]
|
162
|
-
|
176
|
+
|
163
177
|
[line, i]
|
164
|
-
|
178
|
+
|
165
179
|
end
|
166
|
-
|
180
|
+
|
167
181
|
return nil if a.empty?
|
168
182
|
#return a[0][0] if a.length < 2
|
169
183
|
|
170
184
|
a2 = a.sort_by(&:last).map(&:first)
|
171
185
|
puts 'a2: ' + a2.inspect if @debug
|
172
186
|
e = element(keyword.downcase.gsub(/ +/,'-'))
|
173
|
-
|
187
|
+
|
174
188
|
return MindWords.new(a2.uniq.join, debug: @debug) if e.nil?
|
175
189
|
|
176
190
|
# find and add any linkage support lines
|
177
191
|
#
|
178
|
-
|
192
|
+
|
179
193
|
a3 = []
|
180
194
|
|
181
195
|
a2.each do |line|
|
182
|
-
|
196
|
+
|
183
197
|
line.chomp.scan(/#[^ ]+/).each do |hashtag|
|
184
|
-
|
198
|
+
|
185
199
|
puts 'hashtag: ' + hashtag.inspect if @debug
|
186
200
|
r2 = @lines.grep(/^#{hashtag[1..-1]} #/)
|
187
|
-
a3 << r2.first if r2
|
188
|
-
|
201
|
+
a3 << r2.first if r2
|
202
|
+
|
189
203
|
end
|
190
204
|
end
|
191
205
|
|
192
206
|
puts 'a2: ' + a2.inspect if @debug
|
193
207
|
a2.concat a3
|
194
|
-
|
208
|
+
|
195
209
|
if succinct then
|
196
210
|
MindWords.new(a2.uniq.join, parent: e, debug: @debug)
|
197
211
|
else
|
198
212
|
MindWords.new(a2.uniq.join, debug: @debug)
|
199
213
|
end
|
200
|
-
|
214
|
+
|
201
215
|
end
|
202
|
-
|
216
|
+
|
203
217
|
def sort()
|
204
218
|
s = @lines.sort.join
|
205
|
-
|
219
|
+
|
206
220
|
def s.to_s()
|
207
221
|
self.lines.map do |x|
|
208
222
|
title, hashtags = x.split(/(?=#)/,2)
|
209
223
|
title + hashtags.chomp.brown
|
210
224
|
end.join("\n")
|
211
|
-
end
|
212
|
-
|
225
|
+
end
|
226
|
+
|
213
227
|
return s
|
214
228
|
end
|
215
|
-
|
229
|
+
|
216
230
|
def sort!()
|
217
231
|
@lines = sort().lines
|
218
232
|
self
|
219
233
|
end
|
220
|
-
|
234
|
+
|
221
235
|
def tag_sort()
|
222
|
-
|
223
|
-
h = @lines.group_by {|x| x[/#\w+/]}
|
236
|
+
|
237
|
+
h = @lines.group_by {|x| x[/#\w+/]}
|
224
238
|
s = h.sort.map {|key, value| value.sort }.join
|
225
|
-
|
239
|
+
|
226
240
|
def s.to_s()
|
227
241
|
self.lines.map do |x|
|
228
242
|
title, hashtags = x.split(/(?=#)/,2)
|
229
243
|
title + hashtags.chomp.brown
|
230
244
|
end.join("\n")
|
231
245
|
end
|
232
|
-
|
246
|
+
|
233
247
|
return s
|
234
|
-
|
248
|
+
|
235
249
|
end
|
236
|
-
|
250
|
+
|
237
251
|
def tag_sort!()
|
238
252
|
@lines = tag_sort().lines
|
239
253
|
self
|
240
254
|
end
|
241
255
|
|
242
256
|
def to_a()
|
243
|
-
|
244
|
-
@lines.map do |x|
|
257
|
+
|
258
|
+
@lines.map do |x|
|
245
259
|
s, rawtags = x.split(/(?= #)/,2)
|
246
260
|
[s, rawtags.scan(/(?<=#)\w+/)]
|
247
261
|
end
|
248
|
-
|
262
|
+
|
249
263
|
end
|
250
|
-
|
264
|
+
|
251
265
|
def to_h()
|
252
266
|
to_a.to_h
|
253
267
|
end
|
254
|
-
|
268
|
+
|
255
269
|
def to_hashtags()
|
256
270
|
@hashtags
|
257
271
|
end
|
258
272
|
|
259
273
|
def to_outline(sort: true)
|
260
|
-
|
274
|
+
|
261
275
|
build()
|
262
|
-
|
276
|
+
|
263
277
|
if sort then
|
264
278
|
a = LineTree.new(@outline).to_a
|
265
|
-
puts ('a: ' + a.inspect).debug if @debug
|
279
|
+
puts ('a: ' + a.inspect).debug if @debug
|
266
280
|
a2tree(tree_sort(a))
|
267
281
|
else
|
268
282
|
@outline
|
269
283
|
end
|
270
|
-
|
284
|
+
|
271
285
|
end
|
272
|
-
|
286
|
+
|
273
287
|
alias to_tree to_outline
|
274
|
-
|
288
|
+
|
275
289
|
def to_s(colour: false)
|
276
|
-
|
290
|
+
|
277
291
|
header = "<?mindwords?>\n\n"
|
278
292
|
return header + @lines.map(&:chomp).join("\n") unless colour
|
279
|
-
|
293
|
+
|
280
294
|
body = @lines.map do |x|
|
281
295
|
title, hashtags = x.split(/(?=#)/,2)
|
282
296
|
title + hashtags.chomp.brown
|
283
297
|
end.join("\n")
|
284
|
-
|
298
|
+
|
285
299
|
header + body
|
286
|
-
|
287
|
-
end
|
288
|
-
|
300
|
+
|
301
|
+
end
|
302
|
+
|
289
303
|
def to_words()
|
290
|
-
|
304
|
+
|
291
305
|
h = {}
|
292
|
-
|
306
|
+
|
293
307
|
Rexle.new(to_xml).root.each_recursive do |e|
|
294
|
-
|
308
|
+
|
295
309
|
h[e.attributes[:title]] = {
|
296
|
-
breadcrumb: e.attributes[:breadcrumb],
|
310
|
+
breadcrumb: e.attributes[:breadcrumb],
|
297
311
|
hashtags: e.attributes[:hashtags]
|
298
312
|
}
|
299
|
-
|
313
|
+
|
300
314
|
end
|
301
|
-
|
315
|
+
|
302
316
|
h
|
303
|
-
|
304
|
-
end
|
305
|
-
|
317
|
+
|
318
|
+
end
|
319
|
+
|
306
320
|
def to_xml()
|
307
321
|
build() unless @xml
|
308
322
|
@xml
|
@@ -311,13 +325,13 @@ class MindWords
|
|
311
325
|
private
|
312
326
|
|
313
327
|
def build()
|
314
|
-
|
328
|
+
|
315
329
|
h = {}
|
316
330
|
|
317
331
|
@lines.each do |line|
|
318
332
|
|
319
333
|
title, rawtags = line.split(/(?= #)/,2)
|
320
|
-
|
334
|
+
|
321
335
|
rawtags.scan(/#(\w+)/).flatten(1).each do |rawtag|
|
322
336
|
tag = rawtag.gsub(/ +/, '_')
|
323
337
|
h[tag] ||= []
|
@@ -325,32 +339,32 @@ class MindWords
|
|
325
339
|
end
|
326
340
|
|
327
341
|
end
|
328
|
-
|
342
|
+
|
329
343
|
@hashtags = h.deep_clone.sort.map {|tag, fields| [tag, fields.sort]}.to_h
|
330
344
|
|
331
|
-
|
345
|
+
|
332
346
|
a = rexlize(h)
|
333
347
|
doc = Rexle.new(['root', {}, '', *a])
|
334
348
|
|
335
349
|
# apply node nesting
|
336
350
|
|
337
351
|
doc.root.elements.each do |e|
|
338
|
-
|
352
|
+
|
339
353
|
doc.root.xpath('//' + e.name).each do |e2|
|
340
|
-
|
354
|
+
|
341
355
|
next if e2 === e
|
342
|
-
|
356
|
+
|
343
357
|
e2.parent.add e
|
344
358
|
e2.delete
|
345
|
-
|
359
|
+
|
346
360
|
end
|
347
|
-
|
361
|
+
|
348
362
|
end
|
349
363
|
|
350
|
-
|
364
|
+
|
351
365
|
# remove duplicates which appear in the same branch above the nested node
|
352
366
|
rm_duplicates(doc)
|
353
|
-
|
367
|
+
|
354
368
|
# remove redundant nodes (outsiders)
|
355
369
|
# a redundant node is where all children exist in existing nested nodes
|
356
370
|
|
@@ -363,60 +377,60 @@ class MindWords
|
|
363
377
|
e.backtrack.to_s if dups
|
364
378
|
|
365
379
|
end
|
366
|
-
|
380
|
+
|
367
381
|
puts 'redundants: ' + redundants.inspect if @debug
|
368
382
|
|
369
383
|
redundants.compact.each {|x| doc.element(x).delete }
|
370
|
-
|
384
|
+
|
371
385
|
node = if @parent then
|
372
386
|
found = doc.root.element('//' + @parent.name)
|
373
387
|
found ? found.parent : doc.root
|
374
388
|
else
|
375
389
|
doc.root
|
376
390
|
end
|
377
|
-
|
378
|
-
# the following removes any undescore prefix from words which were the
|
391
|
+
|
392
|
+
# the following removes any undescore prefix from words which were the
|
379
393
|
# same as the hashtag
|
380
|
-
|
394
|
+
|
381
395
|
node.root.each_recursive do |e|
|
382
396
|
|
383
397
|
next unless e
|
384
398
|
puts 'e: ' + e.inspect if @debug
|
385
|
-
|
399
|
+
|
386
400
|
e.attributes[:id] = e.attributes[:id].sub(/^_/,'') if e.attributes[:id]
|
387
401
|
e.attributes[:title] = e.attributes[:title].sub(/^_/,'') if e.attributes[:title]
|
388
402
|
e.value = e.value.sub(/^_/,'')
|
389
403
|
e.name = e.name.sub(/^_/,'')
|
390
|
-
|
391
|
-
end
|
392
|
-
|
404
|
+
|
405
|
+
end
|
406
|
+
|
393
407
|
# ----
|
394
|
-
|
408
|
+
|
395
409
|
@outline = treeize node
|
396
|
-
|
410
|
+
|
397
411
|
node.root.each_recursive do |e|
|
398
|
-
|
399
|
-
e.attributes[:id] = e.attributes[:title].downcase.gsub(/ +/,'-')
|
400
|
-
|
412
|
+
|
413
|
+
e.attributes[:id] = e.attributes[:title].downcase.gsub(/ +/,'-')
|
414
|
+
|
401
415
|
s = e.parent.attributes[:breadcrumb] ? \
|
402
416
|
e.parent.attributes[:breadcrumb].to_s + ' / ' : ''
|
403
417
|
e.attributes[:breadcrumb] = s + e.value.strip
|
404
|
-
|
418
|
+
|
405
419
|
r = @lines.grep(/^#{e.attributes[:title]} #/i)
|
406
420
|
next unless r.any?
|
407
421
|
e.attributes[:hashtags] = r[0].scan(/(?<=#)\w+/).join(' ')
|
408
422
|
|
409
|
-
|
423
|
+
|
410
424
|
end
|
411
|
-
|
425
|
+
|
412
426
|
@xml = node.xml pretty: true
|
413
427
|
|
414
428
|
end
|
415
|
-
|
429
|
+
|
416
430
|
def rexlize(a)
|
417
|
-
|
431
|
+
|
418
432
|
a.map do |x|
|
419
|
-
|
433
|
+
|
420
434
|
puts 'x: ' + x.inspect if @debug
|
421
435
|
|
422
436
|
case x
|
@@ -424,41 +438,41 @@ class MindWords
|
|
424
438
|
[x.downcase.gsub(/ +/,''), {title: x}, x]
|
425
439
|
when Hash
|
426
440
|
[
|
427
|
-
x.keys.first.downcase.gsub(/_/,' '),
|
428
|
-
{title: x.keys.first},
|
441
|
+
x.keys.first.downcase.gsub(/_/,' '),
|
442
|
+
{title: x.keys.first},
|
429
443
|
x.keys.first,
|
430
444
|
*rexlize(x.values.first)
|
431
445
|
]
|
432
446
|
when Array
|
433
447
|
[
|
434
|
-
x.first.downcase.gsub(/_/,' '),
|
448
|
+
x.first.downcase.gsub(/_/,' '),
|
435
449
|
{title: x.first}, x.first, *rexlize(x.last)
|
436
450
|
]
|
437
451
|
end
|
438
452
|
end
|
439
453
|
|
440
454
|
end
|
441
|
-
|
455
|
+
|
442
456
|
def rm_duplicates(doc)
|
443
|
-
|
457
|
+
|
444
458
|
duplicates = []
|
445
|
-
|
459
|
+
|
446
460
|
doc.root.each_recursive do |e|
|
447
461
|
|
448
462
|
rows = e.parent.xpath('//' + e.name)
|
449
463
|
next if rows.length < 2
|
450
464
|
|
451
465
|
rows[0..-2].each {|e2| duplicates << e.backtrack.to_s }
|
452
|
-
|
466
|
+
|
453
467
|
end
|
454
468
|
|
455
469
|
duplicates.each do |path|
|
456
|
-
|
470
|
+
|
457
471
|
puts 'pathx: ' + path.inspect if @debug
|
458
472
|
e = doc.element(path)
|
459
473
|
e.delete if e
|
460
|
-
|
461
|
-
end
|
474
|
+
|
475
|
+
end
|
462
476
|
|
463
477
|
end
|
464
478
|
|
@@ -470,13 +484,13 @@ class MindWords
|
|
470
484
|
|
471
485
|
puts 'e: ' + e.inspect if @debug
|
472
486
|
if e.is_a? Rexle::Element then
|
473
|
-
(' ' * indent) + e.value.to_s + "\n" + treeize(e,indent+1)
|
487
|
+
(' ' * indent) + e.value.to_s + "\n" + treeize(e,indent+1)
|
474
488
|
end
|
475
489
|
end
|
476
490
|
|
477
491
|
lines.join
|
478
492
|
end
|
479
|
-
|
493
|
+
|
480
494
|
def tree_sort(a)
|
481
495
|
|
482
496
|
if a.first.is_a? Array then
|
@@ -496,7 +510,7 @@ class MindWords
|
|
496
510
|
(' ' * indent) + title + "\n" + children
|
497
511
|
end.join
|
498
512
|
|
499
|
-
end
|
513
|
+
end
|
500
514
|
|
501
515
|
end
|
502
516
|
|
@@ -506,7 +520,7 @@ class MindWordsWidget
|
|
506
520
|
|
507
521
|
end
|
508
522
|
|
509
|
-
|
523
|
+
|
510
524
|
# can be used for main entries or a words list
|
511
525
|
#
|
512
526
|
def input(content: '', action: 'mwupdate', target: 'icontent')
|
data.tar.gz.sig
CHANGED
Binary file
|
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.6.
|
4
|
+
version: 0.6.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -11,31 +11,31 @@ cert_chain:
|
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMTI3MTQ1NDM4WhcN
|
15
|
+
MjMwMTI3MTQ1NDM4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC5j1vd
|
17
|
+
M1N+azakESYbM6MEesfRhcOCklUmUNk5LlHcrtoySInNFd9ky7EMilTg8hRPrf5m
|
18
|
+
YgEx9+6V4iAGhRrkmyPdjGbNvgjyGqPjzouwtElA1SIh6geIaiDr3GAQQ4Amez/g
|
19
|
+
jM0bh1xybLIhBxUJ+QDB/MCyWX7c6Lf2mmbWpKJJi9DxdgZT19nD5VrjLE989UwN
|
20
|
+
XOt/jc8s9zc3RFNadSTqVAWXXUb8F9Uh0zrkNwJD0jhmpHEyg7uZ6cHrxD9zZbLf
|
21
|
+
YLJFU+QgPCSUkJX3KUcLbpwHJbmwVbaRwHz16AanbyvBa3jHBOTLoRywpvjPQuec
|
22
|
+
vr+4cUzHHad9G329gwk9F/3VY0KMtvjxwsRKJ6R+0QacNNG/uyzDirlPfx2N9qy/
|
23
|
+
+vxoLS8NDLDG7lxa+vSXqBhfBlUGUTV+N3g7zwUQOfLetAza48Mzlhbtom/7GhXW
|
24
|
+
RLyW+RLWrNZmyxzmcTzIXMJknJcdh1lErfqlK4xJoFjoOz+Ezt91yfqo7pcCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUsko1pK7R
|
26
|
+
6H51ylxgR7A2RLZ7B6UwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
27
|
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAR1wfQlkrJf5zvVkq5Cl2fcXYKRnhk8N9lxUZPA2Z
|
29
|
+
nXfHed/9gdLpGLQHV91Q0W2taDFDnOpRj3e2dZxdihrJ4qJJ55w9cUgGcpqTjmgE
|
30
|
+
p/5Pxgy25wdHte0URJvy4fnIB0NjVe+pTLENGLhk9O+ktKxfI5b+3ImOHLirfsiM
|
31
|
+
Nt1J9bxPr++9WzOnvOBNpt+dSZE42/mEAoVHCLGp06XSCuj3TRE93TetO5K8Rqrz
|
32
|
+
Gr2rktYjmK75ckHc2Owb7k5q4MhENXDF0w+boTHKwhZ3YZ23ORWBAAe6EWZ5CJif
|
33
|
+
ACsKYTamTZJ1XtnSuwfZJ66HujeZDeDeU4Jn0IWl0Ocpuf5cGdgZdQ/jlA02M4Ev
|
34
|
+
1IAsJkbXAdPHh9mLKUSeH2E1qJ8tg7MFVdBZMkvG4PNXXEk5fzijsrxrXbpY4IgW
|
35
|
+
eUqhPOSrxIRLebVebvo/SHN6+ed3Q1tXowsbLGCT9QwqbaZ5MZ7zks92mIWeJvsA
|
36
|
+
JdpabIXfcOANNKd0ha4NO+Yu
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2022-01-27 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: line-tree
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
version: '0.9'
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0.9.
|
49
|
+
version: 0.9.3
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -56,27 +56,27 @@ dependencies:
|
|
56
56
|
version: '0.9'
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: 0.9.
|
59
|
+
version: 0.9.3
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: rxfhelper
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
64
|
- - "~>"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: '1.
|
66
|
+
version: '1.2'
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 1.1
|
69
|
+
version: 1.2.1
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '1.
|
76
|
+
version: '1.2'
|
77
77
|
- - ">="
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version: 1.1
|
79
|
+
version: 1.2.1
|
80
80
|
description:
|
81
81
|
email: digital.robertson@gmail.com
|
82
82
|
executables: []
|
metadata.gz.sig
CHANGED
@@ -1 +1,3 @@
|
|
1
|
-
|
1
|
+
2��nܦO�aK?��V�� �J$�J����9��/�
|
2
|
+
���W�O5;fl�3.��%D��P�Ӈ|V��RՁV�N螴�>�i�.^�r=�(`n�0>�TX���P�ڥ��gQ�{��P�^�)�R��1�0�
|
3
|
+
Y�S2��P�&P��Y"s����ĶE��t\3a����3�r2��}�%Y�k�h!/�`��eţx��rǍ�eK��{�0���y�A�/����9U�X}?�+.��_smkh�P�`F�f��/6��jO��N��47�n���m�H$�����j���ܻ-��\�ra|���N��l|�#������G���`Ϣ����ڼER�V���Z2EԷj��^�6m��3��fא����,�n٣��U
|