xbel 0.2.2 → 0.2.3

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
@@ -34,27 +34,31 @@ module Nokogiri::Decorators::XBEL
34
34
  super
35
35
  end
36
36
 
37
+ def build(type, attributes = {}, &block)
38
+ child = Nokogiri::XML::Node.new(type.to_s, document)
39
+ assign_to child, attributes, &block
40
+
41
+ add_child child
42
+ end
43
+
37
44
  # Builds a bookmark with given attributes and add it.
38
45
  def build_bookmark(title, href, attributes = {}, &block)
39
- node = Nokogiri::XML::Node.new('bookmark', document)
40
- assign_to node, attributes.merge('title' => title, 'href' => href),
46
+ build :bookmark,
47
+ attributes.merge(:title => title, :href => href),
41
48
  &block
42
-
43
- add_child node
44
49
  end
45
50
  # Builds a folder with given attributes and add it.
46
51
  def build_folder(title, attributes = {}, &block)
47
- node = Nokogiri::XML::Node.new('folder', document)
48
- assign_to node, attributes.merge('title' => title), &block
49
-
50
- add_child node
52
+ build :folder,
53
+ attributes.merge(:title => title),
54
+ &block
51
55
  end
52
56
  # Builds an alias with given attributes and add it.
53
57
  def build_alias(ref)
54
- node = Nokogiri::XML::Node.new('alias', document)
55
- node.ref = (Entry === ref) ? ref.id : ref.to_s
58
+ child = Nokogiri::XML::Node.new('alias', document)
59
+ child.ref = (Entry === ref) ? ref.id : ref.to_s
56
60
 
57
- add_child node
61
+ add_child child
58
62
  end
59
63
  # Builds a saperator with given attributes and add it.
60
64
  def add_separator
@@ -64,9 +68,16 @@ module Nokogiri::Decorators::XBEL
64
68
  protected
65
69
 
66
70
  def assign_to(node, attributes) #:nodoc:
71
+ attributes[:id] ||= "#{ id }." << xpath('./bookmark | ./folder').
72
+ inject(0) { |next_id, child|
73
+ succ_num_id = child.id[/(\d+)$/, 1].to_i.succ
74
+ succ_num_id > next_id ? succ_num_id : next_id
75
+ }.to_s
76
+
67
77
  attributes.each do |key, value|
68
78
  node.send "#{ key }=", value
69
79
  end
80
+
70
81
  yield node if block_given?
71
82
  end
72
83
 
data/test/test_xbel.rb CHANGED
@@ -86,6 +86,7 @@ context 'XBEL' do
86
86
 
87
87
  asserts('added') { topic.added }.equals Date.today
88
88
  asserts('title') { topic.title }.equals 'boof\'s xbel'
89
+ asserts('next id') { topic.id }.equals 'f0.2'
89
90
  asserts('href') { topic.href }.
90
91
  equals 'http://www.github.com/boof/xbel'
91
92
  asserts('description') { topic.description }.
@@ -93,12 +94,12 @@ context 'XBEL' do
93
94
  end
94
95
 
95
96
  context 'new Folder' do
96
- setup { topic.build_folder 'sub', :id => 'id-2', :desc => 'desc' }
97
+ setup { topic.build_folder 'sub', :desc => 'desc' }
97
98
  should('be a folder') { topic.folder? }
98
99
 
99
100
  asserts('added') { topic.added }.equals Date.today
100
101
  asserts('title') { topic.title }.equals 'sub'
101
- asserts('id') { topic.id }.equals 'id-2'
102
+ asserts('next id') { topic.id }.equals 'f0.2'
102
103
  asserts('desc') { topic.desc }.equals 'desc'
103
104
  end
104
105
 
data/xbel.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{xbel}
8
- s.version = "0.2.2"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Florian A\303\237mann"]
12
- s.date = %q{2009-11-12}
12
+ s.date = %q{2009-11-16}
13
13
  s.description = %q{}
14
14
  s.email = %q{florian.assmann@email.de}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xbel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Florian A\xC3\x9Fmann"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-12 00:00:00 +01:00
12
+ date: 2009-11-16 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency