dynarex-blog 0.5.3 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/dynarex-blog.rb +53 -37
  2. metadata +1 -1
data/lib/dynarex-blog.rb CHANGED
@@ -63,40 +63,58 @@ class DynarexBlog
63
63
  file = lookup.records[id][:body][:file]
64
64
 
65
65
  dynarex = Dynarex.new(@file_path + file)
66
- dynarex.update(id, h).save
66
+ prev_tags = dynarex.record(id).tags
67
+ cur_tags = h[:tags]
67
68
 
68
- uri = h[:title].gsub(/\s/,'-')
69
- lookup.update(lookup_id, uri: uri).save
70
- @hc_lookup.write(@current_lookup) { Document.new File.open(@file_path + @current_lookup,'r').read }
69
+ if cur_tags.length > 0 then
70
+
71
+ a = cur_tags.split(/\s/)
72
+
73
+ if prev_tags and prev_tags.length > 0 then
74
+
75
+ b = prev_tags.split(/\s/)
76
+ old_list = a - b # tags to be deleted
77
+ new_list = b - a # tags to be inserted
78
+
79
+ old.each {|x| delete_entry(doc_tag, node_entry, tag_name, id) }
80
+ common = a.to_set.intersection(b).to_a # tags to be updated
81
+ common.each {|name| update_entry(name, id, h) } if dynarex.record(id).tags
82
+ else
83
+ new_list = a
84
+ end
85
+
86
+ new_list.each {|tag| create_record(h, id, name=tag, type='tags') }
87
+
88
+ dynarex.update(id, h)
89
+ dynarex.save
90
+ end
71
91
 
72
- dynarex.record(id).tags.split(/\s/).each {|name| update_entry(name, id, h) } if dynarex.record(id).tags
92
+ lookup.update(lookup_id, uri: h[:title].gsub(/\s/,'-')).save
93
+ @hc_lookup.write(@current_lookup) { Document.new File.open(@file_path + @current_lookup,'r').read }
94
+
73
95
  end
74
96
 
75
- def delete(id=0)
97
+ def delete(id='')
76
98
 
77
99
  # delete from the tags files (entry and lookup), the entry file and lookup
78
100
  # look the id up in lookup.xml
79
101
 
80
- doc_entry, entry = open_lookup_record '_entry', id
81
-
82
- dynarex_file = @file_path + entry.text('file').to_s
83
- dynarex = Document.new(File.open(dynarex_file,'r').read)
84
- dynarex_entry = XPath.first(dynarex.root, "records/entry[@id='#{id}']")
85
- tags = dynarex_entry.text('tags').split(/\s/)
86
-
87
- dynarex_entry.parent.delete dynarex_entry
88
- File.open(dynarex_file,'w'){|f| dynarex.write f}
102
+ lookup = Dynarex.new @file_path + @current_lookup
103
+ lookup_id = lookup.records[id][:id]
104
+ file = lookup.records[id][:body][:file]
105
+
106
+ dynarex = Dynarex.new(@file_path + file)
107
+ tags = dynarex.record(id).tags.split(/\s/)
108
+ dynarex.delete(id).save
89
109
 
90
- entry.parent.delete entry
91
- lookup = "%s%s" % [@file_path, '_entry_lookup.xml']
92
- File.open(lookup,'w'){|f| doc_entry.write f}
110
+ lookup.delete(lookup_id).save
93
111
 
94
112
  tags.each do |tag_name|
95
113
  # find the lookup
96
- doc_tag, node_entry = open_lookup_record tag_name, id
97
- delete_entry(doc_tag, node_entry, tag_name, id)
114
+ delete_entry(tag_name, id)
98
115
  end
99
116
 
117
+ # start of reindexing
100
118
  doc = Document.new File.open(@file_path + 'index.xml','r').read
101
119
  node = XPath.first(doc.root, "records/entry[@id='#{id}']")
102
120
 
@@ -194,34 +212,32 @@ class DynarexBlog
194
212
 
195
213
  private
196
214
 
197
- def delete_entry(doc, node, lookup_filename, id)
198
- file = @file_path + node.text('file').to_s
199
- Dynarex.new(file).delete(id).save file
215
+ def delete_entry(lookup_filename, id)
216
+
217
+ lookup_path = "%s%s_lookup.xml" % [@file_path, lookup_filename]
218
+ lookup = Dynarex.new lookup_path
219
+
220
+ lookup_id = lookup.records[id][:id]
221
+ file = lookup.records[id][:body][:file]
222
+ lookup.delete(lookup_id).save
223
+
224
+ Dynarex.new(file).delete(id).save
200
225
 
201
- node.parent.delete node
202
- lookup = "%s%s_lookup.xml" % [@file_path, lookup_filename]
203
- File.open(lookup,'w'){|f| doc.write f}
204
226
  end
205
227
 
206
228
  def update_entry(lookup_filename, id, h)
207
229
 
208
- lookup_path = "%s%s_lookup.xml" % [@file_path, lookup_filename]
209
-
230
+ lookup_path = "%s%s_lookup.xml" % [@file_path, lookup_filename]
210
231
  lookup = Dynarex.new lookup_path
211
232
  lookup_id = lookup.records[id][:id]
233
+
212
234
  file = lookup.records[id][:body][:file]
235
+ lookup.update(lookup_id, uri: h[:title].gsub(/\s/,'-')).save
236
+
237
+ Dynarex.new(@file_path + file).update(id, h).save
213
238
 
214
- Dynarex.new(@file_path + file).update(id, h).save
215
-
216
- uri = h[:title].gsub(/\s/,'-')
217
- lookup.update(lookup_id, uri: uri).save
218
239
  end
219
240
 
220
- def open_lookup_record(name, id)
221
- lookup_path = "%s%s_lookup.xml" % [@file_path, name]
222
- lookup = Document.new File.open(lookup_path,'r').read
223
- [lookup, XPath.first(lookup.root, "records/entry[id='#{id}']")]
224
- end
225
241
 
226
242
  def select_page(doc, number)
227
243
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynarex-blog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors: []
7
7