mindwords 0.5.2 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9674ba7b1779b50888b7e917d46b77baf61fdf06de749e0f74ca924f7be3bd09
4
- data.tar.gz: 8e4ecfbf1a91e80515c5095bd9e998a28fbf7d556350ff8e241a4782e17a3652
3
+ metadata.gz: 4766e91a6c371e9d2e8849bafdd77cea548cf43d76630a9400f0ec3b2b778953
4
+ data.tar.gz: 3f17f99a76ea226ca636f7c8c3ecf24e0e1b8c79571fd299d5dfa00bc10f9d63
5
5
  SHA512:
6
- metadata.gz: 94e2e23bce6a84e5fb5679581271451a6a393cd69655f22f0760cdcecd73f6d93e334d0bb5b3e582090cb970c1b406677da808cc47a6bfa6215bffa6607ba6fc
7
- data.tar.gz: 2cee5838d869dc197d63f5db05db62604b72f540c108bdacaf41b07ff2aabd4f96531277ce3694ddfaa926cf3bb881d05b424d89840e9ec955b802e30b3992be
6
+ metadata.gz: 55c7625e72007789f37b6968271655a772d3d1696991b05f112a39f2ca4b437da71ce5795375887b0b908074bdbd3d2104f0a602aa37f46b518263e2eb2d07e7
7
+ data.tar.gz: 4d5174c595015db117857d1e9db0b8d211d541136f83cf27e08d84bd86768f0b34e53692579f6d12a5a0931fcf3cc9939ff4deac689276cbedc8c095c8a3bf55
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/mindwords.rb CHANGED
@@ -20,18 +20,24 @@ class MindWords
20
20
  using ColouredText
21
21
  using HashCopy
22
22
 
23
- attr_accessor :lines
23
+ attr_accessor :lines, :filepath
24
24
 
25
25
  def initialize(raws='', parent: nil, debug: false)
26
26
 
27
27
  @parent, @debug = parent, debug
28
28
 
29
- s, _ = RXFHelper.read raws
29
+ s, type = RXFHelper.read raws
30
+
31
+ @filepath = raws if type == :file or type == :dfs
30
32
  @lines = s.strip.gsub(/^\n/,'').lines
31
33
  @lines.shift if @lines.first =~ /<\?mindwords\?>/
32
34
 
33
35
  end
34
36
 
37
+ def add(line)
38
+ @lines << line
39
+ end
40
+
35
41
  def breadcrumb()
36
42
  @parent.attributes[:breadcrumb].split(/ +\/ +/) if @parent
37
43
  end
@@ -49,6 +55,49 @@ class MindWords
49
55
  @parent.attributes[:hashtags].split if @parent
50
56
  end
51
57
 
58
+ def save(file=@filepath)
59
+
60
+ return if @lines.empty?
61
+
62
+ puts 'before save' if @debug
63
+ File.write file, to_s()
64
+
65
+ end
66
+
67
+ # Accepts a list of words with the aim of returning a MindWords document
68
+ # using matched words with hashtags from the existing MindWords document.
69
+ #
70
+ def reflect(raws)
71
+
72
+ h = to_h
73
+
74
+ missing_words = []
75
+
76
+ # add the tags from the main list
77
+ a = raws.strip.lines.map do |x|
78
+ if h[x.chomp] then
79
+ [x.chomp, h[x.chomp]]
80
+ else
81
+ missing_words << x
82
+ nil
83
+ end
84
+ end.compact
85
+
86
+ # add any linkage words from the tags
87
+ #
88
+ a.map(&:last).flatten(1).each do |s|
89
+
90
+ a << [s, h[s]] if h[s]
91
+
92
+ end
93
+
94
+ # remove suplicates lines and transform it into a raw mindwords format
95
+ #
96
+ raws3 = a.uniq.map {|s,tags| [s, tags.map {|x| '#' + x }.join(' ')].join(' ') }.join("\n")
97
+
98
+ [MindWords.new(raws3), missing_words]
99
+
100
+ end
52
101
 
53
102
  def search(keyword)
54
103
 
@@ -72,8 +121,28 @@ class MindWords
72
121
  e = element(keyword.downcase.gsub(/ +/,'-'))
