bookmarks 0.1.1 → 0.2.0

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
  SHA1:
3
- metadata.gz: e1acd471211b5b01a6e945024f0e10b02cc77806
4
- data.tar.gz: 5185cbdecb61e615dd7a60057f501da7dce2deb4
3
+ metadata.gz: 3245aeebe26e88b088bd079680022e2c07a12d85
4
+ data.tar.gz: a5bd9fd6a42e87f1dc9b7a491ff3f3aff0092480
5
5
  SHA512:
6
- metadata.gz: e569b43275e5bd2164831c2d5ef903941733a2afcfd329a99c9019be5b84ee79d3b9f69468debfa3736cf88b4161d9e996c455dc4741f4ea54fd8839e8cbab52
7
- data.tar.gz: 39f01ad2fb07b0fba6429a193db8310bbc21a860e058f6ea5483aa95996b91f7eff01b387e06016ca17e6f11c3360944fbd7de14619273e1f2616eb40a163a39
6
+ metadata.gz: b8732c82641f01aeb904e5b663c486d6aaab591db2567f3361bcc2672456be031752db176c08efef73894b91d2066d3e19754afee7d6c573ffe74d8c86e5f1bc
7
+ data.tar.gz: a88867e39a47bc0d48a17999ec69ad862eca64ffcb396b80817ef25564a23215f7aec5cb51dfe9ffa5bb878fb78a67d853326f793a1ccbb540bfa68c584deb2c
data/Changelog.markdown CHANGED
@@ -1,3 +1,9 @@
1
+ version 0.2.0 (2013-07-25)
2
+ ===========================
3
+
4
+ * Support for H3 tags.
5
+
6
+
1
7
  version 0.1.1 (2013-07-09)
2
8
  ===========================
3
9
 
data/Gemfile CHANGED
@@ -3,4 +3,3 @@ source "https://rubygems.org"
3
3
  gemspec
4
4
 
5
5
  gem 'rake'
