 infix operator !~ {associativity left precedence 140}
 
 /**
- * Sintactic sugar for pattern matching. Used as "ABC" =~ ".*".r
- * See Regex.matches for more details.
- *
+ Sintactic sugar for pattern matching. Used as "ABC" =~ ".*".r
  
- - parameter source: String to match.
- - parameter regex: Regex to match the string with.
- - returns: True if matches, false otherwise.
+ - see: Regex.matches for more details.
+ - parameters:
+   - source: String to match
+   - regex: Regex to match the string with
+ - returns: True if matches, false otherwise
  */
 public func =~(source:String, regex:RegexProtocol?) -> Bool {
     guard let matches = regex?.matches(source) else {

//===----------------------------------------------------------------------===//

/**
 * Adds Regex extensions to the String.
 */
public extension String {
    /**

}

/**
 Sintactic sugar for pattern matching. Used as "ABC" =~ ".*"
 Regex is automaticall created from the second string.
 
 - see: Regex.matches for more details
 - parameters:
   - source: String to match
   - regex: Pattern string to match the string with
 - returns: True if matches, false otherwise
 */
public func =~(source:String, pattern:String) -> Bool {
    return source =~ pattern.r
}

/**
 Sintactic sugar for pattern matching. Used as "ABC" !~ ".*".r
 Basically is negation of =~ operator.
 
 - see: Regex.matches for more details
 - parameters:
   - source: String to match
   - regex: Regex to match the string with
 - returns: False if matches, true otherwise
 */
public func !~(source:String, regex:RegexProtocol?) -> Bool {
    return !(source =~ regex)
}

/**
 Sintactic sugar for pattern matching. Used as "ABC" =~ ".*"
 Basically is negation of =~ operator.
 
 Regex is automaticall created from the second string.
 
 - see: Regex.matches for more details
 - parameters:
   - source: String to match
   - regex: Pattern string to match the string with
 - returns: False if matches, true otherwise
 */
public func !~(source:String, pattern:String) -> Bool {
    return !(source =~ pattern.r)
}

/**
 Operator is used by `switch` keyword in constructions like following:
 
 ```swift
 switch str {
    case "\\d+".r: print("has digit")
    case "[a-z]+".r: print("has letter")
    default: print("nothing")
 }
 ```
 
 Deep integration with Swift.
 
 - returns: True if matches, false otherwise
 */
public func ~=(regex:RegexProtocol?, source:String) -> Bool {
    return source =~ regex
