Class: Quaff::ABNFSipParser

Inherits:
Object
  • Object
show all
Includes:
ABNF
Defined in:
lib/sip_parser.rb

Overview

:nodoc:

Direct Known Subclasses

ToSpec

Instance Method Summary collapse

Instance Method Details

#addr_specObject



203
204
205
# File 'lib/sip_parser.rb', line 203

def addr_spec
  Alternate.new(sip_uri, tel_uri)
end

#alphanumObject

Rules



124
125
126
# File 'lib/sip_parser.rb', line 124

def alphanum
  Alternate.new(Alpha.new, Digit.new)
end

#display_nameObject



227
228
229
# File 'lib/sip_parser.rb', line 227

def display_name
  Repetition.new(:any, Alternate.new(alphanum, wsp, Char.new(?")))
end

#escapedObject



140
141
142
# File 'lib/sip_parser.rb', line 140

def escaped
  Concat.new(Char.new(?%), HexDigit.new, HexDigit.new)
end

#from_paramObject



235
236
237
# File 'lib/sip_parser.rb', line 235

def from_param
  param
end

#from_specObject



239
240
241
# File 'lib/sip_parser.rb', line 239

def from_spec
  Concat.new(Alternate.new(addr_spec, name_addr), Repetition.new(:any, Concat.new(Char.new(?;), from_param)))
end

#hostnameObject



156
157
158
# File 'lib/sip_parser.rb', line 156

def hostname
  Repetition.new([:at_least, 1], Alternate.new(alphanum, Char.new(?.), Char.new(?-)))
end

#hostportObject



164
165
166
# File 'lib/sip_parser.rb', line 164

def hostport
  Concat.new(hostname, OptionalConcat.new(Char.new(?:), port))
end

#laquotObject



223
224
225
# File 'lib/sip_parser.rb', line 223

def laquot
  Concat.new(sws, Char.new("<"))
end

#lwsObject



211
212
213
# File 'lib/sip_parser.rb', line 211

def lws
  Concat.new(OptionalConcat.new(Repetition.new([:at_least, 1], wsp), Literal.new("\r\n")), Repetition.new([:at_least, 1], wsp))
end

#markObject



132
133
134
# File 'lib/sip_parser.rb', line 132

def mark
  AlternateChars.new("-_.!~*'()")
end

#name_addrObject



231
232
233
# File 'lib/sip_parser.rb', line 231

def name_addr
  Concat.new(display_name, laquot, addr_spec, raquot)
end

#paramObject



182
183
184
# File 'lib/sip_parser.rb', line 182

def param
  Concat.new(pname, OptionalConcat.new(Char.new(?=), pvalue))
end

#paramcharObject



168
169
170
171
# File 'lib/sip_parser.rb', line 168

def paramchar
  paramunreserved = AlternateChars.new("[]/:&+%")
  Alternate.new(paramunreserved, unreserved, escaped)
end

#pnameObject



173
174
175
# File 'lib/sip_parser.rb', line 173

def pname
  Repetition.new([:at_least, 1], paramchar)
end

#portObject



160
161
162
# File 'lib/sip_parser.rb', line 160

def port
  Repetition.new([:at_least, 1], Digit.new)
end

#pvalueObject



177
178
179
# File 'lib/sip_parser.rb', line 177

def pvalue
  Repetition.new([:at_least, 1], paramchar)
end

#raquotObject



219
220
221
# File 'lib/sip_parser.rb', line 219

def raquot
  Concat.new(Char.new(">"), sws)
end

#reservedObject



128
129
130
# File 'lib/sip_parser.rb', line 128

def reserved
  AlternateChars.new(";/?:@&=+$,")
end

#sip_uriObject



191
192
193
194
195
196
# File 'lib/sip_parser.rb', line 191

def sip_uri
  Concat.new(Literal.new("sip:"),
             Optional.new(userinfo),
             hostport,
             uri_parameters)
end

#swsObject



215
216
217
# File 'lib/sip_parser.rb', line 215

def sws
  Optional.new(lws)
end

#tel_uriObject



198
199
200
201
# File 'lib/sip_parser.rb', line 198

def tel_uri
  Concat.new(Literal.new("tel:"),
             Repetition.new([:at_least, 1], Digit.new))
end

#to_paramObject



243
244
245
# File 'lib/sip_parser.rb', line 243

def to_param
  param
end

#to_specObject



247
248
249
# File 'lib/sip_parser.rb', line 247

def to_spec
  Concat.new(Alternate.new(addr_spec, name_addr), Repetition.new(:any, Concat.new(Char.new(?;), to_param)))
end

#unreservedObject



136
137
138
# File 'lib/sip_parser.rb', line 136

def unreserved
  Alternate.new(alphanum, mark)
end

#uri_parametersObject



186
187
188
189
# File 'lib/sip_parser.rb', line 186

def uri_parameters
  Repetition.new(:any,
                 Concat.new(Char.new(?;), param))
end

#userObject



148
149
150
# File 'lib/sip_parser.rb', line 148

def user
  Repetition.new([:at_least, 1], Alternate.new(unreserved, escaped, user_unreserved))
end

#user_unreservedObject



144
145
146
# File 'lib/sip_parser.rb', line 144

def user_unreserved
  AlternateChars.new "&=+$,;?/"
end

#userinfoObject



152
153
154
# File 'lib/sip_parser.rb', line 152

def userinfo
  Concat.new(user, Char.new(?@))
end

#wspObject



207
208
209
# File 'lib/sip_parser.rb', line 207

def wsp
  Alternate.new(Char.new(" "), Char.new("\t"))
end