6
- gem 'rspec'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bookmarks (0.1.0)
4
+ bookmarks (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -9,11 +9,11 @@ GEM
9
9
  coco (0.7.1)
10
10
  diff-lcs (1.2.4)
11
11
  rake (10.1.0)
12
- rspec (2.14.0)
12
+ rspec (2.14.1)
13
13
  rspec-core (~> 2.14.0)
14
14
  rspec-expectations (~> 2.14.0)
15
15
  rspec-mocks (~> 2.14.0)
16
- rspec-core (2.14.1)
16
+ rspec-core (2.14.4)
17
17
  rspec-expectations (2.14.0)
18
18
  diff-lcs (>= 1.1.3, < 2.0)
19
19
  rspec-mocks (2.14.1)
data/README.markdown CHANGED
@@ -5,7 +5,8 @@ Description
5
5
  -----------
6
6
 
7
7
  Bookmarks is a library to parse or build a file of bookmarks, currently
8
- only files in netscape format, like the ones exported by Delicious.
8
+ only files in netscape format, like the ones exported by Delicious or
9
+ Firefox.
9
10
 
10
11
  Install
11
12
  -------------------------
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -20,6 +20,7 @@ module Bookmarks
20
20
  @document = ""
21
21
  @bookmarks = []
22
22
  @total = 0
23
+ @h3_tags = []
23
24
  end
24
25
 
25
26
  # Public: Returns the Symbol format of the document. Currently
@@ -75,14 +76,34 @@ module Bookmarks
75
76
  # line - String.
76
77
  #
77
78
  # Returns nothing.
79
+ # TODO This should have its own parser class.
78
80
  def parse_a_bookmark line
79
- if line =~ /^<DT>/
81
+ line = line.strip
82
+ if line =~ /^<DT><H3>/
83
+ @h3_tags << h3_tags(line)
84
+ elsif line =~ /^<\/DL>/
85
+ @h3_tags.pop
86
+ elsif line =~ /<DT><A/
80
87
  @bookmarks << NetscapeBookmark.from_string(line)
88
+ if (not @h3_tags.empty?) && (not @bookmarks.last.nil?)
89
+ @bookmarks.last.add_tags @h3_tags
90
+ end
81
91
  elsif line =~ /^<DD>/
82
92
  @bookmarks.last.description = line[4..-1].chomp
83
93
  end
84
94
  end
85
95
 
96
+ # Get the h3's content of a line. H3 could be use as a tag in
97
+ # a netscape bookmark's file.
98
+ #
99
+ # line - String.
100
+ #
101
+ # Returns String h3 content or empty string.
102
+ def h3_tags line
103
+ md = /<H3>(.*?)<\/H3>/.match(line)
104
+ md ? md[1] : ""
105
+ end
106
+
86
107
 
87
108
  # First part of a bookmark's file in netscape format.
88
109
  FIRST_PART = <<CODE
@@ -3,6 +3,8 @@
3
3
  module Bookmarks
4
4
 
5
5
  # Public: A single bookmark in netscape format.
6
+ #
7
+ # REVIEW Should we extract some of the class methods?
6
8
  class NetscapeBookmark
7
9
 
8
10
  # Public: Init a new NetscapeBookmark.
@@ -20,23 +22,18 @@ module Bookmarks
20
22
  @description = description
21
23
  end
22
24
 
23
- # Public: Initialize a new NetscapeBookmark object from a line from
24
- # a bookmarks file.
25
+ # Public: Add some tags to this bookmark.
25
26
  #
26
- # line - String line from a bookmarks file.
27
+ # list - An Array of String tags.
27
28
  #
28
- # Returns a new NetscapeBookmark object.
29
- def self.from_string line
30
- url = /HREF="(.*?)"/.match(line)[1]
31
- title = /HREF=.*>(.*)<\/A>$/.match(line)[1]
32
- date = /ADD_DATE="(.*?)"/.match(line)[1]
33
- date = Time.at(date.to_i).to_s
34
- tags = /TAGS="(.*?)"/.match(line)[1]
35
- title = prettify_title title, url
36
- new url: url, title: title, date: date, tags: tags
29
+ # Returns nothing.
30
+ def add_tags list
31
+ unless @tags.empty?
32
+ @tags += ','
33
+ end
34
+ @tags += list.join(',')
37
35
  end
38
36
 
39
-
40
37
  # Public: Set/get the String url.
41
38
  attr_accessor :url
42
39
 
@@ -65,6 +62,32 @@ module Bookmarks
65
62
  end
66
63
  end
67
64
 
65
+ # Public: Initialize a new NetscapeBookmark object from a line from
66
+ # a bookmarks file.
67
+ #
68
+ # line - String line from a bookmarks file.
69
+ #
70
+ # Returns a new NetscapeBookmark object.
71
+ def self.from_string line
72
+ url = /HREF="(.*?)"/.match(line)[1]
73
+ title = /HREF=.*>(.*)<\/A>$/.match(line)[1]
74
+ date = /ADD_DATE="(.*?)"/.match(line)[1]
75
+ date = Time.at(date.to_i).to_s
76
+ tags = self.extract_tags(line)
77
+ title = prettify_title title, url
78
+ new url: url, title: title, date: date, tags: tags
79
+ end
80
+
81
+ # Public: Get tags from a line from a bookmarks file.
82
+ #
83
+ # line - String line from a bookmarks file.
84
+ #
85
+ # Returns a String with tags or an empty string.
86
+ def self.extract_tags line
87
+ md = /TAGS="(.*?)"/.match(line)
88
+ md ? md[1] : ""
89
+ end
90
+
68
91
  # In some case (which?) Delicious miss the title and we have a crapy
69
92
  # 'None' instead of the original title. Bad news is the original title
70
93
  # is lost. And there is no good news :) In such case, we build a new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bookmarks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xavier Nayrac
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-09 00:00:00.000000000 Z
11
+ date: 2013-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec