Module: Vobject::Rules::ABNF

Defined in:
lib/vobject.rb

Constant Summary collapse

IANAToken =
'[a-zA-Z\d\-]+?'
Cr =
"\u000d"
Lf =
"\u000a"
Crlf =
"(#{Cr}|#{Lf})"
Utf8_tail =
'[\u0080-\u00bf]'
Utf8_2 =
'([\u00c2-\u00df]|' + "#{Utf8_tail})"
Utf8_3 =
'([\u00e0\u00a0-\u00bf\u00e1-\u00ec\u00ed\u0080-\u009f\u00ee-\u00ef]|' + "#{Utf8_tail})"
Utf8_4 =
'([\u00f0\u0090-\u00bf\u00f1-\u00f3\u00f4\u0080-\u008f]|' + "#{Utf8_tail})"
Wsp =
'[ \t]'
VChar =
'[\u0021-\u007e]'
NonASCII =
"(#{Utf8_2}|#{Utf8_3}|#{Utf8_4})"
QSafeChar =
"(#{Wsp}|" + '[!\u0023-\u007e]' + "|#{NonASCII})"
SafeChar =
"(#{Wsp}|" + '[!\u0023-\u0039\u003c-\u007e]' + "|#{NonASCII})"
ValueChar =
"(#{Wsp}|#{VChar}|#{NonASCII})"
DQuote =
'"'
PText =
"#{SafeChar}*?"
QuotedString =
"#{DQuote}(#{QSafeChar}*?)#{DQuote}"
XName =
"[xX]-#{IANAToken}"
Group =
IANAToken
Name =
"(#{XName}|#{IANAToken})"
ParamName =
"(#{XName}|#{IANAToken})"
ParamValue =
"(#{PText}|#{QuotedString})"
PValueList =
"(?<head>#{ParamValue})(?<tail>(,#{ParamValue})*)"
Pid =
'\d+(\.\d+)*'
PidList =
"(?<head>#{Pid})(?<tail>(,#{Pid})*)"
Param =
"(?<pname>#{ParamName})=(?<pvalue>#{PValueList})"
Params =
"(;(?<phead>#{Param}))(?<ptail>(;#{Param})*)"
Value =
"#{ValueChar}*?"
LineGroup =
"((?<group>#{Group})" + '\.' + ")?"
Contentline =
"#{LineGroup}(?<key>#{Name})(?<params>(#{Params})?):(?<value>#{Value})#{Crlf}"
BeginLine =
"BEGIN:#{IANAToken}#{Crlf}"
VersionLine =
"VERSION:#{Value}#{Crlf}"
EndLine =
"END:#{IANAToken}#{Crlf}"
Vobject =
"#{BeginLine}#{VersionLine}(#{Contentline})+#{EndLine}"