ruby-vobject 0.1.0 → 1.0.1

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.
Files changed (44) hide show
  1. checksums.yaml +5 -5
  2. data/.hound.yml +3 -0
  3. data/.rubocop.tb.yml +650 -0
  4. data/.rubocop.yml +1077 -0
  5. data/.travis.yml +16 -3
  6. data/Gemfile +1 -1
  7. data/LICENSE.txt +21 -17
  8. data/README.adoc +142 -0
  9. data/Rakefile +1 -1
  10. data/lib/c.rb +173 -0
  11. data/lib/error.rb +19 -0
  12. data/lib/vcalendar.rb +77 -0
  13. data/lib/vcard.rb +67 -0
  14. data/lib/vobject.rb +13 -170
  15. data/lib/vobject/component.rb +87 -36
  16. data/lib/vobject/parameter.rb +116 -0
  17. data/lib/vobject/parametervalue.rb +26 -0
  18. data/lib/vobject/property.rb +134 -55
  19. data/lib/vobject/propertyvalue.rb +46 -0
  20. data/lib/vobject/vcalendar/component.rb +106 -0
  21. data/lib/vobject/vcalendar/grammar.rb +595 -0
  22. data/lib/vobject/vcalendar/paramcheck.rb +259 -0
  23. data/lib/vobject/vcalendar/propertyparent.rb +98 -0
  24. data/lib/vobject/vcalendar/propertyvalue.rb +606 -0
  25. data/lib/vobject/vcalendar/typegrammars.rb +605 -0
  26. data/lib/vobject/vcard/v3_0/component.rb +40 -0
  27. data/lib/vobject/vcard/v3_0/grammar.rb +176 -0
  28. data/lib/vobject/vcard/v3_0/paramcheck.rb +111 -0
  29. data/lib/vobject/vcard/v3_0/parameter.rb +17 -0
  30. data/lib/vobject/vcard/v3_0/property.rb +18 -0
  31. data/lib/vobject/vcard/v3_0/propertyvalue.rb +401 -0
  32. data/lib/vobject/vcard/v3_0/typegrammars.rb +426 -0
  33. data/lib/vobject/vcard/v4_0/component.rb +40 -0
  34. data/lib/vobject/vcard/v4_0/grammar.rb +225 -0
  35. data/lib/vobject/vcard/v4_0/paramcheck.rb +270 -0
  36. data/lib/vobject/vcard/v4_0/parameter.rb +18 -0
  37. data/lib/vobject/vcard/v4_0/property.rb +63 -0
  38. data/lib/vobject/vcard/v4_0/propertyvalue.rb +404 -0
  39. data/lib/vobject/vcard/v4_0/typegrammars.rb +540 -0
  40. data/lib/vobject/vcard/version.rb +3 -0
  41. data/lib/vobject/version.rb +1 -1
  42. data/ruby-vobject.gemspec +19 -11
  43. metadata +93 -17
  44. data/README.md +0 -94
@@ -0,0 +1,3 @@
1
+ module Vobject
2
+ VERSION = "0.2.0".freeze
3
+ end
@@ -1,3 +1,3 @@
1
1
  module Vobject
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.1".freeze
3
3
  end
