mindwords 0.5.6 → 0.6.4
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 +132 -13
- metadata +5 -6
- 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: 57efb3e9e699846f0886274e3d976cbad5707b3c9b5497cc175f15a5a1bfcfe6
|
4
|
+
data.tar.gz: 67fd42d36fe854b72c4336ed1ef185925d40fee6ecdb1e54c729fa3ee601869d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee70b813f79e3a41149b583fe5bebde65c6fb7ef47bb0cb3683f060b1e5bc523f69af796391a1a9b3ed79ed18ce52a26c75949144d7ba1995fc96ad332bd9112
|
7
|
+
data.tar.gz: 28a891931b0b589c8519fe05286a440a200bbdea028eba0dc629b79349b472491ed8a1a2b46e4ee64444ce177f9c28b42c595f273859bd209b97797a1a445956
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/mindwords.rb
CHANGED
@@ -29,18 +29,46 @@ class MindWords
|
|
29
29
|
s, type = RXFHelper.read raws
|
30
30
|
|
31
31
|
@filepath = raws if type == :file or type == :dfs
|
32
|
-
|
33
|
-
|
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
|
+
|
43
|
+
raw_words, raw_hashtags = line.split(/(?= #)/,2)
|
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
|
53
|
+
|
54
|
+
r
|
55
|
+
end
|
34
56
|
|
35
57
|
end
|
36
58
|
|
37
|
-
def add(
|
38
|
-
|
59
|
+
def add(s)
|
60
|
+
|
61
|
+
@lines.concat s.strip.lines
|
62
|
+
|
39
63
|
end
|
40
64
|
|
41
65
|
def breadcrumb()
|
42
66
|
@parent.attributes[:breadcrumb].split(/ +\/ +/) if @parent
|
43
67
|
end
|
68
|
+
|
69
|
+
def headings()
|
70
|
+
breadcrumb[0..-2]
|
71
|
+
end
|
44
72
|
|
45
73
|
|
46
74
|
def element(id)
|
@@ -54,12 +82,31 @@ class MindWords
|
|
54
82
|
def hashtags()
|
55
83
|
@parent.attributes[:hashtags].split if @parent
|
56
84
|
end
|
85
|
+
|
86
|
+
# helpful when searching for a word itself using autosuggest
|
87
|
+
#
|
88
|
+
def lookup(s)
|
89
|
+
self.to_words.keys.sort.grep /^#{s}/i
|
90
|
+
end
|
91
|
+
|
92
|
+
# same as #lines but inludes the breadcrumb path; Helpful to identify
|
93
|
+
# which words don't have a breadcrumb path.
|
94
|
+
#
|
95
|
+
def linesplus()
|
96
|
+
|
97
|
+
to_a.map do |word, _|
|
98
|
+
r = search word
|
99
|
+
r ? [word, r.breadcrumb] : [r, nil]
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
57
103
|
|
58
104
|
def save(file=@filepath)
|
59
105
|
|
60
106
|
return if @lines.empty?
|
61
107
|
|
62
108
|
puts 'before save' if @debug
|
109
|
+
|
63
110
|
File.write file, to_s()
|
64
111
|
|
65
112
|
end
|
@@ -99,7 +146,7 @@ class MindWords
|
|
99
146
|
|
100
147
|
end
|
101
148
|
|
102
|
-
def search(keyword)
|
149
|
+
def search(keyword, succinct: true)
|
103
150
|
|
104
151
|
a = @lines.grep(/#{keyword}/i).map do |line|
|
105
152
|
|
@@ -120,9 +167,32 @@ class MindWords
|
|
120
167
|
puts 'a2: ' + a2.inspect if @debug
|
121
168
|
e = element(keyword.downcase.gsub(/ +/,'-'))
|
122
169
|
|
123
|
-
return
|
170
|
+
return MindWords.new(a2.uniq.join, debug: @debug) if e.nil?
|
171
|
+
|
172
|
+
# find and add any linkage support lines
|
173
|
+
#
|
174
|
+
|
175
|
+
a3 = []
|
176
|
+
|
177
|
+
a2.each do |line|
|
178
|
+
|
179
|
+
line.chomp.scan(/#[^ ]+/).each do |hashtag|
|
180
|
+
|
181
|
+
puts 'hashtag: ' + hashtag.inspect if @debug
|
182
|
+
r2 = @lines.grep(/^#{hashtag[1..-1]} #/)
|
183
|
+
a3 << r2.first if r2
|
184
|
+
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
puts 'a2: ' + a2.inspect if @debug
|
189
|
+
a2.concat a3
|
124
190
|
|
125
|
-
|
191
|
+
if succinct then
|
192
|
+
MindWords.new(a2.uniq.join, parent: e, debug: @debug)
|
193
|
+
else
|
194
|
+
MindWords.new(a2.uniq.join, debug: @debug)
|
195
|
+
end
|
126
196
|
|
127
197
|
end
|
128
198
|
|
@@ -183,8 +253,17 @@ class MindWords
|
|
183
253
|
end
|
184
254
|
|
185
255
|
def to_outline(sort: true)
|
256
|
+
|
186
257
|
build()
|
187
|
-
|
258
|
+
|
259
|
+
if sort then
|
260
|
+
a = LineTree.new(@outline).to_a
|
261
|
+
puts ('a: ' + a.inspect).debug if @debug
|
262
|
+
a2tree(tree_sort(a))
|
263
|
+
else
|
264
|
+
@outline
|
265
|
+
end
|
266
|
+
|
188
267
|
end
|
189
268
|
|
190
269
|
alias to_tree to_outline
|
@@ -233,12 +312,12 @@ class MindWords
|
|
233
312
|
|
234
313
|
@lines.each do |line|
|
235
314
|
|
236
|
-
title, rawtags = line.split(/
|
315
|
+
title, rawtags = line.split(/(?= #)/,2)
|
237
316
|
|
238
317
|
rawtags.scan(/#(\w+)/).flatten(1).each do |rawtag|
|
239
318
|
tag = rawtag.gsub(/ +/, '_')
|
240
319
|
h[tag] ||= []
|
241
|
-
h[tag] << title
|
320
|
+
h[tag] << title.strip
|
242
321
|
end
|
243
322
|
|
244
323
|
end
|
@@ -280,17 +359,35 @@ class MindWords
|
|
280
359
|
e.backtrack.to_s if dups
|
281
360
|
|
282
361
|
end
|
362
|
+
|
363
|
+
puts 'redundants: ' + redundants.inspect if @debug
|
283
364
|
|
284
365
|
redundants.compact.each {|x| doc.element(x).delete }
|
285
366
|
|
286
|
-
|
287
367
|
node = if @parent then
|
288
368
|
found = doc.root.element('//' + @parent.name)
|
289
|
-
found ? found : doc.root
|
369
|
+
found ? found.parent : doc.root
|
290
370
|
else
|
291
371
|
doc.root
|
292
372
|
end
|
293
373
|
|
374
|
+
# the following removes any undescore prefix from words which were the
|
375
|
+
# same as the hashtag
|
376
|
+
|
377
|
+
node.root.each_recursive do |e|
|
378
|
+
|
379
|
+
next unless e
|
380
|
+
puts 'e: ' + e.inspect if @debug
|
381
|
+
|
382
|
+
e.attributes[:id] = e.attributes[:id].sub(/^_/,'') if e.attributes[:id]
|
383
|
+
e.attributes[:title] = e.attributes[:title].sub(/^_/,'') if e.attributes[:title]
|
384
|
+
e.value = e.value.sub(/^_/,'')
|
385
|
+
e.name = e.name.sub(/^_/,'')
|
386
|
+
|
387
|
+
end
|
388
|
+
|
389
|
+
# ----
|
390
|
+
|
294
391
|
@outline = treeize node
|
295
392
|
|
296
393
|
node.root.each_recursive do |e|
|
@@ -353,7 +450,7 @@ class MindWords
|
|
353
450
|
|
354
451
|
duplicates.each do |path|
|
355
452
|
|
356
|
-
puts '
|
453
|
+
puts 'pathx: ' + path.inspect if @debug
|
357
454
|
e = doc.element(path)
|
358
455
|
e.delete if e
|
359
456
|
|
@@ -399,3 +496,25 @@ class MindWords
|
|
399
496
|
|
400
497
|
end
|
401
498
|
|
499
|
+
class MindWordsWidget
|
500
|
+
|
501
|
+
def initialize()
|
502
|
+
|
503
|
+
end
|
504
|
+
|
505
|
+
|
506
|
+
# can be used for main entries or a words list
|
507
|
+
#
|
508
|
+
def input(content: '', action: 'mwupdate', target: 'icontent')
|
509
|
+
|
510
|
+
<<EOF
|
511
|
+
<form action='#{action}' method='post' target='#{target}'>
|
512
|
+
<textarea name='content' cols='30' rows='19'>
|
513
|
+
#{content}
|
514
|
+
</textarea>
|
515
|
+
<input type='submit' value='Submit'/>
|
516
|
+
</form>
|
517
|
+
EOF
|
518
|
+
end
|
519
|
+
|
520
|
+
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.
|
4
|
+
version: 0.6.4
|
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-
|
38
|
+
date: 2021-06-30 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.2
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -56,7 +56,7 @@ dependencies:
|
|
56
56
|
version: '0.9'
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: 0.9.
|
59
|
+
version: 0.9.2
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: rxfhelper
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,8 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '0'
|
105
105
|
requirements: []
|
106
|
-
|
107
|
-
rubygems_version: 2.7.10
|
106
|
+
rubygems_version: 3.1.2
|
108
107
|
signing_key:
|
109
108
|
specification_version: 4
|
110
109
|
summary: Helps get what's in your mind into a structure using words and hashtags.
|
metadata.gz.sig
CHANGED
Binary file
|