module Regexp::Parser
def self.property(token)
def self.property(token) include Regexp::Expression::UnicodeProperty case token.token when :alnum; @node << Alnum.new(token) when :alpha; @node << Alpha.new(token) when :any; @node << Any.new(token) when :ascii; @node << Ascii.new(token) when :blank; @node << Blank.new(token) when :cntrl; @node << Cntrl.new(token) when :digit; @node << Digit.new(token) when :graph; @node << Graph.new(token) when :lower; @node << Lower.new(token) when :print; @node << Print.new(token) when :punct; @node << Punct.new(token) when :space; @node << Space.new(token) when :upper; @node << Upper.new(token) when :word; @node << Word.new(token) when :xdigit; @node << Xdigit.new(token) when :newline; @node << Newline.new(token) when :letter_any; @node << Letter::Any.new(token) when :letter_uppercase; @node << Letter::Uppercase.new(token) when :letter_lowercase; @node << Letter::Lowercase.new(token) when :letter_titlecase; @node << Letter::Titlecase.new(token) when :letter_modifier; @node << Letter::Modifier.new(token) when :letter_other; @node << Letter::Other.new(token) when :mark_any; @node << Mark::Any.new(token) when :mark_nonspacing; @node << Mark::Nonspacing.new(token) when :mark_spacing; @node << Mark::Spacing.new(token) when :mark_enclosing; @node << Mark::Enclosing.new(token) when :number_any; @node << Number::Any.new(token) when :number_decimal; @node << Number::Decimal.new(token) when :number_letter; @node << Number::Letter.new(token) when :number_other; @node << Number::Other.new(token) when :punct_any; @node << Punctuation::Any.new(token) when :punct_connector; @node << Punctuation::Connector.new(token) when :punct_dash; @node << Punctuation::Dash.new(token) when :punct_open; @node << Punctuation::Open.new(token) when :punct_close; @node << Punctuation::Close.new(token) when :punct_initial; @node << Punctuation::Initial.new(token) when :punct_final; @node << Punctuation::Final.new(token) when :punct_other; @node << Punctuation::Other.new(token) when :separator_any; @node << Separator::Any.new(token) when :separator_space; @node << Separator::Space.new(token) when :separator_line; @node << Separator::Line.new(token) when :separator_para; @node << Separator::Paragraph.new(token) when :symbol_any; @node << Symbol::Any.new(token) when :symbol_math; @node << Symbol::Math.new(token) when :symbol_currency; @node << Symbol::Currency.new(token) when :symbol_modifier; @node << Symbol::Modifier.new(token) when :symbol_other; @node << Symbol::Other.new(token) when :other; @node << Codepoint::Any.new(token) when :control; @node << Codepoint::Control.new(token) when :format; @node << Codepoint::Format.new(token) when :surrogate; @node << Codepoint::Surrogate.new(token) when :private_use; @node << Codepoint::PrivateUse.new(token) when :unassigned; @node << Codepoint::Unassigned.new(token) when *Token::UnicodeProperty::Age @node << Age.new(token) when *Token::UnicodeProperty::Derived @node << Derived.new(token) when *Regexp::Syntax::Token::UnicodeProperty::Script @node << Script.new(token) when *Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock @node << Block.new(token) else raise UnknownTokenError.new('UnicodeProperty', token) end end