@@ -1,28 +1,36 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
2
+
3
+ lib = File.expand_path("../lib", __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'vobject/version'
5
+ require "vobject/version"
5
6
 
6
7
  Gem::Specification.new do |spec|
7
8
  spec.name = "ruby-vobject"
8
9
  spec.version = Vobject::VERSION
9
- spec.authors = ["Peter Tam"]
10
- spec.email = ["peter.tam@ribose.com"]
10
+ spec.authors = ["Peter Tam", "Nick Nicholas"]
11
+ spec.email = ["peter.tam@ribose.com", "opoudjis@gmail.com"]
12
+ #spec.platform = Gem::Platform.local
13
+ spec.require_paths = ["lib"]
11
14
 
12
- spec.summary = %q{The main purpose of the gem is to parse vobject formatted text into a ruby
15
+ spec.summary = "Parse iCalendar or vCard into a ruby hash."
16
+ spec.description = "The main purpose of the gem is to parse vobject formatted text into a ruby
13
17
  hash format. Currently there are two possiblities of vobjects, namely
14
18
  iCalendar (https://tools.ietf.org/html/rfc5545) and vCard
15
- (https://tools.ietf.org/html/rfc6350).}
16
- spec.homepage = "https://www.ribose.com"
17
- spec.license = "MIT"
19
+ (https://tools.ietf.org/html/rfc6350)."
20
+ spec.homepage = "https://github.com/riboseinc/ruby-vobject"
21
+ spec.license = "BSD-2-Clause"
18
22
 
19
23
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
- spec.bindir = "exe"
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.bindir = "bin"
25
+ #spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
26
  spec.require_paths = ["lib"]
23
27
 
24
- spec.add_development_dependency "bundler", "~> 1.12"
28
+ spec.add_development_dependency "bundler", "~> 2.1"
25
29
  spec.add_development_dependency "rake", "~> 10.0"
26
30
  spec.add_development_dependency "rspec", "~> 3.0"
27
31
  spec.add_development_dependency "rspec-json_expectations"
32
+ spec.add_development_dependency "byebug"
33
+
34
+ spec.add_runtime_dependency "rsec", "~> 0.4"
35
+ spec.add_runtime_dependency "tzinfo"
28
36
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-vobject
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Tam
8
- autorequire:
9
- bindir: exe
8
+ - Nick Nicholas
9
+ autorequire:
10
+ bindir: bin
10
11
  cert_chain: []
11
- date: 2017-07-01 00:00:00.000000000 Z
12
+ date: 2020-07-10 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -16,14 +17,14 @@ dependencies:
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: '1.12'
20
+ version: '2.1'
20
21
  type: :development
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: '1.12'
27
+ version: '2.1'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: rake
29
30
  requirement: !ruby/object:Gem::Requirement
@@ -66,33 +67,111 @@ dependencies:
66
67
  - - ">="
67
68
  - !ruby/object:Gem::Version
68
69
  version: '0'
69
- description:
70
+ - !ruby/object:Gem::Dependency
71
+ name: byebug
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rsec
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '0.4'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '0.4'
98
+ - !ruby/object:Gem::Dependency
99
+ name: tzinfo
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ description: |-
113
+ The main purpose of the gem is to parse vobject formatted text into a ruby
114
+ hash format. Currently there are two possiblities of vobjects, namely
115
+ iCalendar (https://tools.ietf.org/html/rfc5545) and vCard
116
+ (https://tools.ietf.org/html/rfc6350).
70
117
  email:
71
118
  - peter.tam@ribose.com
119
+ - opoudjis@gmail.com
72
120
  executables: []
73
121
  extensions: []
74
122
  extra_rdoc_files: []
75
123
  files:
76
124
  - ".gitignore"
125
+ - ".hound.yml"
77
126
  - ".rspec"
127
+ - ".rubocop.tb.yml"
128
+ - ".rubocop.yml"
78
129
  - ".travis.yml"
79
130
  - CODE_OF_CONDUCT.md
80
131
  - Gemfile
81
132
  - LICENSE.txt
82
- - README.md
133
+ - README.adoc
83
134
  - Rakefile
84
135
  - bin/console
85
136
  - bin/setup
137
+ - lib/c.rb
138
+ - lib/error.rb
139
+ - lib/vcalendar.rb
140
+ - lib/vcard.rb
86
141
  - lib/vobject.rb
87
142
  - lib/vobject/component.rb
143
+ - lib/vobject/parameter.rb
144
+ - lib/vobject/parametervalue.rb
88
145
  - lib/vobject/property.rb
146
+ - lib/vobject/propertyvalue.rb
147
+ - lib/vobject/vcalendar/component.rb
148
+ - lib/vobject/vcalendar/grammar.rb
149
+ - lib/vobject/vcalendar/paramcheck.rb
150
+ - lib/vobject/vcalendar/propertyparent.rb
151
+ - lib/vobject/vcalendar/propertyvalue.rb
152
+ - lib/vobject/vcalendar/typegrammars.rb
153
+ - lib/vobject/vcard/v3_0/component.rb
154
+ - lib/vobject/vcard/v3_0/grammar.rb
155
+ - lib/vobject/vcard/v3_0/paramcheck.rb
156
+ - lib/vobject/vcard/v3_0/parameter.rb
157
+ - lib/vobject/vcard/v3_0/property.rb
158
+ - lib/vobject/vcard/v3_0/propertyvalue.rb
159
+ - lib/vobject/vcard/v3_0/typegrammars.rb
160
+ - lib/vobject/vcard/v4_0/component.rb
161
+ - lib/vobject/vcard/v4_0/grammar.rb
162
+ - lib/vobject/vcard/v4_0/paramcheck.rb
163
+ - lib/vobject/vcard/v4_0/parameter.rb
164
+ - lib/vobject/vcard/v4_0/property.rb
165
+ - lib/vobject/vcard/v4_0/propertyvalue.rb
166
+ - lib/vobject/vcard/v4_0/typegrammars.rb
167
+ - lib/vobject/vcard/version.rb
89
168
  - lib/vobject/version.rb
90
169
  - ruby-vobject.gemspec
91
- homepage: https://www.ribose.com
170
+ homepage: https://github.com/riboseinc/ruby-vobject
92
171
  licenses:
93
- - MIT
172
+ - BSD-2-Clause
94
173
  metadata: {}
95
- post_install_message:
174
+ post_install_message:
96
175
  rdoc_options: []
97
176
  require_paths:
98
177
  - lib
@@ -107,11 +186,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
186
  - !ruby/object:Gem::Version
108
187
  version: '0'
109
188
  requirements: []
110
- rubyforge_project:
111
- rubygems_version: 2.5.2
112
- signing_key:
189
+ rubygems_version: 3.0.3
190
+ signing_key:
113
191
  specification_version: 4
114
- summary: The main purpose of the gem is to parse vobject formatted text into a ruby
115
- hash format. Currently there are two possiblities of vobjects, namely iCalendar
116
- (https://tools.ietf.org/html/rfc5545) and vCard (https://tools.ietf.org/html/rfc6350).
192
+ summary: Parse iCalendar or vCard into a ruby hash.
117
193
  test_files: []
data/README.md DELETED
@@ -1,94 +0,0 @@
1
- # Vobject
2
-
3
- The main purpose of the gem is to parse vobject formatted text into a ruby
4
- hash format. Currently there are two possiblities of vobjects, namely
5
- iCalendar (https://tools.ietf.org/html/rfc5545) and vCard
6
- (https://tools.ietf.org/html/rfc6350). There are only a few differences
7
- between the iCalendar and vCard format. Only vCard supports grouping
8
- feature, and currently vCard does not have any sub-object supported.
9
-
10
- ## Installation
11
-
12
- Add this line to your application's Gemfile:
13
-
14
- ```ruby
15
- gem 'ruby-vobject'
16
- ```
17
-
18
- And then execute:
19
-
20
- $ bundle
21
-
22
- Or install it yourself as:
23
-
24
- $ gem install ruby-vobject
25
-
26
- ## Usage
27
-
28
- Vobject.parse("<ics/vcf file>")
29
-
30
- Example:
31
-
32
- A sample ics file (in spec/examples/example2.ics):
33
-
34
- ```
35
- BEGIN:VCALENDAR
36
- VERSION:2.0
37
- PRODID:-//ABC Corporation//NONSGML My Product//EN
38
- BEGIN:VTODO
39
- DTSTAMP:19980130T134500Z
40
- SEQUENCE:2
41
- UID:uid4@example.com
42
- ORGANIZER:mailto:unclesam@example.com
43
- ATTENDEE;PARTSTAT=ACCEPTED:mailto:jqpublic@example.com
44
- DUE:19980415T000000
45
- STATUS:NEEDS-ACTION
46
- SUMMARY:Submit Income Taxes
47
- BEGIN:VALARM
48
- ACTION:AUDIO
49
- TRIGGER:19980403T120000Z
50
- ATTACH;FMTTYPE=audio/basic:http://example.com/pub/audio-
51
- files/ssbanner.aud
52
- REPEAT:4
53
- DURATION:PT1H
54
- END:VALARM
55
- END:VTODO
56
- END:VCALENDAR
57
- ```
58
-
59
- Parse the ics file into Ruby hash format:
60
-
61
- ```ruby
62
- require 'vobject'
63
-
64
- ics = File.read "spec/examples/example2.ics"
65
- Vobject.parse(ics)
66
-
67
- => {:VCALENDAR=>[{:VERSION=>{:value=>"2.0"}}, {:PRODID=>{:value=>"-//ABC Corporation//NONSGML My Product//EN"}}, {:VTODO=>[{:DTSTAMP=>{:value=>"19980130T134500Z"}}, {:SEQUENCE=>{:value=>"2"}}, {:UID=>{:value=>"uid4@example.com"}}, {:ORGANIZER=>{:value=>"mailto:unclesam@example.com"}}, {:ATTENDEE=>{:params=>{:PARTSTAT=>"ACCEPTED"}, :value=>"mailto:jqpublic@example.com"}}, {:DUE=>{:value=>"19980415T000000"}}, {:STATUS=>{:value=>"NEEDS-ACTION"}}, {:SUMMARY=>{:value=>"Submit Income Taxes"}}, {:VALARM=>[{:ACTION=>{:value=>"AUDIO"}}, {:TRIGGER=>{:value=>"19980403T120000Z"}}, {:ATTACH=>{:params=>{:FMTTYPE=>"audio/basic"}, :value=>"http://example.com/pub/audio-files/ssbanner.aud"}}, {:REPEAT=>{:value=>"4"}}, {:DURATION=>{:value=>"PT1H"}}]}]}]}
68
- ```
69
-
70
- Running spec:
71
- bundle exec rspec
72
-
73
-
74
- ## Development
75
-
76
- Currently the parser is written by regular expression. However, it is
77
- hard to maintain. A better approach will be using some grammar parser
78
- library, such as treetop (https://rubygems.org/gems/treetop/versions/1.6.8).
79
-
80
- Some really simple specs have been written. Please make sure they still
81
- pass after migrating into the grammar parser approach. Also, some other
82
- specs such as some special characters as stated in RFC 5545 and 6350
83
- should be tested as well.
84
-
85
-
86
- ## Contributing
87
-
88
- Bug reports and pull requests are welcome on GitHub at https://github.com/riboseinc/ruby-vobject. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
89
-
90
-
91
- ## License
92
-
93
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
94
-