class Syntax::CSS21
def step
def step case # scanning selectors only when @selector && scan(@tokens[:LBRACE]) @selector = false start_group :normal, matched when @selector && scan(@tokens[:IMPORT_SYM]) start_group :import, matched when @selector && scan(@tokens[:PAGE_SYM]) start_group :page, matched when @selector && scan(@tokens[:MEDIA_SYM]) start_group :media, matched when @selector && scan(@tokens[:CHARSET_SYM]) start_group :charset, matched when @selector && scan(@tokens[:HASH]) start_group :normal, matched when @selector && scan(@tokens[:URI]) start_group :uri, matched when @selector && scan(@tokens[:IDENT]) if MY_TAGS.include?( matched ) start_group :tag, matched else start_group :ident, matched end # scanning declarations only when !@selector && scan(@tokens[:RBRACE]) @selector = true start_group :normal, matched when !@selector && scan(@tokens[:FUNCTION]) start_group :function, matched when !@selector && scan(@tokens[:EMS]) start_group :ems, matched when !@selector && scan(@tokens[:EXS]) start_group :exs, matched when !@selector && scan(@tokens[:LENGTH]) start_group :length, matched when !@selector && scan(@tokens[:ANGLE]) start_group :angle, matched when !@selector && scan(@tokens[:TIME]) start_group :time, matched when !@selector && scan(@tokens[:FREQ]) start_group :freq, matched when !@selector && scan(@tokens[:PERCENTAGE]) start_group :percentage, matched when !@selector && scan(@tokens[:DIMENSION]) start_group :dimension, matched when !@selector && scan(@tokens[:NUMBER]) start_group :number, matched when !@selector && scan(@tokens[:HEXNUM]) start_group :number, matched when !@selector && scan(@tokens[:IMPORTANT_SYM]) start_group :important, matched when !@selector && scan(@tokens[:IDENT]) if CSS21_PROPERTIES.include?( matched ) # are they disjoint? start_group :property, matched elsif CSS21_KEYWORDS.include?( matched ) start_group :keyword, matched else start_group :ident, matched end # scanning both when scan(@tokens[:S]) start_group :normal, matched when scan(@tokens[:COMMENT]) start_group :comment, matched when scan(@tokens[:STRING]) start_group :string, matched when scan(@tokens[:CDO]) start_group :cdo, matched when scan(@tokens[:CDC]) start_group :cdc, matched when scan(@tokens[:INVALID]) start_group :invalid, matched else start_group :normal, scan(/./x) end end