lib/twitter_cldr/js/mustache/implementation/parsers/unicode_regex/literal.coffee (33 lines of code) (raw):

# Copyright 2012 Twitter, Inc # http://www.apache.org/licenses/LICENSE-2.0 class TwitterCldr.Literal extends TwitterCldr.Component constructor : (@text) -> @special_characters = { s : [32] # space t : [9] # tab r : [13] # carriage return n : [10] # newline f : [12] # form feed d : (char for char in [48..57]) # digits 0-9 w : (char for char in [97..122].concat([65..90]).concat([48..57]).concat([95])) # lowercase, uppercase, numbers } super ordinalize : (char) -> TwitterCldr.Utilities.char_code_at(char, 0) to_regexp_str : -> @text to_set : -> if @text.match(/^\\/) special_char = @text.slice(1) if @special_characters[special_char.toLowerCase()]? @set_for_special_char(special_char) else TwitterCldr.RangeSet.from_array([@ordinalize(special_char)]) else TwitterCldr.RangeSet.from_array([@ordinalize(@text)]) set_for_special_char : (char) -> chars = TwitterCldr.RangeSet.from_array(@special_characters[char.toLowerCase()]) if char.toUpperCase() == char TwitterCldr.UnicodeRegex.get_valid_regexp_chars().subtract(chars) else chars