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



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

def addr_spec
  sip_uri
end

#alphanumObject

Rules



107
108
109
# File 'lib/sip_parser.rb', line 107

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

#display_nameObject



205
206
207
# File 'lib/sip_parser.rb', line 205

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

#escapedObject



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

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

#from_paramObject



213
214
215
# File 'lib/sip_parser.rb', line 213

def from_param
  param
end

#from_specObject



217
218
219
# File 'lib/sip_parser.rb', line 217

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

#hostnameObject



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

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

#hostportObject



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

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

#laquotObject



201
202
203
# File 'lib/sip_parser.rb', line 201

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

#lwsObject



189
190
191
# File 'lib/sip_parser.rb', line 189

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

#markObject



115
116
117
# File 'lib/sip_parser.rb', line 115

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

#name_addrObject



209
210
211
# File 'lib/sip_parser.rb', line 209

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

#paramObject



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

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

#paramcharObject



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

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

#pnameObject



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

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

#portObject



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

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

#pvalueObject



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

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

#raquotObject



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

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

#reservedObject



111
112
113
# File 'lib/sip_parser.rb', line 111

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

#sip_uriObject



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

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

#swsObject



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

def sws
  Optional.new(lws)
end

#to_paramObject



221
222
223
# File 'lib/sip_parser.rb', line 221

def to_param
  param
end

#to_specObject



225
226
227
# File 'lib/sip_parser.rb', line 225

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

#unreservedObject



119
120
121
# File 'lib/sip_parser.rb', line 119

def unreserved
  Alternate.new(alphanum, mark)
end

#uri_parametersObject



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

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

#userObject



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

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

#user_unreservedObject



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

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

#userinfoObject



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

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

#wspObject



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

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