rfc3987 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/rfc3987.gemspec ADDED
@@ -0,0 +1,30 @@
1
+
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rfc3987/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'rfc3987'
8
+ spec.version = RFC3987::VERSION
9
+ spec.authors = ['kajisha']
10
+ spec.email = ['kajisha@gmail.com']
11
+
12
+ spec.summary = %q{}
13
+ spec.description = %q{}
14
+ spec.homepage = 'https://github.com/kajisha/rfc3987'
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = 'exe'
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ['lib']
23
+
24
+ spec.add_dependency 'treetop'
25
+
26
+ spec.add_development_dependency 'bundler'
27
+ spec.add_development_dependency 'rake'
28
+ spec.add_development_dependency 'rspec'
29
+ spec.add_development_dependency 'pry'
30
+ end
data/rfc3987.treetop ADDED
@@ -0,0 +1,196 @@
1
+ grammar RFC3987
2
+ rule IRI
3
+ scheme ':' ihier_part ( '?' iquery )? ( '#' ifragment )?
4
+ end
5
+
6
+ rule ihier_part
7
+ '//' iauthority ipath_abempty / ipath_absolute / ipath_rootless / ipath_empty
8
+ end
9
+
10
+ rule IRI_reference
11
+ IRI / irelative_ref
12
+ end
13
+
14
+ rule absolute_IRI
15
+ scheme ':' ihier_part ( '?' iquery )?
16
+ end
17
+
18
+ rule irelative_ref
19
+ irelative_part ( '?' iquery )? ( '#' ifragment )?
20
+ end
21
+
22
+ rule irelative_part
23
+ '//' iauthority ipath_abempty / ipath_absolute / ipath_noscheme / ipath_empty
24
+ end
25
+
26
+ rule iauthority
27
+ ( iuserinfo '@' )? ihost ( ':' port )?
28
+ end
29
+
30
+ rule iuserinfo
31
+ ( iunreserved / pct_encoded / sub_delims / ':' )*
32
+ end
33
+
34
+ rule ihost
35
+ IP_literal / IPv4address / ireg_name
36
+ end
37
+
38
+ rule ireg_name
39
+ ( iunreserved / pct_encoded / sub_delims )*
40
+ end
41
+
42
+ rule ipath
43
+ ipath_abempty # begins with '/' or is empty
44
+ / ipath_absolute # begins with '/' but not '//'
45
+ / ipath_noscheme # begins with a non-colon segment
46
+ / ipath_rootless # begins with a segment
47
+ / ipath_empty # zero characters
48
+ end
49
+
50
+ rule ipath_abempty
51
+ ( '/' isegment)*
52
+ end
53
+
54
+ rule ipath_absolute
55
+ '/' ( isegment_nz ( '/' isegment )* )?
56
+ end
57
+
58
+ rule ipath_noscheme
59
+ isegment_nz_nc ( '/' isegment)*
60
+ end
61
+
62
+ rule ipath_rootless
63
+ isegment_nz ( '/' isegment )*
64
+ end
65
+
66
+ rule ipath_empty
67
+ ''
68
+ end
69
+
70
+ rule isegment
71
+ ( ipchar )*
72
+ end
73
+
74
+ rule isegment_nz
75
+ ( ipchar )+
76
+ end
77
+
78
+ rule isegment_nz_nc
79
+ ( iunreserved / pct_encoded / sub_delims / '@' )+ # non-zero-length segment without any colon ':'
80
+ end
81
+
82
+ rule pct_encoded
83
+ '%' HEXDIG HEXDIG
84
+ end
85
+
86
+ rule ipchar
87
+ iunreserved / pct_encoded / sub_delims / ':' / '@'
88
+ end
89
+
90
+ rule iquery
91
+ ( ipchar iprivate '/' '?' )*
92
+ end
93
+
94
+ rule ifragment
95
+ ( ipchar '/' '?' )*
96
+ end
97
+
98
+ rule iunreserved
99
+ ALPHA / DIGIT / '-' / '.' / '_' / '~' / ucschar
100
+ end
101
+
102
+ rule ucschar
103
+ [\u000A0-\u0D7FF] / [\u0F900-\u0FDCF] / [\u0FDF0-\u0FFEF]
104
+ / [\u10000-\u1FFFD] / [\u20000-\u2FFFD] / [\u30000-\u3FFFD]
105
+ / [\u40000-\u4FFFD] / [\u50000-\u5FFFD] / [\u60000-\u6FFFD]
106
+ / [\u70000-\u7FFFD] / [\u80000-\u8FFFD] / [\u90000-\u9FFFD]
107
+ / [\uA0000-\uAFFFD] / [\uB0000-\uBFFFD] / [\uC0000-\uCFFFD]
108
+ #/ [\uD0000-\uDFFFD] / [\uE1000-\uEFFFD]
109
+ / [\uE1000-\uEFFFD]
110
+ end
111
+
112
+ rule iprivate
113
+ [\uE000-\uF8FF] / [\uF0000-\uFFFFD] / [\u100000-\u10FFFD]
114
+ end
115
+
116
+ rule scheme
117
+ ALPHA ( ALPHA / DIGIT / "+" / "-" / "." )*
118
+ end
119
+
120
+ rule port
121
+ DIGIT*
122
+ end
123
+
124
+ rule IP_literal
125
+ "[" ( IPv6address / IPvFuture ) "]"
126
+ end
127
+
128
+ rule IPvFuture
129
+ "v" HEXDIG+ "." ( unreserved / sub_delims / ":" )+
130
+ end
131
+
132
+ rule IPv6address
133
+ ( h16 ":" ) 6..6 ls32
134
+ / "::" ( h16 ":" ) 5..5 ls32
135
+ / [ h16 ] "::" ( h16 ":" ) 4..4 ls32
136
+ / [ ( h16 ":" ) 1..1 h16 ] "::" ( h16 ":" ) 3..3 ls32
137
+ / [ ( h16 ":" ) 2..2 h16 ] "::" ( h16 ":" ) 2..2 ls32
138
+ / [ ( h16 ":" ) 3..3 h16 ] "::" h16 ":" ls32
139
+ / [ ( h16 ":" ) 4..4 h16 ] "::" ls32
140
+ / [ ( h16 ":" ) 5..5 h16 ] "::" h16
141
+ / [ ( h16 ":" ) 6..6 h16 ] "::"
142
+ end
143
+
144
+ rule h16
145
+ HEXDIG 4..4
146
+ end
147
+
148
+ rule ls32
149
+ ( h16 ":" h16 ) / IPv4address
150
+ end
151
+
152
+ rule IPv4address
153
+ dec_octet "." dec_octet "." dec_octet "." dec_octet
154
+ end
155
+
156
+ rule dec_octet
157
+ DIGIT # 0-9
158
+ / ['0x30'-'0x39'] DIGIT # 10-99
159
+ / "1" DIGIT 2..2 # 100-199
160
+ / "2" ['0x30'-'0x34'] DIGIT # 200-249
161
+ / "25" ['0x30'-'0x35'] # 250-255
162
+ end
163
+
164
+ rule pct_encoded
165
+ "%" HEXDIG HEXDIG
166
+ end
167
+
168
+ rule unreserved
169
+ ALPHA / DIGIT / "-" / "." / "_" / "~"
170
+ end
171
+
172
+ rule reserved
173
+ gen_delims / sub_delims
174
+ end
175
+
176
+ rule gen_delims
177
+ ":" / "/" / "?" / "#" / "[" / "]" / "@"
178
+ end
179
+
180
+ rule sub_delims
181
+ '!' / '$' / '&' / "'" / '(' / ')' / '*' / '+' / ',' / ';' / '='
182
+ end
183
+
184
+ rule ALPHA
185
+ [a-zA-Z]
186
+ end
187
+
188
+ rule DIGIT
189
+ [0-9]
190
+ end
191
+
192
+ rule HEXDIG
193
+ [0-9A-F]
194
+ end
195
+
196
+ end
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rfc3987
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - kajisha
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-05-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: treetop
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: ''
84
+ email:
85
+ - kajisha@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
93
+ - CODE_OF_CONDUCT.md
94
+ - Gemfile
95
+ - LICENSE.txt
96
+ - README.md
97
+ - Rakefile
98
+ - bin/console
99
+ - bin/setup
100
+ - lib/rfc3987.rb
101
+ - lib/rfc3987/parser.rb
102
+ - lib/rfc3987/version.rb
103
+ - rfc3987.gemspec
104
+ - rfc3987.treetop
105
+ homepage: https://github.com/kajisha/rfc3987
106
+ licenses:
107
+ - MIT
108
+ metadata: {}
109
+ post_install_message:
110
+ rdoc_options: []
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ requirements: []
124
+ rubyforge_project:
125
+ rubygems_version: 2.7.6
126
+ signing_key:
127
+ specification_version: 4
128
+ summary: ''
129
+ test_files: []