using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"[\r\n]+\s*\/\/.*TODO:+.*";
string input = @"angular
.module('mdKeyboard', ['material.components.bottomSheet'])
.directive('mdKeyboard', MdKeyboardDirective)
.provider('$mdKeyboard', MdKeyboardProvider);
function MdKeyboardDirective($mdKeyboard, $mdBottomSheet, $timeout, $injector, $log) {
return {
restrict: 'A',
require: '?ngModel',
scope: {
clickOutsideToClose: '=',
preserveScope: '=',
showInMobile: '='
},
link: function (scope, element, attrs, ngModelCtrl) {
if (!ngModelCtrl) {
return;
}
var bottomSheet;
// Don't show virtual keyboard in mobile devices (default)
//TODO: test detection and reimplement if neccessary
//TODO: dissolve dependency to UAParser if possible / use angular or material utils
if ($injector.has('UAParser')) {
var UAParser = $injector.get('UAParser');
var results = new UAParser().getResult();
var isMobile = results.device.type === 'mobile' || results.device.type === 'tablet';
isMobile = isMobile || (results.os && (results.os.name === 'Android'));
isMobile = isMobile || (results.os && (results.os.name === 'iOS'));
isMobile = isMobile || (results.os && (results.os.name === 'Windows Phone'));
isMobile = isMobile || (results.os && (results.os.name === 'Windows Mobile'));
if (isMobile && attrs.showInMobile !== true) {
return;
}
}
/*
ngVirtualKeyboardService.attach(elements[0], scope.config, function() {
$timeout(function() {
ngModelCtrl.$setViewValue(elements[0].value);
});
});
*/
$log.debug(attrs);
element
.bind('focus', showKeyboard)
.bind('blur', hideKeyboard);
function showKeyboard() {
$log.info('showKeyboard');
bottomSheet = $mdBottomSheet
.show({
template: '<md-bottom-sheet class=""md-grid"" layout=""column"" ng-cloak>{{keyboard}}</md-bottom-sheet>',
controller: KeyboardController,
clickOutsideToClose: attrs.clickOutsideToClose || false,
preserveScope: attrs.preserveScope || true
})
.then(function () {
});
}
function hideKeyboard() {
$log.info('hideKeyboard');
if (bottomSheet) {
$mdBottomSheet.hide();
delete bottomSheet;
}
}
function KeyboardController($scope, $mdBottomSheet) {
$scope.keyboard = 'TEST';
}
// open bottomsheet with keyboard on focus TODO: and without backdrop
scope.keyboard = 'test';
// When navigation force destroys an interimElement, then
// listen and $destroy() that interim instance...
scope.$on('$destroy', function () {
$mdKeyboard.destroy();
});
}
};
}
function MdKeyboardProvider($$interimElementProvider) {
return $$interimElementProvider('$mdKeyboard')
.setDefaults({
options: keyboardDefaults
});
function keyboardDefaults() {
return {
themable: true,
layout: defaultLayout
};
function defaultLayout() {
// get default language
return 'en-us';
}
}
}
";
RegexOptions options = RegexOptions.IgnoreCase;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx