microformats 4.0.6 → 4.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6227d8558099bebeb657934debc897fab6c3c14a
4
- data.tar.gz: a330025f850142e19df0d6b27f8921713fcccad2
3
+ metadata.gz: f29e94e3eee963e0c2fc2beb186bbe65573590ae
4
+ data.tar.gz: 3197d92343b82c60f8f99daeebbaaf77d20a6763
5
5
  SHA512:
6
- metadata.gz: c1e7f820dcfd61e727e41bc0d2f670b20ba19893ec75a70a37185d9cf657f52dd6d98cccf09790964edb23ca962a1e715f37a9a4a647badbb5818f45b7e31aae
7
- data.tar.gz: 8c18dbe60bc099cfd3a8a455a9b2c7060e9c9b1d18e879fc1b33ab1349bd4772ac680b63cc23c12a0bc1a86631ca2d91b010933f2761e09c5f3b636f1209dc49
6
+ metadata.gz: c0be09ac2f32fe2c1a5ae72c49c92aacf3de6f4c4a2ca62cadbca0d80aec86733cb8020836a873aad7020981ff7628a6884a0b671a63732e83caec71bec31167
7
+ data.tar.gz: dd565474811b712d5c15e792ee47be67dd3006cb8712e7595367ece6910daae09da33fa0af711ea76cb2275c60057d19f6cc3c616569be62ad20b74c9ef1d38c
data/README.md CHANGED
@@ -34,9 +34,9 @@ Not Implemented:
34
34
 
35
35
  ## Current Version
36
36
 
37
- 4.0.6
37
+ 4.0.7
38
38
 
39
- ![Version 4.0.6](https://img.shields.io/badge/VERSION-4.0.6-green.svg)
39
+ ![Version 4.0.7](https://img.shields.io/badge/VERSION-4.0.7-green.svg)
40
40
 
41
41
 
42
42
  ## Requirements
@@ -6,6 +6,7 @@ module Microformats
6
6
  @duration_value = nil
7
7
  @date_value = nil
8
8
  @time_value = nil
9
+ @tz_value = nil
9
10
 
10
11
  @property_type = element_type
11
12
 
@@ -14,7 +15,7 @@ module Microformats
14
15
 
15
16
  parse_value_class_pattern(element)
16
17
 
17
- if @duration_value.nil? and @time_value.nil? and @date_value.nil?
18
+ if @duration_value.nil? and @time_value.nil? and @date_value.nil? and @tz_value.nil?
18
19
 
19
20
  value = nil
20
21
  if ['time', 'ins', 'del'].include? element.name and not element.attribute('datetime').nil?
@@ -31,16 +32,17 @@ module Microformats
31
32
 
32
33
  end
33
34
 
34
- if not @duration_value.nil?
35
+ if not @duration_value.nil?
35
36
  @duration_value
36
- elsif not @time_value.nil? and not @date_value.nil?
37
- @date_value + ' ' + @time_value
38
- elsif not @time_value.nil?
39
- @time_value
40
- elsif not @date_value.nil?
41
- @date_value
42
37
  else
43
- nil
38
+ result = nil
39
+ result = result.to_s + @date_value unless @date_value.nil?
40
+ unless @time_value.nil?
41
+ result = result.to_s + ' ' unless result.nil?
42
+ result = result.to_s + @time_value
43
+ end
44
+ result = result.to_s + @tz_value unless @tz_value.nil?
45
+ result
44
46
  end
45
47
  end
46
48
 
@@ -50,7 +52,7 @@ module Microformats
50
52
 
51
53
  def parse_element(element)
52
54
 
53
- if @duration_value.nil? or (@time_value.nil? and @date_value.nil?)
55
+ if @duration_value.nil? or (@time_value.nil? and @date_value.nil? and @tz_value.nil?)
54
56
  if value_title_classes(element).length >= 1
55
57
  value = element.attribute('title').value.strip
56
58
  elsif value_classes(element).length >= 1
@@ -84,31 +86,39 @@ module Microformats
84
86
  #TODO this still allows a lot of non correct values such as 39th day of the month, etc
85
87
  begin
86
88
  case data.strip
87
- when /^(\d{4}-[01]\d-[0-3]\d)[tT ]([0-2]\d:[0-5]\d(:[0-5]\d)?([zZ]|[-+][01]?\d:?[0-5]\d)?)$/
88
- @date_value = $1 if @date_value.nil?
89
- @time_value = $2.gsub(/z/, 'Z') if @time_value.nil?
90
- when /^(\d{4}-[01]\d-[0-3]\d)[tT ]([0-2]\d:[0-5]\d(:[0-5]\d)? ?[-+]\d\d)$/
89
+ when /^P\d*W$/
90
+ @duration_value = data if @duration_value.nil?
91
+
92
+ when /^P(\d+Y)?(\d+M)?(\d+D)?(T(\d+H)?(\d+M)?(\d+S)?)?$/
93
+ @duration_value = data if @duration_value.nil?
94
+
95
+ when /^(\d{4}-[01]\d-[0-3]\d)[tT ]([0-2]\d:[0-5]\d(:[0-5]\d)?)?([zZ]|[-+][01]?\d:?[0-5]\d)?$/
91
96
  @date_value = $1 if @date_value.nil?
92
97
  @time_value = $2 if @time_value.nil?
93
- when /^(\d{4}-[01]\d-[0-3]\d)[tT ]([0-2]\d:[0-5]\d:[0-5]\d ?[-+]\d\d):?(\d\d)$/
98
+ @tz_value = $4.gsub(/z/, 'Z') if @tz_value.nil?
99
+
100
+ when /^(\d{4}-[01]\d-[0-3]\d)[tT ]([0-2]\d:[0-5]\d(:[0-5]\d)?)( ?[-+]\d\d:?(\d\d)?)$/
94
101
  @date_value = $1 if @date_value.nil?
102
+ @time_value = $2 if @time_value.nil?
95
103
  if normalize
96
- @time_value = $2 + $3 if @time_value.nil?
104
+ @tz_value = $4.gsub(/z/, 'Z').gsub(/:/,'') if @tz_value.nil?
97
105
  else
98
- @time_value = $2 + ':' + $3 if @time_value.nil?
106
+ @tz_value = $4.gsub(/z/, 'Z') if @tz_value.nil?
99
107
  end
100
- when /^(\d{4}-[01]\d-[0-3]\d)[tT ]([0-2]\d:[0-5]\d)( ?[-+]\d\d:?\d\d)$/
108
+
109
+ when /^(\d{4}-[0-3]\d\d)[tT ]([0-2]\d:[0-5]\d(:[0-5]\d)?)?([zZ]|[-+][01]?\d:?[0-5]\d)?$/
101
110
  @date_value = $1 if @date_value.nil?
111
+ @time_value = $2 if @time_value.nil?
112
+ @tz_value = $4.gsub(/z/, 'Z') if @tz_value.nil?
113
+
114
+ when /^(\d{4}-[0-3]\d\d)[tT ]([0-2]\d:[0-5]\d(:[0-5]\d)?)( ?[-+]\d\d:?(\d\d)?)$/
115
+ @date_value = $1 if @date_value.nil?
116
+ @time_value = $2 if @time_value.nil?
102
117
  if normalize
103
- @time_value = $2 + $3.gsub(/:/,'') if @time_value.nil?
118
+ @tz_value = $4.gsub(/z/, 'Z').gsub(/:/,'') if @tz_value.nil?
104
119
  else
105
- @time_value = $2 + $3 if @time_value.nil?
120
+ @tz_value = $4.gsub(/z/, 'Z') if @tz_value.nil?
106
121
  end
107
- when /^P\d*W$/
108
- @duration_value = data if @duration_value.nil?
109
-
110
- when /^P(\d+Y)?(\d+M)?(\d+D)?(T(\d+H)?(\d+M)?(\d+S)?)?$/
111
- @duration_value = data if @duration_value.nil?
112
122
 
113
123
  when /^(\d{4})-([01]?\d)-([0-3]?\d)$/
114
124
  @date_value = DateTime.new($1.to_i, $2.to_i, $3.to_i).strftime('%F') if @date_value.nil?
@@ -119,22 +129,34 @@ module Microformats
119
129
  when /^(\d{4})-([01]?\d)$/
120
130
  @date_value = data if @date_value.nil?
121
131
 
122
- when /^[0-2]\d:[0-5]\d(:[0-5]\d)?([zZ]|[-+][01]\d:?\d\d)?$/
132
+ when /^([zZ]|[-+][01]?\d:?[0-5]\d)$/
123
133
  if normalize
124
- @time_value = data.gsub(/z/, 'Z').gsub(/([+-]\d\d):(\d\d)/, '\1\2') if @time_value.nil?
134
+ @tz_value = $1.gsub(/z/, 'Z').gsub(/:/,'') if @tz_value.nil?
125
135
  else
126
- @time_value = data.gsub(/z/, 'Z') if @time_value.nil?
136
+ @tz_value = $1.gsub(/z/, 'Z') if @tz_value.nil?
137
+ end
138
+
139
+ when /^([0-2]\d:[0-5]\d(:[0-5]\d)?)([zZ]|[-+][01]\d:?\d\d)?$/
140
+ @time_value = $1 if @time_value.nil?
141
+ if normalize
142
+ @tz_value = $3.gsub(/z/, 'Z').gsub(/:/,'') if @tz_value.nil?
143
+ else
144
+ @tz_value = $3.gsub(/z/, 'Z') if @tz_value.nil?
127
145
  end
128
146
 
129
147
  when /^[0-2]\d:[0-5]\d[zZ]?$/
130
148
  @time_value = Time.parse(data).strftime('%H:%M') if @time_value.nil?
131
- when /^([0-2]\d:[0-5]\d:[0-5]\d[-+][01]\d:?[0-5]\d)$/
149
+ @tz_value = 'Z'
150
+
151
+ when /^([0-2]\d:[0-5]\d:[0-5]\d)([-+][01]\d:?[0-5]\d)$/
132
152
  Time.parse(data).strftime('%T') #to make sure this time doesn't throw an error
133
153
  @time_value = $1 if @time_value.nil?
154
+ @tz_value = $2 if @tz_value.nil?
134
155
 
135
- when /^([0-2][0-0]:[0-5]\d[-+][01]\d:?[0-5]\d)$/
156
+ when /^([0-2][0-0]:[0-5]\d)([-+][01]\d:?[0-5]\d)$/
136
157
  Time.parse(data).strftime('%H:%M') #to make sure this time doesn't throw an error
137
158
  @time_value = $1 if @time_value.nil?
159
+ @tz_value = $2 if @tz_value.nil?
138
160
 
139
161
  when /^([01]?\d):?([0-5]\d)?p\.?m\.?$/i
140
162
  @time_value = ($1.to_i + 12).to_s + ':' + $2.to_s.rjust(2,'0') if @time_value.nil?
@@ -1,3 +1,3 @@
1
1
  module Microformats
2
- VERSION = "4.0.6"
2
+ VERSION = "4.0.7"
3
3
  end
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <base href="http://example.org/">
4
+ <body>
5
+ <div class="h-event">
6
+ <span class="e-summary">HomebrewWebsiteClub Berlin</span> will be next on
7
+ <span class="dt-start">
8
+ <span class="value">2017-05-31</span>, from
9
+ <span class="value">19:00</span> (UTC<span class="value">+02:00</span>)
10
+ </span> to <span class="dt-end">21:00</span>.
11
+ </div>
12
+ </body>
13
+ </html>
@@ -0,0 +1,30 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "type": [
5
+ "h-event"
6
+ ],
7
+ "properties": {
8
+ "summary": [
9
+ {
10
+ "value": "HomebrewWebsiteClub Berlin",
11
+ "html": "HomebrewWebsiteClub Berlin"
12
+ }
13
+ ],
14
+ "start": [
15
+ "2017-05-31 19:00+0200"
16
+ ],
17
+ "end": [
18
+ "2017-05-31 21:00"
19
+ ],
20
+ "name": [
21
+ "HomebrewWebsiteClub Berlin will be next on \n \n 2017-05-31, from\n 19:00 (UTC+02:00)\n to 21:00."
22
+ ]
23
+ }
24
+ }
25
+ ],
26
+ "rels": {
27
+ },
28
+ "rel-urls": {
29
+ }
30
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: microformats
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.6
4
+ version: 4.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Becker
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-05-24 00:00:00.000000000 Z
13
+ date: 2017-06-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
@@ -191,6 +191,8 @@ files:
191
191
  - spec/support/lib/edge_cases/blank_value.js
192
192
  - spec/support/lib/edge_cases/relative.html
193
193
  - spec/support/lib/edge_cases/relative.js
194
+ - spec/support/lib/edge_cases/vcp-dates.html
195
+ - spec/support/lib/edge_cases/vcp-dates.js
194
196
  - spec/support/lib/microformats/blank_href.html
195
197
  - spec/support/lib/microformats/blank_href.js
196
198
  - spec/support/lib/microformats/implied_property/name-fail.html
@@ -553,6 +555,8 @@ test_files:
553
555
  - spec/support/lib/edge_cases/blank_value.js
554
556
  - spec/support/lib/edge_cases/relative.html
555
557
  - spec/support/lib/edge_cases/relative.js
558
+ - spec/support/lib/edge_cases/vcp-dates.html
559
+ - spec/support/lib/edge_cases/vcp-dates.js
556
560
  - spec/support/lib/microformats/blank_href.html
557
561
  - spec/support/lib/microformats/blank_href.js
558
562
  - spec/support/lib/microformats/implied_property/name-fail.html