package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`require\('(.+?)'\)`)
var str = `'use strict';
var path = require('path');
var _ = require('lodash');
var gulp = require('gulp');
require('gulp-help')(gulp);
var corejs = require('gulp-corejs');
//region Build
gulp.task('_bower_clean', function () {
var bower = require('bower');
return bower.commands.cache.clean(['corejs', 'pnotify', 'ui-bootstrap', 'emply-font', 'modernizr']);
});
gulp.task('bower', ['_bower_clean'], function () {
var bower = require('gulp-bower');
return bower({ cmd: 'update' })
.pipe(gulp.dest('bower_components'));
});
gulp.task('compile', function (cb) {
var buildConfig = {
appDir: 'src',
baseUrl: '.',
paths: {
text: '../bower_components/requirejs-text/text',
html: '../bower_components/requirejs-html/html',
jquery: 'empty:',
angular: 'empty:',
'angular-cache': 'empty:',
ngSanitize: 'empty:',
pnotify: 'empty:',
'pnotify.modal': 'empty:',
'pnotify.confirm': 'empty:',
'pnotify.callbacks': 'empty:',
'pnotify.nonblock': 'empty:',
'ui.bootstrap': 'empty:',
infiniteScroll: 'empty:',
'jquery.tabbable': 'empty:',
cfpHotkeys: 'empty:',
textile: 'empty:',
Modernizr: 'empty:',
'tmh.dynamicLocale': 'empty:'
},
config: {
html: {
comments: 'strip',
whitespaceBetweenTags: 'collapse',
whitespaceBetweenTagsAndText: 'collapse',
whitespaceWithinTags: 'collapse'
}
},
dir: 'compiled',
removeCombined: true,
optimize: 'none',
skipDirOptimize: true,
fileExclusionRegExp: /\.spec\.js/,
modules: [
{ name: 'cmHelpers/module', exclude: ['text', 'html'] },
{ name: 'cmMessages/module', exclude: ['text', 'html'] },
{ name: 'cmYaMetrika/module' },
{ name: 'cmFormPrimitives/module', exclude: ['text', 'html', 'cmHelpers/module'] },
{ name: 'cmGoogleAnalytics/module', exclude: ['text', 'html', 'cmMessages/module'] },
{
name: 'cmWikiHelp/module',
exclude: ['html', 'cmHelpers/module', 'cmMessages/module', 'cmTranslate/module']
},
{ name: 'cmMultiselect/module', exclude: ['text', 'html', 'cmFormPrimitives/module', 'cmHelpers/module'] },
{
name: 'cmSelectControls/module',
exclude: [
'text',
'html',
'cmHelpers/module',
'cmFormPrimitives/module',
'cmWikiHelp/module',
'cmMessages/module',
'cmTranslate/module'
]
},
{ name: 'cmTranslate/module', exclude: ['text', 'html', 'cmHelpers/module'] }
]
};
corejs.build.compile(buildConfig, cb);
gulp.src('bower.json')
.pipe(gulp.dest('./compiled'));
});
gulp.task('clean', function (cb) {
require('del')(['compiled/**/*.html', 'dist'], function () {
require('remove-empty-directories')('compiled');
cb();
});
});
gulp.task('zip', function () {
var zip = require('gulp-zip');
var bowerCfg = require(path.resolve('./bower.json'));
var files = [
'compiled/**/*',
'!./**/*.txt'
];
gulp.src(files)
.pipe(zip('corejs-' + bowerCfg.version + '.zip'))
.pipe(gulp.dest('./dist'));
gulp.src(files)
.pipe(zip('corejs-latest.zip'))
.pipe(gulp.dest('./dist'));
});
function build (cb, excluded) {
var tasks = [
'bower',
'compile',
'clean',
'zip'
];
tasks = tasks.concat([cb]);
_.remove(tasks, function (task) {
return _.includes(excluded, task);
});
require('run-sequence').apply(undefined, tasks);
}
gulp.task('build', 'Build production version (./dist folder)', function (cb) {
build(cb);
});
gulp.task('fastBuild', 'Build production version (./dist folder)', function (cb) {
build(cb, ['bower', 'compress']);
});
//endregion
//region Developer tools
gulp.task('bump', 'Increment version', function () {
return corejs.bump(['package.json', 'bower.json'])
.pipe(gulp.dest('./'));
});
gulp.task('styles', 'Compile CSS', function () {
return corejs.styles(['demo/styles/index.less'])
.pipe(gulp.dest('demo/styles'));
});
gulp.task('browsersync', function () {
require('browser-sync').create().init({
files: [
'{src,demo}/**/*',
'*.{json,js}'
],
watchOptions: {
ignoreInitial: true,
ignored: '{src,demo}/**/*.less'
},
open: false,
proxy: 'localhost:2000',
port: 2015,
logPrefix: 'BrowserSync',
logConnections: true
});
});
gulp.task('assemble', ['styles', 'i18n', 'packSvg']);
gulp.task('watch', ['assemble'], function () {
// styles
corejs.watch(['src/**/*.less', 'demo/**/*.less'], ['styles']);
// translates
corejs.watch(['src/**/*.json', 'demo/**/*.json'], ['i18n']);
// svg packs
corejs.watch(['src/**/*.svg'], ['packSvg']);
});
gulp.task('live', ['browsersync', 'watch']);
gulp.task('i18n', function () {
var extend = require('gulp-extend');
var locales = ['ru', 'en'];
_.forEach(locales, function (locale) {
var jsonName = locale + '.json';
gulp.src(['src/**/' + jsonName, 'demo/**/' + jsonName])
.pipe(extend(jsonName))
.pipe(gulp.dest('i18n'));
});
});
gulp.task('packSvg', function () {
return corejs.packSvg(['src/**/*.svg'], 'pack.svg')
.pipe(gulp.dest('demo/images/'));
});
//endregion
//region Karma tests
gulp.task('test', 'Run tests once and exit', function (done) {
corejs.karma.test(done, 'karma.conf.js');
});
gulp.task('tdd', 'Run tests and start watching', function (done) {
corejs.karma.tdd(done, 'karma.conf.js');
});
gulp.task('test:jenkins', 'Run tests once and build reports', function (done) {
corejs.karma.jenkins(done, 'karma.conf.js');
});
//endregion
//region Code style and lint
var JS_FILES = ['src/**/*.js'];
gulp.task('lint', 'Check JS syntax and show errors', function () {
return corejs.lint.check(JS_FILES, 'jshint-stylish');
});
gulp.task('lint:storm', 'Check JS syntax and show errors', function () {
return corejs.lint.check(JS_FILES, 'storm');
});
gulp.task('lint:jenkins', 'Check JS syntax and generate reports for jenkins', function () {
return corejs.lint.jenkins(JS_FILES, 'reports/corejs-lint.xml');
});
gulp.task('jscs', 'Check JS code style', function () {
return corejs.jscs.check(JS_FILES);
});
gulp.task('jscs:storm', 'Check JS code style', function () {
return corejs.jscs.check(JS_FILES, 'storm');
});
gulp.task('jscs:jenkins', 'Check JS code style and generate report for jenkins', function () {
return corejs.jscs.jenkins(JS_FILES, 'reports/corejs-codestyle.xml');
});
gulp.task('storm', 'Run JS check style and syntax and show short report', ['lint:storm', 'jscs:storm']);
//endregion
gulp.task('jenkins', 'Run all jenkins-specific tasks', ['lint:jenkins', 'test:jenkins', 'jscs:jenkins']);
`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", i)
}
}
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 Golang, please visit: https://golang.org/pkg/regexp/