xbel 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.watchr +47 -0
- data/README.markdown +21 -0
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/nokogiri/decorators/xbel.rb +68 -0
- data/lib/nokogiri/decorators/xbel/alias.rb +25 -0
- data/lib/nokogiri/decorators/xbel/bookmark.rb +32 -0
- data/lib/nokogiri/decorators/xbel/folder.rb +59 -0
- data/lib/nokogiri/decorators/xbel/seperator.rb +9 -0
- data/lib/xbel/writer.rb +41 -0
- data/test/complex.xbel +165 -0
- data/test/test_xbel.rb +4 -2
- data/xbel.gemspec +68 -0
- metadata +13 -4
- data/README.rdoc +0 -18
data/.watchr
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'open3'
|
2
|
+
|
3
|
+
Dir.chdir File.dirname(__FILE__)
|
4
|
+
|
5
|
+
watch(/(?:lib|test).*\.rb$/) { |something|
|
6
|
+
|
7
|
+
Dir['lib/**/*.rb'].inject(true) do |check, path|
|
8
|
+
Open3.popen3('ruby', '-c', path) { |_, o, stderr|
|
9
|
+
errors = stderr.read
|
10
|
+
|
11
|
+
if errors.empty? then check
|
12
|
+
else
|
13
|
+
puts errors
|
14
|
+
false
|
15
|
+
end
|
16
|
+
}
|
17
|
+
end and begin
|
18
|
+
|
19
|
+
messages = Dir['test/**/test_*.rb'].inject([]) do |messages, path|
|
20
|
+
if path !~ /test_helper\.rb$/
|
21
|
+
Open3.popen3('rake test') do |_, o, e|
|
22
|
+
puts e.read, message = o.read
|
23
|
+
|
24
|
+
result = message.split($/).last
|
25
|
+
tests, assertions, failures, errors =
|
26
|
+
result.split(', ').map! { |r| r.to_i }
|
27
|
+
|
28
|
+
failures ||= 0
|
29
|
+
errors ||= 0
|
30
|
+
|
31
|
+
unless failures.zero? and errors.zero?
|
32
|
+
# Open3.popen3(bad_message) { |i, *| i << message[0, 160] }
|
33
|
+
else
|
34
|
+
# system(good_message)
|
35
|
+
end
|
36
|
+
|
37
|
+
messages << message
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
messages
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
}
|
data/README.markdown
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# xbel
|
2
|
+
|
3
|
+
Introduces XBEL decorations for Nokogiri. Write support is still in
|
4
|
+
development.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
gem install xbel
|
9
|
+
|
10
|
+
### Note on Patches/Pull Requests
|
11
|
+
|
12
|
+
1. Fork the project.
|
13
|
+
2. Make your feature addition or bug fix.
|
14
|
+
3. Add tests for it. This is important so I don't break it in a
|
15
|
+
future version unintentionally.
|
16
|
+
4. Commit, do not mess with rakefile, version, or history.
|
17
|
+
5. Send me a pull request.
|
18
|
+
|
19
|
+
### Copyright
|
20
|
+
|
21
|
+
Copyright (c) 2009 Florian Aßmann. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -8,7 +8,7 @@ begin
|
|
8
8
|
gem.summary = %Q{Ruby API for XBEL based on Nokogiri and Watchr.}
|
9
9
|
gem.description = %Q{}
|
10
10
|
gem.email = "florian.assmann@email.de"
|
11
|
-
gem.homepage = "http://
|
11
|
+
gem.homepage = "http://xbel.monkey-patch.me"
|
12
12
|
gem.authors = ["Florian Aßmann"]
|
13
13
|
gem.add_development_dependency "shoulda", ">= 0"
|
14
14
|
gem.add_dependency 'watchr', '>= 0'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module Nokogiri::Decorators::XBEL
|
2
|
+
|
3
|
+
autoload :Folder, "#{ File.dirname __FILE__ }/xbel/folder.rb"
|
4
|
+
autoload :Seperator, "#{ File.dirname __FILE__ }/xbel/folder.rb"
|
5
|
+
autoload :Bookmark, "#{ File.dirname __FILE__ }/xbel/bookmark.rb"
|
6
|
+
autoload :Alias, "#{ File.dirname __FILE__ }/xbel/alias.rb"
|
7
|
+
|
8
|
+
def self.extended(base)
|
9
|
+
case base.name
|
10
|
+
when 'title'
|
11
|
+
when 'desc'
|
12
|
+
when 'bookmark'
|
13
|
+
base.extend Bookmark
|
14
|
+
when 'folder'
|
15
|
+
base.extend Folder
|
16
|
+
when 'separator'
|
17
|
+
base.extend Separator
|
18
|
+
when 'alias'
|
19
|
+
base.extend Alias
|
20
|
+
when 'xbel'
|
21
|
+
base.extend Folder
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module Entry
|
26
|
+
def desc
|
27
|
+
if node = at('./desc') then node.content end
|
28
|
+
end
|
29
|
+
def desc=(value)
|
30
|
+
node = at './desc'
|
31
|
+
node ||= add_child Nokogiri::XML::Node.new('desc', document)
|
32
|
+
|
33
|
+
node.content = value
|
34
|
+
end
|
35
|
+
alias_method :description, :desc
|
36
|
+
alias_method :description=, :desc=
|
37
|
+
|
38
|
+
def title
|
39
|
+
if node = at('./title') then node.content end
|
40
|
+
end
|
41
|
+
def title=(value)
|
42
|
+
node = at './title'
|
43
|
+
node ||= add_child Nokogiri::XML::Node.new('title', document)
|
44
|
+
|
45
|
+
node.content = value
|
46
|
+
end
|
47
|
+
alias_method :to_s, :title
|
48
|
+
|
49
|
+
def id
|
50
|
+
if id = attribute('id') then id.content end
|
51
|
+
end
|
52
|
+
def id=(value)
|
53
|
+
set_attribute 'id', value.to_s
|
54
|
+
end
|
55
|
+
|
56
|
+
def added
|
57
|
+
if value = attribute('added') then Date.parse value.content end
|
58
|
+
end
|
59
|
+
def added=(value)
|
60
|
+
set_attribute 'added', value.to_s
|
61
|
+
end
|
62
|
+
|
63
|
+
def alias?; end
|
64
|
+
def bookmark?; end
|
65
|
+
def folder?; end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Nokogiri::Decorators::XBEL
|
2
|
+
module Alias
|
3
|
+
extend Forwardable
|
4
|
+
def_delegators :entry,
|
5
|
+
:description, :title, :to_s, :id, :added, :bookmark?, :folder?
|
6
|
+
|
7
|
+
def ref
|
8
|
+
attribute('ref').content
|
9
|
+
end
|
10
|
+
def ref=(value)
|
11
|
+
set_attribute 'ref', value.to_s
|
12
|
+
end
|
13
|
+
alias_method :reference, :ref
|
14
|
+
alias_method :reference=, :ref=
|
15
|
+
|
16
|
+
def entry
|
17
|
+
at %Q'//*[@id="#{ ref }"]'
|
18
|
+
end
|
19
|
+
|
20
|
+
def alias?
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Nokogiri::Decorators::XBEL
|
2
|
+
module Bookmark
|
3
|
+
include Entry
|
4
|
+
|
5
|
+
def modified
|
6
|
+
if value = attribute('modified') then Date.parse value.content end
|
7
|
+
end
|
8
|
+
def modified=(value)
|
9
|
+
set_attribute 'modified', value.to_s
|
10
|
+
end
|
11
|
+
def visited
|
12
|
+
if value = attribute('visited') then Date.parse value.content end
|
13
|
+
end
|
14
|
+
def visited=(value)
|
15
|
+
set_attribute 'visited', value.to_s
|
16
|
+
end
|
17
|
+
def visit
|
18
|
+
self.visited = Date.today
|
19
|
+
end
|
20
|
+
def href
|
21
|
+
if value = attribute('href') then value.content end
|
22
|
+
end
|
23
|
+
def href=(value)
|
24
|
+
self.modified = Date.today
|
25
|
+
set_attribute 'href', value
|
26
|
+
end
|
27
|
+
def bookmark?
|
28
|
+
true
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Nokogiri::Decorators::XBEL
|
2
|
+
module Folder
|
3
|
+
include Entry
|
4
|
+
|
5
|
+
def entries
|
6
|
+
xpath './alias', './bookmark', './folder', './separator'
|
7
|
+
end
|
8
|
+
def aliases
|
9
|
+
xpath './alias'
|
10
|
+
end
|
11
|
+
def bookmarks
|
12
|
+
xpath './bookmark'
|
13
|
+
end
|
14
|
+
def folders
|
15
|
+
xpath './folder'
|
16
|
+
end
|
17
|
+
|
18
|
+
def folder?
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def add_child(node)
|
23
|
+
node.added = Date.today if node.is_a? Entry
|
24
|
+
super
|
25
|
+
end
|
26
|
+
|
27
|
+
def build_bookmark(attributes = {}, &block)
|
28
|
+
node = Nokogiri::XML::Node.new('bookmark', document)
|
29
|
+
assign_to node, attributes
|
30
|
+
|
31
|
+
add_child node
|
32
|
+
end
|
33
|
+
def build_folder(attributes = {}, &block)
|
34
|
+
node = Nokogiri::XML::Node.new('folder', document)
|
35
|
+
assign_to node, attributes
|
36
|
+
|
37
|
+
add_child node
|
38
|
+
end
|
39
|
+
def build_alias(ref)
|
40
|
+
node = Nokogiri::XML::Node.new('alias', document)
|
41
|
+
node.ref = (Entry === ref) ? ref.id : ref.to_s
|
42
|
+
|
43
|
+
add_child node
|
44
|
+
end
|
45
|
+
def add_seperator
|
46
|
+
add_child Nokogiri::XML::Node.new('separator', document)
|
47
|
+
end
|
48
|
+
|
49
|
+
protected
|
50
|
+
|
51
|
+
def assign_to(node, attributes)
|
52
|
+
attributes.each do |key, value|
|
53
|
+
node.send "#{ key }=", value
|
54
|
+
end
|
55
|
+
yield node if block_given?
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
data/lib/xbel/writer.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
class XBEL::Writer
|
2
|
+
DOCTYPE = '<!DOCTYPE xbel PUBLIC "+//IDN python.org//DTD XML Bookmark Exchange Language 1.0//EN//XML" "http://www.python.org/topics/xml/dtds/xbel-1.0.dtd">'
|
3
|
+
|
4
|
+
attr_reader :document, :lockfile_path, :path
|
5
|
+
def new(document, path)
|
6
|
+
@document, @path = document, path
|
7
|
+
@lockfile_path = "#{ path }.lock"
|
8
|
+
end
|
9
|
+
|
10
|
+
def write
|
11
|
+
synchronize do
|
12
|
+
File.open path, 'w' do |file|
|
13
|
+
file.puts DOCTYPE
|
14
|
+
file << document
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
protected
|
20
|
+
|
21
|
+
def locked?(path)
|
22
|
+
File.exists? lockfile_path
|
23
|
+
end
|
24
|
+
def lock
|
25
|
+
File.open(lockfile_path, 'w') { |*| yield }
|
26
|
+
ensure
|
27
|
+
File.unlink lockfile_path
|
28
|
+
end
|
29
|
+
|
30
|
+
def synchronize
|
31
|
+
current_thread = Thread.current
|
32
|
+
|
33
|
+
while locked?
|
34
|
+
watch(lockfile_path, :delete) { |*| current_thread.run }
|
35
|
+
current_thread.sleep
|
36
|
+
end
|
37
|
+
|
38
|
+
lock { yield }
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
data/test/complex.xbel
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<!DOCTYPE xbel PUBLIC "+//IDN python.org//DTD XML Bookmark Exchange
|
3
|
+
Language 1.0//EN//XML"
|
4
|
+
"http://www.python.org/topics/xml/dtds/xbel-1.0.dtd">
|
5
|
+
<xbel version="1.0">
|
6
|
+
<title>Some of David's Bookmarks</title>
|
7
|
+
|
8
|
+
<folder>
|
9
|
+
<title>HTTP Clients</title>
|
10
|
+
|
11
|
+
<bookmark href="http://www.netscape.com/download/" id="bookmark-1">
|
12
|
+
<title>Netscape</title>
|
13
|
+
|
14
|
+
<desc>Netscape 6.2 is the latest update to the Internet
|
15
|
+
browsing, email and instant messagin software suite from
|
16
|
+
Netscape.</desc>
|
17
|
+
</bookmark>
|
18
|
+
|
19
|
+
<bookmark href="http://www.opera.com/">
|
20
|
+
<title>Opera</title>
|
21
|
+
|
22
|
+
<desc>Opera -- Simply the Best Internet Experience</desc>
|
23
|
+
</bookmark>
|
24
|
+
|
25
|
+
<alias ref="bookmark-5"></alias>
|
26
|
+
|
27
|
+
<bookmark href="http://www.microsoft.com/ie/">
|
28
|
+
<title>Microsoft Internet Explorer</title>
|
29
|
+
|
30
|
+
<desc>Internet Explorer 6 sets a new standard in privacy,
|
31
|
+
reliability, and flexibility. Come see how Internet Explorer
|
32
|
+
is leading the way on the Web.</desc>
|
33
|
+
</bookmark>
|
34
|
+
|
35
|
+
<bookmark href="http://lynx.browser.org/">
|
36
|
+
<title>Lynx</title>
|
37
|
+
|
38
|
+
<desc>Lynx is a fully-featured World Wide Web (WWW) client
|
39
|
+
for users running cursor-addressable, character-cell display
|
40
|
+
devices (e.g., vt100 terminals, vt100 emulators running on
|
41
|
+
PCs or Macs, or any other character-cell display). It will
|
42
|
+
display Hypertext Markup Language (HTML) documents containing
|
43
|
+
links to files on the local system, as well as files on
|
44
|
+
remote systems running http, gopher, ftp, wais, nntp, finger,
|
45
|
+
or cso/ph/qi servers, and services accessible via logins to
|
46
|
+
telnet, tn3270 or rlogin accounts. Current versions of Lynx
|
47
|
+
run on Unix, VMS, Windows95/NT, 386DOS and OS/2 EMX.</desc>
|
48
|
+
</bookmark>
|
49
|
+
|
50
|
+
<bookmark href="http://www.w3.org/Amaya/" id="bookmark-5">
|
51
|
+
<title>Amaya</title>
|
52
|
+
|
53
|
+
<desc>Amaya is a browser/authoring tool that allows you to
|
54
|
+
publish documents on the Web. It is used to demonstrate and
|
55
|
+
test many of the new developments in Web protocols and data
|
56
|
+
formats. Given the very fast moving nature of Web technology,
|
57
|
+
Amaya has a central role to play. It is versatile and
|
58
|
+
extensible and is available on both Unix and Windows '95/NT
|
59
|
+
platforms.</desc>
|
60
|
+
</bookmark>
|
61
|
+
|
62
|
+
<alias ref="bookmark-1"></alias>
|
63
|
+
|
64
|
+
</folder>
|
65
|
+
|
66
|
+
<folder>
|
67
|
+
<title>Extensible Markup Language (XML)</title>
|
68
|
+
|
69
|
+
<bookmark
|
70
|
+
href="http://www.sciam.com/1999/0599issue/0599bosak.html">
|
71
|
+
<title>Scientific American: Feature Article: XML and the
|
72
|
+
Second Generation Web: May 1999</title>
|
73
|
+
|
74
|
+
<desc>The combination of hypertext and a global Internet
|
75
|
+
started a revolution. A new ingredient, XML, is poised to
|
76
|
+
finish the job. by Jon Bosak and Tim Bray</desc>
|
77
|
+
|
78
|
+
</bookmark>
|
79
|
+
|
80
|
+
<bookmark
|
81
|
+
href="http://www.sciam.com/2001/0501issue/0501berners-lee.html">
|
82
|
+
|
83
|
+
<title>Scientific American: Feature Article: The Semantic
|
84
|
+
Web: May 2001</title>
|
85
|
+
|
86
|
+
<desc>A new form of Web content that is meaningful to
|
87
|
+
computers will unleash a revolution of new possibilities . by
|
88
|
+
TIM BERNERS-LEE, JAMES HENDLER and ORA LASSILA</desc>
|
89
|
+
</bookmark>
|
90
|
+
|
91
|
+
<bookmark href="http://www.w3.org/XML/1999/XML-in-10-points">
|
92
|
+
|
93
|
+
<title>XML in 10 Points</title>
|
94
|
+
</bookmark>
|
95
|
+
|
96
|
+
<folder>
|
97
|
+
<title>Building XML Documents</title>
|
98
|
+
|
99
|
+
<bookmark
|
100
|
+
href="http://www.webreview.com/2000/08_04/webauthors/08_04_00_4.shtml">
|
101
|
+
|
102
|
+
<title>Well-Formed XML Documents (webreview.com)</title>
|
103
|
+
|
104
|
+
<desc>Still trying to tame the XML beast? Begin with this
|
105
|
+
tutorial that will show you in clear terms how to build a
|
106
|
+
simple XML document that is well-formed and valid.</desc>
|
107
|
+
</bookmark>
|
108
|
+
</folder>
|
109
|
+
|
110
|
+
<folder>
|
111
|
+
<title>RSS</title>
|
112
|
+
|
113
|
+
<bookmark
|
114
|
+
href="http://www.webreference.com/authoring/languages/xml/rss/intro/">
|
115
|
+
|
116
|
+
<title>Introduction to RSS - WebReference.com</title>
|
117
|
+
|
118
|
+
<desc>Rich Site Summary (RSS) is a lightweight XML format
|
119
|
+
designed for sharing headlines and other Web
|
120
|
+
content.</desc>
|
121
|
+
</bookmark>
|
122
|
+
|
123
|
+
<bookmark
|
124
|
+
href="http://www.WebReview.com/1999/10_29/webauthors/10_29_99_2a.shtml">
|
125
|
+
|
126
|
+
<title>WebReview.com: RSS Delivers the XML Promise</title>
|
127
|
+
|
128
|
+
<desc>RSS is a content syndication format that uses the
|
129
|
+
power of XML to share data over the Internet.</desc>
|
130
|
+
</bookmark>
|
131
|
+
</folder>
|
132
|
+
|
133
|
+
<folder>
|
134
|
+
<title>Extensible Stylesheet Language (XSL)</title>
|
135
|
+
|
136
|
+
<bookmark
|
137
|
+
href="http://www.webreview.com/2001/08_03/developers/index01.shtml">
|
138
|
+
|
139
|
+
<title>WebReview.com: August 3, 2001: Introduction to
|
140
|
+
XSLT</title>
|
141
|
+
|
142
|
+
<desc>An introduction to XSLT</desc>
|
143
|
+
</bookmark>
|
144
|
+
</folder>
|
145
|
+
|
146
|
+
<folder>
|
147
|
+
<title>Recommended Books</title>
|
148
|
+
|
149
|
+
<bookmark href="http://www.oreilly.com/catalog/learnxml/">
|
150
|
+
<title>Learning XML : (Guide to) Creating Self-Describing
|
151
|
+
Data</title>
|
152
|
+
|
153
|
+
<desc>Eric T. Ray, (O'Reilly)</desc>
|
154
|
+
</bookmark>
|
155
|
+
|
156
|
+
<bookmark
|
157
|
+
href="http://www.amazon.com/exec/obidos/ASIN/0789725045/">
|
158
|
+
<title>XML By Example</title>
|
159
|
+
|
160
|
+
<desc>Benoit Marchal</desc>
|
161
|
+
</bookmark>
|
162
|
+
</folder>
|
163
|
+
</folder>
|
164
|
+
</xbel>
|
165
|
+
|
data/test/test_xbel.rb
CHANGED
@@ -10,7 +10,7 @@ class TestXBEL < Test::Unit::TestCase
|
|
10
10
|
assert_equal [1, 0], xbel.version
|
11
11
|
end
|
12
12
|
should "have title 'Some of David's Bookmarks'" do
|
13
|
-
assert_equal %Q
|
13
|
+
assert_equal %Q{Some of David's Bookmarks}, xbel.title
|
14
14
|
end
|
15
15
|
should "return all root folders" do
|
16
16
|
results = xbel.root.folders
|
@@ -21,7 +21,9 @@ class TestXBEL < Test::Unit::TestCase
|
|
21
21
|
should "return all bookmarks of 'HTTP Clients'" do
|
22
22
|
results = xbel.root.folders.first.bookmarks
|
23
23
|
results = results.map { |entry| entry.title }
|
24
|
-
expect = [
|
24
|
+
expect = [
|
25
|
+
'Netscape', 'Opera', 'Microsoft Internet Explorer', 'Lynx', 'Amaya'
|
26
|
+
]
|
25
27
|
assert_equal expect, results
|
26
28
|
end
|
27
29
|
should "return aliased bookmark" do
|
data/xbel.gemspec
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{xbel}
|
8
|
+
s.version = "0.1.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Florian A\303\237mann"]
|
12
|
+
s.date = %q{2009-10-28}
|
13
|
+
s.description = %q{}
|
14
|
+
s.email = %q{florian.assmann@email.de}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.markdown"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
".watchr",
|
23
|
+
"LICENSE",
|
24
|
+
"README.markdown",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"lib/nokogiri/decorators/xbel.rb",
|
28
|
+
"lib/nokogiri/decorators/xbel/alias.rb",
|
29
|
+
"lib/nokogiri/decorators/xbel/bookmark.rb",
|
30
|
+
"lib/nokogiri/decorators/xbel/folder.rb",
|
31
|
+
"lib/nokogiri/decorators/xbel/seperator.rb",
|
32
|
+
"lib/xbel.rb",
|
33
|
+
"lib/xbel/writer.rb",
|
34
|
+
"test/complex.xbel",
|
35
|
+
"test/helper.rb",
|
36
|
+
"test/test_xbel.rb",
|
37
|
+
"xbel.gemspec"
|
38
|
+
]
|
39
|
+
s.homepage = %q{http://xbel.monkey-patch.me}
|
40
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
41
|
+
s.require_paths = ["lib"]
|
42
|
+
s.rubygems_version = %q{1.3.5}
|
43
|
+
s.summary = %q{Ruby API for XBEL based on Nokogiri and Watchr.}
|
44
|
+
s.test_files = [
|
45
|
+
"test/helper.rb",
|
46
|
+
"test/test_xbel.rb"
|
47
|
+
]
|
48
|
+
|
49
|
+
if s.respond_to? :specification_version then
|
50
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
51
|
+
s.specification_version = 3
|
52
|
+
|
53
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
54
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
55
|
+
s.add_runtime_dependency(%q<watchr>, [">= 0"])
|
56
|
+
s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
|
57
|
+
else
|
58
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
59
|
+
s.add_dependency(%q<watchr>, [">= 0"])
|
60
|
+
s.add_dependency(%q<nokogiri>, [">= 0"])
|
61
|
+
end
|
62
|
+
else
|
63
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
64
|
+
s.add_dependency(%q<watchr>, [">= 0"])
|
65
|
+
s.add_dependency(%q<nokogiri>, [">= 0"])
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
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.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Florian A\xC3\x9Fmann"
|
@@ -50,19 +50,28 @@ extensions: []
|
|
50
50
|
|
51
51
|
extra_rdoc_files:
|
52
52
|
- LICENSE
|
53
|
-
- README.
|
53
|
+
- README.markdown
|
54
54
|
files:
|
55
55
|
- .document
|
56
56
|
- .gitignore
|
57
|
+
- .watchr
|
57
58
|
- LICENSE
|
58
|
-
- README.
|
59
|
+
- README.markdown
|
59
60
|
- Rakefile
|
60
61
|
- VERSION
|
62
|
+
- lib/nokogiri/decorators/xbel.rb
|
63
|
+
- lib/nokogiri/decorators/xbel/alias.rb
|
64
|
+
- lib/nokogiri/decorators/xbel/bookmark.rb
|
65
|
+
- lib/nokogiri/decorators/xbel/folder.rb
|
66
|
+
- lib/nokogiri/decorators/xbel/seperator.rb
|
61
67
|
- lib/xbel.rb
|
68
|
+
- lib/xbel/writer.rb
|
69
|
+
- test/complex.xbel
|
62
70
|
- test/helper.rb
|
63
71
|
- test/test_xbel.rb
|
72
|
+
- xbel.gemspec
|
64
73
|
has_rdoc: true
|
65
|
-
homepage: http://
|
74
|
+
homepage: http://xbel.monkey-patch.me
|
66
75
|
licenses: []
|
67
76
|
|
68
77
|
post_install_message:
|
data/README.rdoc
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
= xbel
|
2
|
-
|
3
|
-
Description goes here.
|
4
|
-
|
5
|
-
== Note on Patches/Pull Requests
|
6
|
-
|
7
|
-
* Fork the project.
|
8
|
-
* Make your feature addition or bug fix.
|
9
|
-
* Add tests for it. This is important so I don't break it in a
|
10
|
-
future version unintentionally.
|
11
|
-
* Commit, do not mess with rakefile, version, or history.
|
12
|
-
(if you want to have your own version, that is fine but
|
13
|
-
bump version in a commit by itself I can ignore when I pull)
|
14
|
-
* Send me a pull request. Bonus points for topic branches.
|
15
|
-
|
16
|
-
== Copyright
|
17
|
-
|
18
|
-
Copyright (c) 2009 Florian Aßmann. See LICENSE for details.
|