73
122
 
74
123
  return nil if e.nil?
124
+
125
+ # find and add any linkage support lines
126
+ #
127
+
128
+ a3 = []
129
+
130
+ a2.each do |line|
131
+
132
+ line.chomp.scan(/#[^ ]+/).each do |hashtag|
133
+
134
+ puts 'hashtag: ' + hashtag.inspect if @debug
135
+ r2 = @lines.grep(/^#{hashtag[1..-1]} #/)
136
+ a3 << r2.first if r2
137
+
138
+ end
139
+ end
140
+
141
+ puts 'a2: ' + a2.inspect if @debug
142
+ a2.concat a3
75
143
 
76
- MindWords.new(a2.join, parent: e, debug: @debug)
144
+ MindWords.new(a2.uniq.join, parent: e, debug: @debug)
145
+ #MindWords.new(a2.uniq.join, debug: @debug)
77
146
 
78
147
  end
79
148
 
@@ -115,11 +184,20 @@ class MindWords
115
184
  @lines = tag_sort().lines
116
185
  self
117
186
  end
187
+
188
+ def to_a()
189
+
190
+ @lines.map do |x|
191
+ s, rawtags = x.split(/(?= #)/,2)
192
+ [s, rawtags.scan(/(?<=#)\w+/)]
193
+ end
194
+
195
+ end
118
196
 
119
197
  def to_h()
120
- @h
198
+ to_a.to_h
121
199
  end
122
-
200
+
123
201
  def to_hashtags()
124
202
  @hashtags
125
203
  end
@@ -129,10 +207,12 @@ class MindWords
129
207
  sort ? a2tree(tree_sort(LineTree.new(@outline).to_a)) : @outline
130
208
  end
131
209
 
210
+ alias to_tree to_outline
211
+
132
212
  def to_s(colour: false)
133
213
 
134
214
  header = "<?mindwords?>\n\n"
135
- return header + @lines.join unless colour
215
+ return header + @lines.map(&:chomp).join("\n") unless colour
136
216
 
137
217
  body = @lines.map do |x|
138
218
  title, hashtags = x.split(/(?=#)/,2)
@@ -141,11 +221,24 @@ class MindWords
141
221
 
142
222
  header + body
143
223
 
144
- end
224
+ end
145
225
 
146
226
  def to_words()
147
- to_outline.lines.map {|x| x[/\w[\w ]+/] }.uniq
148
- end
227
+
228
+ h = {}
229
+
230
+ Rexle.new(to_xml).root.each_recursive do |e|
231
+
232
+ h[e.attributes[:title]] = {
233
+ breadcrumb: e.attributes[:breadcrumb],
234
+ hashtags: e.attributes[:hashtags]
235
+ }
236
+
237
+ end
238
+
239
+ h
240
+
241
+ end
149
242
 
150
243
  def to_xml()
151
244
  build() unless @xml
@@ -210,10 +303,9 @@ class MindWords
210
303
 
211
304
  redundants.compact.each {|x| doc.element(x).delete }
212
305
 
213
-
214
306
  node = if @parent then
215
307
  found = doc.root.element('//' + @parent.name)
216
- found ? found : doc.root
308
+ found ? found.parent : doc.root
217
309
  else
218
310
  doc.root
219
311
  end
@@ -326,3 +418,25 @@ class MindWords
326
418
 
327
419
  end
328
420
 
421
+ class MindWordsWidget
422
+
423
+ def initialize()
424
+
425
+ end
426
+
427
+
428
+ # can be used for main entries or a words list
429
+ #
430
+ def input(content: '', action: 'mwupdate', target: 'icontent')
431
+
432
+ <<EOF
433
+ <form action='#{action}' method='post' target='#{target}'>
434
+ <textarea name='content' cols='30' rows='19'>
435
+ #{content}
436
+ </textarea>
437
+ <input type='submit' value='Submit'/>
438
+ </form>
439
+ EOF
440
+ end
441
+
442
+ 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.5.2
4
+ version: 0.5.7
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-25 00:00:00.000000000 Z
38
+ date: 2021-04-07 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: line-tree
metadata.gz.sig CHANGED
Binary file