mirror of https://github.com/abpframework/abp.git
437 changed files with 19297 additions and 829 deletions
@ -0,0 +1,25 @@ |
|||||
|
{ |
||||
|
"name": "zenorocha/clipboardjs", |
||||
|
"description": "Modern copy to clipboard. No Flash. Just 3kb gzipped https://clipboardjs.com", |
||||
|
"type": "component", |
||||
|
"homepage": "https://clipboardjs.com/", |
||||
|
"authors": [ |
||||
|
{ |
||||
|
"name": "Zeno Rocha", |
||||
|
"url": "http://zenorocha.com/" |
||||
|
} |
||||
|
], |
||||
|
"require": { |
||||
|
"robloach/component-installer": "*" |
||||
|
}, |
||||
|
"extra": { |
||||
|
"component": { |
||||
|
"scripts": [ |
||||
|
"dist/clipboard.js" |
||||
|
], |
||||
|
"files": [ |
||||
|
"dist/clipboard.min.js" |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
} |
||||
File diff suppressed because one or more lines are too long
@ -1,48 +1,78 @@ |
|||||
{ |
{ |
||||
"name": "clipboard", |
"_from": "clipboard@^2.0.0", |
||||
"version": "1.7.1", |
"_id": "clipboard@2.0.1", |
||||
"description": "Modern copy to clipboard. No Flash. Just 2kb", |
"_inBundle": false, |
||||
"repository": "zenorocha/clipboard.js", |
"_integrity": "sha512-7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ==", |
||||
"license": "MIT", |
"_location": "/clipboard", |
||||
"main": "lib/clipboard.js", |
"_phantomChildren": {}, |
||||
"keywords": [ |
"_requested": { |
||||
"clipboard", |
"type": "range", |
||||
"copy", |
"registry": true, |
||||
"cut" |
"raw": "clipboard@^2.0.0", |
||||
|
"name": "clipboard", |
||||
|
"escapedName": "clipboard", |
||||
|
"rawSpec": "^2.0.0", |
||||
|
"saveSpec": null, |
||||
|
"fetchSpec": "^2.0.0" |
||||
|
}, |
||||
|
"_requiredBy": [ |
||||
|
"/prismjs" |
||||
], |
], |
||||
|
"_resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.1.tgz", |
||||
|
"_shasum": "a12481e1c13d8a50f5f036b0560fe5d16d74e46a", |
||||
|
"_spec": "clipboard@^2.0.0", |
||||
|
"_where": "C:\\Users\\alper\\Downloads\\node_modules\\prismjs", |
||||
|
"bugs": { |
||||
|
"url": "https://github.com/zenorocha/clipboard.js/issues" |
||||
|
}, |
||||
|
"bundleDependencies": false, |
||||
"dependencies": { |
"dependencies": { |
||||
"good-listener": "^1.2.2", |
"good-listener": "^1.2.2", |
||||
"select": "^1.1.2", |
"select": "^1.1.2", |
||||
"tiny-emitter": "^2.0.0" |
"tiny-emitter": "^2.0.0" |
||||
}, |
}, |
||||
|
"deprecated": false, |
||||
|
"description": "Modern copy to clipboard. No Flash. Just 2kb", |
||||
"devDependencies": { |
"devDependencies": { |
||||
"babel-cli": "^6.24.1", |
"babel-cli": "^6.5.1", |
||||
"babel-core": "^6.24.1", |
"babel-core": "^6.5.2", |
||||
"babel-plugin-transform-es2015-modules-umd": "^6.24.1", |
"babel-loader": "^6.2.10", |
||||
"babel-preset-es2015": "^6.24.1", |
"babel-plugin-transform-es2015-modules-umd": "^6.5.0", |
||||
"babelify": "^7.3.0", |
"babel-preset-es2015": "^6.5.0", |
||||
"bannerify": "Vekat/bannerify#feature-option", |
"chai": "^3.4.1", |
||||
"browserify": "^14.3.0", |
"cross-env": "^3.1.4", |
||||
"chai": "^3.5.0", |
"karma": "^1.3.0", |
||||
"install": "^0.9.6", |
|
||||
"karma": "^1.6.0", |
|
||||
"karma-browserify": "^5.1.1", |
|
||||
"karma-chai": "^0.1.0", |
"karma-chai": "^0.1.0", |
||||
"karma-mocha": "^1.3.0", |
"karma-mocha": "^1.2.0", |
||||
"karma-phantomjs-launcher": "^1.0.4", |
"karma-phantomjs-launcher": "^1.0.0", |
||||
"karma-sinon": "^1.0.5", |
"karma-sinon": "^1.0.4", |
||||
"mocha": "^3.3.0", |
"karma-webpack": "^2.0.2", |
||||
"phantomjs-prebuilt": "^2.1.14", |
"mocha": "^3.1.2", |
||||
"sinon": "^2.2.0", |
"phantomjs-prebuilt": "^2.1.4", |
||||
"uglify-js": "^2.8.22", |
"sinon": "^1.17.2", |
||||
"watchify": "^3.9.0" |
"webpack": "^2.2.1" |
||||
|
}, |
||||
|
"homepage": "https://github.com/zenorocha/clipboard.js#readme", |
||||
|
"keywords": [ |
||||
|
"clipboard", |
||||
|
"copy", |
||||
|
"cut" |
||||
|
], |
||||
|
"license": "MIT", |
||||
|
"main": "dist/clipboard.js", |
||||
|
"module": "dist/clipboard.js", |
||||
|
"name": "clipboard", |
||||
|
"repository": { |
||||
|
"type": "git", |
||||
|
"url": "git+https://github.com/zenorocha/clipboard.js.git" |
||||
}, |
}, |
||||
"scripts": { |
"scripts": { |
||||
"build": "npm run build-debug && npm run build-min", |
"build": "npm run build-debug && npm run build-min", |
||||
"build-debug": "browserify src/clipboard.js -s Clipboard -t [babelify] -p [bannerify --file .banner ] -o dist/clipboard.js", |
"build-debug": "webpack", |
||||
"build-min": "uglifyjs dist/clipboard.js --comments '/!/' -m screw_ie8=true -c screw_ie8=true,unused=false -o dist/clipboard.min.js", |
"build-min": "cross-env NODE_ENV=production webpack --optimize-minimize", |
||||
"build-watch": "watchify src/clipboard.js -s Clipboard -t [babelify] -o dist/clipboard.js -v", |
"build-watch": "webpack --watch", |
||||
"test": "karma start --single-run", |
"prepublish": "npm run build", |
||||
"prepublish": "babel src --out-dir lib" |
"test": "karma start --single-run" |
||||
} |
}, |
||||
|
"version": "2.0.1" |
||||
} |
} |
||||
|
|||||
@ -0,0 +1,41 @@ |
|||||
|
const pkg = require('./package.json'); |
||||
|
const path = require('path'); |
||||
|
const webpack = require('webpack'); |
||||
|
|
||||
|
const production = process.env.NODE_ENV === 'production' || false; |
||||
|
|
||||
|
const banner = `clipboard.js v${pkg.version} |
||||
|
https://zenorocha.github.io/clipboard.js
|
||||
|
|
||||
|
Licensed MIT © Zeno Rocha`;
|
||||
|
|
||||
|
module.exports = { |
||||
|
entry: './src/clipboard.js', |
||||
|
output: { |
||||
|
filename: production ? 'clipboard.min.js' : 'clipboard.js', |
||||
|
path: path.resolve(__dirname, 'dist'), |
||||
|
library: 'ClipboardJS', |
||||
|
libraryTarget: 'umd' |
||||
|
}, |
||||
|
module: { |
||||
|
rules: [ |
||||
|
{test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'} |
||||
|
] |
||||
|
}, |
||||
|
plugins: production ? [ |
||||
|
new webpack.optimize.UglifyJsPlugin({ |
||||
|
beautify: false, |
||||
|
mangle: { |
||||
|
screw_ie8: true, |
||||
|
keep_fnames: true |
||||
|
}, |
||||
|
compress: { |
||||
|
screw_ie8: true |
||||
|
}, |
||||
|
comments: false |
||||
|
}), |
||||
|
new webpack.BannerPlugin({banner}) |
||||
|
] : [ |
||||
|
new webpack.BannerPlugin({banner}) |
||||
|
] |
||||
|
}; |
||||
@ -0,0 +1,22 @@ |
|||||
|
# EditorConfig helps developers define and maintain consistent |
||||
|
# coding styles between different editors and IDEs |
||||
|
# http://editorconfig.org |
||||
|
|
||||
|
root = true |
||||
|
|
||||
|
[*] |
||||
|
# Change these settings to your own preference |
||||
|
indent_style = space |
||||
|
indent_size = 4 |
||||
|
|
||||
|
# We recommend you to keep these unchanged |
||||
|
end_of_line = lf |
||||
|
charset = utf-8 |
||||
|
trim_trailing_whitespace = true |
||||
|
insert_final_newline = true |
||||
|
|
||||
|
[*.md] |
||||
|
trim_trailing_whitespace = false |
||||
|
|
||||
|
[{package.json,bower.json}] |
||||
|
indent_size = 2 |
||||
@ -0,0 +1,3 @@ |
|||||
|
language: node_js |
||||
|
node_js: |
||||
|
- stable |
||||
@ -0,0 +1,29 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<title>Delegate</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<!-- 1. Write some markup --> |
||||
|
<ul> |
||||
|
<li><button>Item 1</button></li> |
||||
|
<li><button>Item 2</button></li> |
||||
|
<li><button>Item 3</button></li> |
||||
|
<li><button>Item 4</button></li> |
||||
|
<li><button>Item 5</button></li> |
||||
|
</ul> |
||||
|
|
||||
|
<!-- 2. Include library --> |
||||
|
<script src="../dist/delegate.js"></script> |
||||
|
|
||||
|
<!-- 3. Add event delegation --> |
||||
|
<script> |
||||
|
var ul = document.querySelector('ul'); |
||||
|
|
||||
|
delegate(ul, 'button', 'click', function(e) { |
||||
|
console.log(e.target); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,37 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<title>Delegate</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<!-- 1. Write some markup --> |
||||
|
<ul> |
||||
|
<li><button>Item 1</button></li> |
||||
|
<li><button>Item 2</button></li> |
||||
|
<li><button>Item 3</button></li> |
||||
|
<li><button>Item 4</button></li> |
||||
|
<li><button>Item 5</button></li> |
||||
|
</ul> |
||||
|
<ul> |
||||
|
<li><span>Item 6</span></li> |
||||
|
<li><span>Item 7</span></li> |
||||
|
</ul> |
||||
|
|
||||
|
<!-- 2. Include library --> |
||||
|
<script src="../dist/delegate.js"></script> |
||||
|
|
||||
|
<!-- 3. Add event delegation --> |
||||
|
<script> |
||||
|
var ul = document.querySelector('ul'); |
||||
|
|
||||
|
delegate(ul, 'button', 'click', function(e) { |
||||
|
console.log(e.target); |
||||
|
}); |
||||
|
|
||||
|
delegate(document.body, 'span', 'click', function(e) { |
||||
|
console.log(e.target); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,31 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<title>Undelegate</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<!-- 1. Write some markup --> |
||||
|
<ul> |
||||
|
<li><button>Item 1</button></li> |
||||
|
<li><button>Item 2</button></li> |
||||
|
<li><button>Item 3</button></li> |
||||
|
<li><button>Item 4</button></li> |
||||
|
<li><button>Item 5</button></li> |
||||
|
</ul> |
||||
|
|
||||
|
<!-- 2. Include library --> |
||||
|
<script src="../dist/delegate.js"></script> |
||||
|
|
||||
|
<!-- 3. Remove event delegation --> |
||||
|
<script> |
||||
|
var ul = document.querySelector('ul'); |
||||
|
|
||||
|
var delegation = delegate(ul, 'li button', 'click', function(e) { |
||||
|
console.log(e.target); |
||||
|
}); |
||||
|
|
||||
|
delegation.destroy(); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,80 @@ |
|||||
|
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.delegate = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ |
||||
|
var DOCUMENT_NODE_TYPE = 9; |
||||
|
|
||||
|
/** |
||||
|
* A polyfill for Element.matches() |
||||
|
*/ |
||||
|
if (typeof Element !== 'undefined' && !Element.prototype.matches) { |
||||
|
var proto = Element.prototype; |
||||
|
|
||||
|
proto.matches = proto.matchesSelector || |
||||
|
proto.mozMatchesSelector || |
||||
|
proto.msMatchesSelector || |
||||
|
proto.oMatchesSelector || |
||||
|
proto.webkitMatchesSelector; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Finds the closest parent that matches a selector. |
||||
|
* |
||||
|
* @param {Element} element |
||||
|
* @param {String} selector |
||||
|
* @return {Function} |
||||
|
*/ |
||||
|
function closest (element, selector) { |
||||
|
while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { |
||||
|
if (element.matches(selector)) return element; |
||||
|
element = element.parentNode; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = closest; |
||||
|
|
||||
|
},{}],2:[function(require,module,exports){ |
||||
|
var closest = require('./closest'); |
||||
|
|
||||
|
/** |
||||
|
* Delegates event to a selector. |
||||
|
* |
||||
|
* @param {Element} element |
||||
|
* @param {String} selector |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @param {Boolean} useCapture |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function delegate(element, selector, type, callback, useCapture) { |
||||
|
var listenerFn = listener.apply(this, arguments); |
||||
|
|
||||
|
element.addEventListener(type, listenerFn, useCapture); |
||||
|
|
||||
|
return { |
||||
|
destroy: function() { |
||||
|
element.removeEventListener(type, listenerFn, useCapture); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Finds closest match and invokes callback. |
||||
|
* |
||||
|
* @param {Element} element |
||||
|
* @param {String} selector |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Function} |
||||
|
*/ |
||||
|
function listener(element, selector, type, callback) { |
||||
|
return function(e) { |
||||
|
e.delegateTarget = closest(e.target, selector); |
||||
|
|
||||
|
if (e.delegateTarget) { |
||||
|
callback.call(element, e); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = delegate; |
||||
|
|
||||
|
},{"./closest":1}]},{},[2])(2) |
||||
|
}); |
||||
@ -0,0 +1,24 @@ |
|||||
|
module.exports = function(karma) { |
||||
|
karma.set({ |
||||
|
plugins: ['karma-browserify', 'karma-chai', 'karma-sinon', 'karma-mocha', 'karma-phantomjs-launcher'], |
||||
|
|
||||
|
frameworks: ['browserify', 'chai', 'sinon', 'mocha'], |
||||
|
|
||||
|
files: [ |
||||
|
'src/**/*.js', |
||||
|
'test/**/*.js', |
||||
|
'./node_modules/phantomjs-polyfill/bind-polyfill.js' |
||||
|
], |
||||
|
|
||||
|
preprocessors: { |
||||
|
'src/**/*.js' : ['browserify'], |
||||
|
'test/**/*.js': ['browserify'] |
||||
|
}, |
||||
|
|
||||
|
browserify: { |
||||
|
debug: true |
||||
|
}, |
||||
|
|
||||
|
browsers: ['PhantomJS'] |
||||
|
}); |
||||
|
} |
||||
@ -0,0 +1,63 @@ |
|||||
|
{ |
||||
|
"_from": "delegate@^3.1.2", |
||||
|
"_id": "delegate@3.2.0", |
||||
|
"_inBundle": false, |
||||
|
"_integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", |
||||
|
"_location": "/delegate", |
||||
|
"_phantomChildren": {}, |
||||
|
"_requested": { |
||||
|
"type": "range", |
||||
|
"registry": true, |
||||
|
"raw": "delegate@^3.1.2", |
||||
|
"name": "delegate", |
||||
|
"escapedName": "delegate", |
||||
|
"rawSpec": "^3.1.2", |
||||
|
"saveSpec": null, |
||||
|
"fetchSpec": "^3.1.2" |
||||
|
}, |
||||
|
"_requiredBy": [ |
||||
|
"/good-listener" |
||||
|
], |
||||
|
"_resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", |
||||
|
"_shasum": "b66b71c3158522e8ab5744f720d8ca0c2af59166", |
||||
|
"_spec": "delegate@^3.1.2", |
||||
|
"_where": "C:\\Users\\alper\\Downloads\\node_modules\\good-listener", |
||||
|
"bugs": { |
||||
|
"url": "https://github.com/zenorocha/delegate/issues" |
||||
|
}, |
||||
|
"bundleDependencies": false, |
||||
|
"deprecated": false, |
||||
|
"description": "Lightweight event delegation", |
||||
|
"devDependencies": { |
||||
|
"browserify": "^13.1.0", |
||||
|
"chai": "^3.5.0", |
||||
|
"karma": "^1.3.0", |
||||
|
"karma-browserify": "^5.1.0", |
||||
|
"karma-chai": "^0.1.0", |
||||
|
"karma-mocha": "^1.2.0", |
||||
|
"karma-phantomjs-launcher": "^1.0.2", |
||||
|
"karma-sinon": "^1.0.4", |
||||
|
"mocha": "^3.1.2", |
||||
|
"phantomjs-polyfill": "0.0.2", |
||||
|
"simulant": "^0.2.2", |
||||
|
"sinon": "^1.17.6" |
||||
|
}, |
||||
|
"homepage": "https://github.com/zenorocha/delegate#readme", |
||||
|
"keywords": [ |
||||
|
"event", |
||||
|
"delegate", |
||||
|
"delegation" |
||||
|
], |
||||
|
"license": "MIT", |
||||
|
"main": "src/delegate.js", |
||||
|
"name": "delegate", |
||||
|
"repository": { |
||||
|
"type": "git", |
||||
|
"url": "git+https://github.com/zenorocha/delegate.git" |
||||
|
}, |
||||
|
"scripts": { |
||||
|
"build": "browserify src/delegate.js -s delegate -o dist/delegate.js", |
||||
|
"test": "karma start --single-run" |
||||
|
}, |
||||
|
"version": "3.2.0" |
||||
|
} |
||||
@ -0,0 +1,99 @@ |
|||||
|
# delegate |
||||
|
|
||||
|
Lightweight event delegation. |
||||
|
|
||||
|
## Install |
||||
|
|
||||
|
You can get it on npm. |
||||
|
|
||||
|
``` |
||||
|
npm install delegate --save |
||||
|
``` |
||||
|
|
||||
|
If you're not into package management, just [download a ZIP](https://github.com/zenorocha/delegate/archive/master.zip) file. |
||||
|
|
||||
|
## Setup |
||||
|
|
||||
|
###### Node (Browserify) |
||||
|
|
||||
|
```js |
||||
|
var delegate = require('delegate'); |
||||
|
``` |
||||
|
|
||||
|
###### Browser (Standalone) |
||||
|
|
||||
|
```html |
||||
|
<script src="dist/delegate.js"></script> |
||||
|
``` |
||||
|
|
||||
|
## Usage |
||||
|
|
||||
|
### Add event delegation |
||||
|
|
||||
|
#### With the default base (`document`) |
||||
|
|
||||
|
```js |
||||
|
delegate('.btn', 'click', function(e) { |
||||
|
console.log(e.delegateTarget); |
||||
|
}, false); |
||||
|
``` |
||||
|
|
||||
|
#### With an element as base |
||||
|
|
||||
|
```js |
||||
|
delegate(document.body, '.btn', 'click', function(e) { |
||||
|
console.log(e.delegateTarget); |
||||
|
}, false); |
||||
|
``` |
||||
|
|
||||
|
#### With a selector (of existing elements) as base |
||||
|
|
||||
|
```js |
||||
|
delegate('.container', '.btn', 'click', function(e) { |
||||
|
console.log(e.delegateTarget); |
||||
|
}, false); |
||||
|
``` |
||||
|
|
||||
|
#### With an array/array-like of elements as base |
||||
|
|
||||
|
```js |
||||
|
delegate(document.querySelectorAll('.container'), '.btn', 'click', function(e) { |
||||
|
console.log(e.delegateTarget); |
||||
|
}, false); |
||||
|
``` |
||||
|
|
||||
|
### Remove event delegation |
||||
|
|
||||
|
#### With a single base element (default or specified) |
||||
|
|
||||
|
```js |
||||
|
var delegation = delegate(document.body, '.btn', 'click', function(e) { |
||||
|
console.log(e.delegateTarget); |
||||
|
}, false); |
||||
|
|
||||
|
delegation.destroy(); |
||||
|
``` |
||||
|
|
||||
|
#### With multiple elements (via selector or array) |
||||
|
|
||||
|
Note: selectors are always treated as multiple elements, even if one or none are matched. `delegate()` will return an array. |
||||
|
|
||||
|
```js |
||||
|
var delegations = delegate('.container', '.btn', 'click', function(e) { |
||||
|
console.log(e.delegateTarget); |
||||
|
}, false); |
||||
|
|
||||
|
delegations.forEach(function (delegation) { |
||||
|
delegation.destroy(); |
||||
|
}); |
||||
|
``` |
||||
|
|
||||
|
## Browser Support |
||||
|
|
||||
|
| <img src="https://clipboardjs.com/assets/images/chrome.png" width="48px" height="48px" alt="Chrome logo"> | <img src="https://clipboardjs.com/assets/images/edge.png" width="48px" height="48px" alt="Edge logo"> | <img src="https://clipboardjs.com/assets/images/firefox.png" width="48px" height="48px" alt="Firefox logo"> | <img src="https://clipboardjs.com/assets/images/ie.png" width="48px" height="48px" alt="Internet Explorer logo"> | <img src="https://clipboardjs.com/assets/images/opera.png" width="48px" height="48px" alt="Opera logo"> | <img src="https://clipboardjs.com/assets/images/safari.png" width="48px" height="48px" alt="Safari logo"> | |
||||
|
|:---:|:---:|:---:|:---:|:---:|:---:| |
||||
|
| Latest ✔ | Latest ✔ | Latest ✔ | 9+ ✔ | Latest ✔ | Latest ✔ | |
||||
|
|
||||
|
## License |
||||
|
|
||||
|
[MIT License](http://zenorocha.mit-license.org/) © Zeno Rocha |
||||
@ -0,0 +1,33 @@ |
|||||
|
var DOCUMENT_NODE_TYPE = 9; |
||||
|
|
||||
|
/** |
||||
|
* A polyfill for Element.matches() |
||||
|
*/ |
||||
|
if (typeof Element !== 'undefined' && !Element.prototype.matches) { |
||||
|
var proto = Element.prototype; |
||||
|
|
||||
|
proto.matches = proto.matchesSelector || |
||||
|
proto.mozMatchesSelector || |
||||
|
proto.msMatchesSelector || |
||||
|
proto.oMatchesSelector || |
||||
|
proto.webkitMatchesSelector; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Finds the closest parent that matches a selector. |
||||
|
* |
||||
|
* @param {Element} element |
||||
|
* @param {String} selector |
||||
|
* @return {Function} |
||||
|
*/ |
||||
|
function closest (element, selector) { |
||||
|
while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { |
||||
|
if (typeof element.matches === 'function' && |
||||
|
element.matches(selector)) { |
||||
|
return element; |
||||
|
} |
||||
|
element = element.parentNode; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = closest; |
||||
@ -0,0 +1,78 @@ |
|||||
|
var closest = require('./closest'); |
||||
|
|
||||
|
/** |
||||
|
* Delegates event to a selector. |
||||
|
* |
||||
|
* @param {Element} element |
||||
|
* @param {String} selector |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @param {Boolean} useCapture |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function _delegate(element, selector, type, callback, useCapture) { |
||||
|
var listenerFn = listener.apply(this, arguments); |
||||
|
|
||||
|
element.addEventListener(type, listenerFn, useCapture); |
||||
|
|
||||
|
return { |
||||
|
destroy: function() { |
||||
|
element.removeEventListener(type, listenerFn, useCapture); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Delegates event to a selector. |
||||
|
* |
||||
|
* @param {Element|String|Array} [elements] |
||||
|
* @param {String} selector |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @param {Boolean} useCapture |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function delegate(elements, selector, type, callback, useCapture) { |
||||
|
// Handle the regular Element usage
|
||||
|
if (typeof elements.addEventListener === 'function') { |
||||
|
return _delegate.apply(null, arguments); |
||||
|
} |
||||
|
|
||||
|
// Handle Element-less usage, it defaults to global delegation
|
||||
|
if (typeof type === 'function') { |
||||
|
// Use `document` as the first parameter, then apply arguments
|
||||
|
// This is a short way to .unshift `arguments` without running into deoptimizations
|
||||
|
return _delegate.bind(null, document).apply(null, arguments); |
||||
|
} |
||||
|
|
||||
|
// Handle Selector-based usage
|
||||
|
if (typeof elements === 'string') { |
||||
|
elements = document.querySelectorAll(elements); |
||||
|
} |
||||
|
|
||||
|
// Handle Array-like based usage
|
||||
|
return Array.prototype.map.call(elements, function (element) { |
||||
|
return _delegate(element, selector, type, callback, useCapture); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Finds closest match and invokes callback. |
||||
|
* |
||||
|
* @param {Element} element |
||||
|
* @param {String} selector |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Function} |
||||
|
*/ |
||||
|
function listener(element, selector, type, callback) { |
||||
|
return function(e) { |
||||
|
e.delegateTarget = closest(e.target, selector); |
||||
|
|
||||
|
if (e.delegateTarget) { |
||||
|
callback.call(element, e); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = delegate; |
||||
@ -0,0 +1,45 @@ |
|||||
|
var closest = require('../src/closest'); |
||||
|
|
||||
|
describe('closest', function() { |
||||
|
before(function() { |
||||
|
var html = '<div id="a">' + |
||||
|
'<div id="b">' + |
||||
|
'<div id="c"></div>' + |
||||
|
'</div>' + |
||||
|
'</div>'; |
||||
|
|
||||
|
document.body.innerHTML += html; |
||||
|
|
||||
|
global.a = document.querySelector('#a'); |
||||
|
global.b = document.querySelector('#b'); |
||||
|
global.c = document.querySelector('#c'); |
||||
|
}); |
||||
|
|
||||
|
after(function() { |
||||
|
document.body.innerHTML = ''; |
||||
|
}); |
||||
|
|
||||
|
it('should return the closest parent based on the selector', function() { |
||||
|
assert.ok(closest(global.c, '#b'), global.b); |
||||
|
assert.ok(closest(global.c, '#a'), global.a); |
||||
|
assert.ok(closest(global.b, '#a'), global.a); |
||||
|
}); |
||||
|
|
||||
|
it('should return itself if the same selector is passed', function() { |
||||
|
assert.ok(closest(document.body, 'body'), document.body); |
||||
|
}); |
||||
|
|
||||
|
it('should not throw on elements without matches()', function() { |
||||
|
var fakeElement = { |
||||
|
nodeType: -1, // anything but DOCUMENT_NODE_TYPE
|
||||
|
parentNode: null, |
||||
|
matches: undefined // undefined to emulate Elements without this function
|
||||
|
}; |
||||
|
|
||||
|
try { |
||||
|
closest(fakeElement, '#a') |
||||
|
} catch (err) { |
||||
|
assert.fail(); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
@ -0,0 +1,116 @@ |
|||||
|
var delegate = require('../src/delegate'); |
||||
|
var simulant = require('simulant'); |
||||
|
|
||||
|
describe('delegate', function() { |
||||
|
before(function() { |
||||
|
var html = '<ul>' + |
||||
|
'<li><a>Item 1</a></li>' + |
||||
|
'<li><a>Item 2</a></li>' + |
||||
|
'<li><a>Item 3</a></li>' + |
||||
|
'<li><a>Item 4</a></li>' + |
||||
|
'<li><a>Item 5</a></li>' + |
||||
|
'</ul>'; |
||||
|
|
||||
|
document.body.innerHTML += html; |
||||
|
|
||||
|
global.container = document.querySelector('ul'); |
||||
|
global.anchor = document.querySelector('a'); |
||||
|
|
||||
|
global.spy = sinon.spy(global.container, 'removeEventListener'); |
||||
|
}); |
||||
|
|
||||
|
after(function() { |
||||
|
global.spy.restore(); |
||||
|
document.body.innerHTML = ''; |
||||
|
}); |
||||
|
|
||||
|
it('should add an event listener', function(done) { |
||||
|
delegate(global.container, 'a', 'click', function() { |
||||
|
done(); |
||||
|
}); |
||||
|
|
||||
|
simulant.fire(global.anchor, simulant('click')); |
||||
|
}); |
||||
|
|
||||
|
it('should remove an event listener', function() { |
||||
|
var delegation = delegate(global.container, 'a', 'click', function() {}); |
||||
|
|
||||
|
delegation.destroy(); |
||||
|
assert.ok(global.spy.calledOnce); |
||||
|
}); |
||||
|
|
||||
|
it('should use `document` if the element is unspecified', function(done) { |
||||
|
delegate('a', 'click', function() { |
||||
|
done(); |
||||
|
}); |
||||
|
|
||||
|
simulant.fire(global.anchor, simulant('click')); |
||||
|
}); |
||||
|
|
||||
|
it('should remove an event listener the unspecified base (`document`)', function() { |
||||
|
var delegation = delegate('a', 'click', function() {}); |
||||
|
var spy = sinon.spy(document, 'removeEventListener'); |
||||
|
|
||||
|
delegation.destroy(); |
||||
|
assert.ok(spy.calledOnce); |
||||
|
|
||||
|
spy.restore(); |
||||
|
}); |
||||
|
|
||||
|
it('should add event listeners to all the elements in a base selector', function() { |
||||
|
var spy = sinon.spy(); |
||||
|
delegate('li', 'a', 'click', spy); |
||||
|
|
||||
|
var anchors = document.querySelectorAll('a'); |
||||
|
simulant.fire(anchors[0], simulant('click')); |
||||
|
simulant.fire(anchors[1], simulant('click')); |
||||
|
assert.ok(spy.calledTwice); |
||||
|
}); |
||||
|
|
||||
|
it('should remove the event listeners from all the elements in a base selector', function() { |
||||
|
var items = document.querySelectorAll('li') |
||||
|
var spies = Array.prototype.map.call(items, function (li) { |
||||
|
return sinon.spy(li, 'removeEventListener'); |
||||
|
}); |
||||
|
|
||||
|
var delegations = delegate('li', 'a', 'click', function() {}); |
||||
|
delegations.forEach(function (delegation) { |
||||
|
delegation.destroy(); |
||||
|
}); |
||||
|
|
||||
|
spies.every(function (spy) { |
||||
|
var success = spy.calledOnce; |
||||
|
spy.restore(); |
||||
|
return success; |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
it('should add event listeners to all the elements in a base array', function() { |
||||
|
var spy = sinon.spy(); |
||||
|
var items = document.querySelectorAll('li') |
||||
|
delegate(items, 'a', 'click', spy); |
||||
|
|
||||
|
var anchors = document.querySelectorAll('a') |
||||
|
simulant.fire(anchors[0], simulant('click')); |
||||
|
simulant.fire(anchors[1], simulant('click')); |
||||
|
assert.ok(spy.calledTwice); |
||||
|
}); |
||||
|
|
||||
|
it('should remove the event listeners from all the elements in a base array', function() { |
||||
|
var items = document.querySelectorAll('li') |
||||
|
var spies = Array.prototype.map.call(items, function (li) { |
||||
|
return sinon.spy(li, 'removeEventListener'); |
||||
|
}); |
||||
|
|
||||
|
var delegations = delegate(items, 'a', 'click', function() {}); |
||||
|
delegations.forEach(function (delegation) { |
||||
|
delegation.destroy(); |
||||
|
}); |
||||
|
|
||||
|
spies.every(function (spy) { |
||||
|
var success = spy.calledOnce; |
||||
|
spy.restore(); |
||||
|
return success; |
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
@ -0,0 +1,22 @@ |
|||||
|
# EditorConfig helps developers define and maintain consistent |
||||
|
# coding styles between different editors and IDEs |
||||
|
# http://editorconfig.org |
||||
|
|
||||
|
root = true |
||||
|
|
||||
|
[*] |
||||
|
# Change these settings to your own preference |
||||
|
indent_style = space |
||||
|
indent_size = 4 |
||||
|
|
||||
|
# We recommend you to keep these unchanged |
||||
|
end_of_line = lf |
||||
|
charset = utf-8 |
||||
|
trim_trailing_whitespace = true |
||||
|
insert_final_newline = true |
||||
|
|
||||
|
[*.md] |
||||
|
trim_trailing_whitespace = false |
||||
|
|
||||
|
[{package.json,bower.json}] |
||||
|
indent_size = 2 |
||||
@ -0,0 +1 @@ |
|||||
|
node_modules |
||||
@ -0,0 +1,3 @@ |
|||||
|
language: node_js |
||||
|
node_js: |
||||
|
- stable |
||||
@ -0,0 +1,11 @@ |
|||||
|
{ |
||||
|
"name": "good-listener", |
||||
|
"description": "A more versatile way of adding & removing event listeners", |
||||
|
"version": "1.2.1", |
||||
|
"license": "MIT", |
||||
|
"main": "dist/good-listener.js", |
||||
|
"keywords": [ |
||||
|
"event", |
||||
|
"listener" |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<title>Destroy</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<!-- 1. Write some markup --> |
||||
|
<button class="target">Click me</button> |
||||
|
<button class="target">Click me</button> |
||||
|
<button class="target">Click me</button> |
||||
|
|
||||
|
<!-- 2. Include library --> |
||||
|
<script src="../dist/good-listener.js"></script> |
||||
|
|
||||
|
<!-- 3. Remove listener by calling the destroy function --> |
||||
|
<script> |
||||
|
var listener = listen('.target', 'click', function(e) { |
||||
|
console.info(e); |
||||
|
}); |
||||
|
|
||||
|
listener.destroy(); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,30 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<title>Selector</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<!-- 1. Write some markup --> |
||||
|
<button data-a>Click me</button> |
||||
|
<button data-a>Click me</button> |
||||
|
<button data-a>Click me</button> |
||||
|
<button data-b>Click me</button> |
||||
|
<button data-b>Click me</button> |
||||
|
<button data-b>Click me</button> |
||||
|
|
||||
|
<!-- 2. Include library --> |
||||
|
<script src="../dist/good-listener.js"></script> |
||||
|
|
||||
|
<!-- 3. Add listener by passing a string selector --> |
||||
|
<script> |
||||
|
listen('[data-a]', 'click', function(e) { |
||||
|
console.info(e); |
||||
|
}); |
||||
|
|
||||
|
listen('[data-b]', 'click', function(e) { |
||||
|
console.info(e); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,23 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<title>Node</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<!-- 1. Write some markup --> |
||||
|
<button id="target">Click me</button> |
||||
|
|
||||
|
<!-- 2. Include library --> |
||||
|
<script src="../dist/good-listener.js"></script> |
||||
|
|
||||
|
<!-- 3. Add listener by passing a HTML element --> |
||||
|
<script> |
||||
|
var target = document.getElementById('target'); |
||||
|
|
||||
|
listen(target, 'click', function(e) { |
||||
|
console.info(e); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,25 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<title>NodeList</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<!-- 1. Write some markup --> |
||||
|
<button>Click me</button> |
||||
|
<button>Click me</button> |
||||
|
<button>Click me</button> |
||||
|
|
||||
|
<!-- 2. Include library --> |
||||
|
<script src="../dist/good-listener.js"></script> |
||||
|
|
||||
|
<!-- 3. Add listener by passing a list of HTML elements --> |
||||
|
<script> |
||||
|
var targets = document.querySelectorAll('button'); |
||||
|
|
||||
|
listen(targets, 'click', function(e) { |
||||
|
console.info(e); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,23 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<title>Selector</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<!-- 1. Write some markup --> |
||||
|
<button class="target">Click me</button> |
||||
|
<button class="target">Click me</button> |
||||
|
<button class="target">Click me</button> |
||||
|
|
||||
|
<!-- 2. Include library --> |
||||
|
<script src="../dist/good-listener.js"></script> |
||||
|
|
||||
|
<!-- 3. Add listener by passing a string selector --> |
||||
|
<script> |
||||
|
listen('.target', 'click', function(e) { |
||||
|
console.info(e); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,228 @@ |
|||||
|
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.listen = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ |
||||
|
var DOCUMENT_NODE_TYPE = 9; |
||||
|
|
||||
|
/** |
||||
|
* A polyfill for Element.matches() |
||||
|
*/ |
||||
|
if (typeof Element !== 'undefined' && !Element.prototype.matches) { |
||||
|
var proto = Element.prototype; |
||||
|
|
||||
|
proto.matches = proto.matchesSelector || |
||||
|
proto.mozMatchesSelector || |
||||
|
proto.msMatchesSelector || |
||||
|
proto.oMatchesSelector || |
||||
|
proto.webkitMatchesSelector; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Finds the closest parent that matches a selector. |
||||
|
* |
||||
|
* @param {Element} element |
||||
|
* @param {String} selector |
||||
|
* @return {Function} |
||||
|
*/ |
||||
|
function closest (element, selector) { |
||||
|
while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { |
||||
|
if (element.matches(selector)) return element; |
||||
|
element = element.parentNode; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = closest; |
||||
|
|
||||
|
},{}],2:[function(require,module,exports){ |
||||
|
var closest = require('./closest'); |
||||
|
|
||||
|
/** |
||||
|
* Delegates event to a selector. |
||||
|
* |
||||
|
* @param {Element} element |
||||
|
* @param {String} selector |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @param {Boolean} useCapture |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function delegate(element, selector, type, callback, useCapture) { |
||||
|
var listenerFn = listener.apply(this, arguments); |
||||
|
|
||||
|
element.addEventListener(type, listenerFn, useCapture); |
||||
|
|
||||
|
return { |
||||
|
destroy: function() { |
||||
|
element.removeEventListener(type, listenerFn, useCapture); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Finds closest match and invokes callback. |
||||
|
* |
||||
|
* @param {Element} element |
||||
|
* @param {String} selector |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Function} |
||||
|
*/ |
||||
|
function listener(element, selector, type, callback) { |
||||
|
return function(e) { |
||||
|
e.delegateTarget = closest(e.target, selector); |
||||
|
|
||||
|
if (e.delegateTarget) { |
||||
|
callback.call(element, e); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = delegate; |
||||
|
|
||||
|
},{"./closest":1}],3:[function(require,module,exports){ |
||||
|
/** |
||||
|
* Check if argument is a HTML element. |
||||
|
* |
||||
|
* @param {Object} value |
||||
|
* @return {Boolean} |
||||
|
*/ |
||||
|
exports.node = function(value) { |
||||
|
return value !== undefined |
||||
|
&& value instanceof HTMLElement |
||||
|
&& value.nodeType === 1; |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* Check if argument is a list of HTML elements. |
||||
|
* |
||||
|
* @param {Object} value |
||||
|
* @return {Boolean} |
||||
|
*/ |
||||
|
exports.nodeList = function(value) { |
||||
|
var type = Object.prototype.toString.call(value); |
||||
|
|
||||
|
return value !== undefined |
||||
|
&& (type === '[object NodeList]' || type === '[object HTMLCollection]') |
||||
|
&& ('length' in value) |
||||
|
&& (value.length === 0 || exports.node(value[0])); |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* Check if argument is a string. |
||||
|
* |
||||
|
* @param {Object} value |
||||
|
* @return {Boolean} |
||||
|
*/ |
||||
|
exports.string = function(value) { |
||||
|
return typeof value === 'string' |
||||
|
|| value instanceof String; |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* Check if argument is a function. |
||||
|
* |
||||
|
* @param {Object} value |
||||
|
* @return {Boolean} |
||||
|
*/ |
||||
|
exports.fn = function(value) { |
||||
|
var type = Object.prototype.toString.call(value); |
||||
|
|
||||
|
return type === '[object Function]'; |
||||
|
}; |
||||
|
|
||||
|
},{}],4:[function(require,module,exports){ |
||||
|
var is = require('./is'); |
||||
|
var delegate = require('delegate'); |
||||
|
|
||||
|
/** |
||||
|
* Validates all params and calls the right |
||||
|
* listener function based on its target type. |
||||
|
* |
||||
|
* @param {String|HTMLElement|HTMLCollection|NodeList} target |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function listen(target, type, callback) { |
||||
|
if (!target && !type && !callback) { |
||||
|
throw new Error('Missing required arguments'); |
||||
|
} |
||||
|
|
||||
|
if (!is.string(type)) { |
||||
|
throw new TypeError('Second argument must be a String'); |
||||
|
} |
||||
|
|
||||
|
if (!is.fn(callback)) { |
||||
|
throw new TypeError('Third argument must be a Function'); |
||||
|
} |
||||
|
|
||||
|
if (is.node(target)) { |
||||
|
return listenNode(target, type, callback); |
||||
|
} |
||||
|
else if (is.nodeList(target)) { |
||||
|
return listenNodeList(target, type, callback); |
||||
|
} |
||||
|
else if (is.string(target)) { |
||||
|
return listenSelector(target, type, callback); |
||||
|
} |
||||
|
else { |
||||
|
throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Adds an event listener to a HTML element |
||||
|
* and returns a remove listener function. |
||||
|
* |
||||
|
* @param {HTMLElement} node |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function listenNode(node, type, callback) { |
||||
|
node.addEventListener(type, callback); |
||||
|
|
||||
|
return { |
||||
|
destroy: function() { |
||||
|
node.removeEventListener(type, callback); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Add an event listener to a list of HTML elements |
||||
|
* and returns a remove listener function. |
||||
|
* |
||||
|
* @param {NodeList|HTMLCollection} nodeList |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function listenNodeList(nodeList, type, callback) { |
||||
|
Array.prototype.forEach.call(nodeList, function(node) { |
||||
|
node.addEventListener(type, callback); |
||||
|
}); |
||||
|
|
||||
|
return { |
||||
|
destroy: function() { |
||||
|
Array.prototype.forEach.call(nodeList, function(node) { |
||||
|
node.removeEventListener(type, callback); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Add an event listener to a selector |
||||
|
* and returns a remove listener function. |
||||
|
* |
||||
|
* @param {String} selector |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function listenSelector(selector, type, callback) { |
||||
|
return delegate(document.body, selector, type, callback); |
||||
|
} |
||||
|
|
||||
|
module.exports = listen; |
||||
|
|
||||
|
},{"./is":3,"delegate":2}]},{},[4])(4) |
||||
|
}); |
||||
@ -0,0 +1,24 @@ |
|||||
|
module.exports = function(karma) { |
||||
|
karma.set({ |
||||
|
plugins: ['karma-browserify', 'karma-chai', 'karma-sinon', 'karma-mocha', 'karma-phantomjs-launcher'], |
||||
|
|
||||
|
frameworks: ['browserify', 'chai', 'sinon', 'mocha'], |
||||
|
|
||||
|
files: [ |
||||
|
'src/**/*.js', |
||||
|
'test/**/*.js', |
||||
|
'./node_modules/phantomjs-polyfill/bind-polyfill.js' |
||||
|
], |
||||
|
|
||||
|
preprocessors: { |
||||
|
'src/**/*.js' : ['browserify'], |
||||
|
'test/**/*.js': ['browserify'] |
||||
|
}, |
||||
|
|
||||
|
browserify: { |
||||
|
debug: true |
||||
|
}, |
||||
|
|
||||
|
browsers: ['PhantomJS'] |
||||
|
}); |
||||
|
} |
||||
@ -0,0 +1,67 @@ |
|||||
|
{ |
||||
|
"_from": "good-listener@^1.2.2", |
||||
|
"_id": "good-listener@1.2.2", |
||||
|
"_inBundle": false, |
||||
|
"_integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", |
||||
|
"_location": "/good-listener", |
||||
|
"_phantomChildren": {}, |
||||
|
"_requested": { |
||||
|
"type": "range", |
||||
|
"registry": true, |
||||
|
"raw": "good-listener@^1.2.2", |
||||
|
"name": "good-listener", |
||||
|
"escapedName": "good-listener", |
||||
|
"rawSpec": "^1.2.2", |
||||
|
"saveSpec": null, |
||||
|
"fetchSpec": "^1.2.2" |
||||
|
}, |
||||
|
"_requiredBy": [ |
||||
|
"/clipboard" |
||||
|
], |
||||
|
"_resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", |
||||
|
"_shasum": "d53b30cdf9313dffb7dc9a0d477096aa6d145c50", |
||||
|
"_spec": "good-listener@^1.2.2", |
||||
|
"_where": "C:\\Users\\alper\\Downloads\\node_modules\\clipboard", |
||||
|
"bugs": { |
||||
|
"url": "https://github.com/zenorocha/good-listener/issues" |
||||
|
}, |
||||
|
"bundleDependencies": false, |
||||
|
"dependencies": { |
||||
|
"delegate": "^3.1.2" |
||||
|
}, |
||||
|
"deprecated": false, |
||||
|
"description": "A more versatile way of adding & removing event listeners", |
||||
|
"devDependencies": { |
||||
|
"browserify": "^13.0.0", |
||||
|
"chai": "^3.5.0", |
||||
|
"karma": "^1.3.0", |
||||
|
"karma-browserify": "^5.0.1", |
||||
|
"karma-chai": "^0.1.0", |
||||
|
"karma-mocha": "^1.2.0", |
||||
|
"karma-phantomjs-launcher": "^1.0.0", |
||||
|
"karma-sinon": "^1.0.4", |
||||
|
"mocha": "^3.1.2", |
||||
|
"phantomjs-polyfill": "0.0.2", |
||||
|
"phantomjs-prebuilt": "^2.1.3", |
||||
|
"simulant": "^0.2.2", |
||||
|
"sinon": "^1.17.3", |
||||
|
"watchify": "^3.7.0" |
||||
|
}, |
||||
|
"homepage": "https://github.com/zenorocha/good-listener#readme", |
||||
|
"keywords": [ |
||||
|
"event", |
||||
|
"listener" |
||||
|
], |
||||
|
"license": "MIT", |
||||
|
"main": "src/listen.js", |
||||
|
"name": "good-listener", |
||||
|
"repository": { |
||||
|
"type": "git", |
||||
|
"url": "git+https://github.com/zenorocha/good-listener.git" |
||||
|
}, |
||||
|
"scripts": { |
||||
|
"build": "browserify src/listen.js -s listen -o dist/good-listener.js", |
||||
|
"test": "karma start --single-run" |
||||
|
}, |
||||
|
"version": "1.2.2" |
||||
|
} |
||||
@ -0,0 +1,91 @@ |
|||||
|
# good-listener |
||||
|
|
||||
|
[](https://travis-ci.org/zenorocha/good-listener) |
||||
|
|
||||
|
> A more versatile way of adding & removing event listeners. |
||||
|
|
||||
|
 |
||||
|
|
||||
|
## Install |
||||
|
|
||||
|
You can get it on npm. |
||||
|
|
||||
|
``` |
||||
|
npm install good-listener --save |
||||
|
``` |
||||
|
|
||||
|
Or bower, too. |
||||
|
|
||||
|
``` |
||||
|
bower install good-listener --save |
||||
|
``` |
||||
|
|
||||
|
If you're not into package management, just [download a ZIP](https://github.com/zenorocha/good-listener/archive/master.zip) file. |
||||
|
|
||||
|
## Setup |
||||
|
|
||||
|
###### Node (Browserify) |
||||
|
|
||||
|
```js |
||||
|
var listen = require('good-listener'); |
||||
|
``` |
||||
|
|
||||
|
###### Browser (Standalone) |
||||
|
|
||||
|
```html |
||||
|
<script src="dist/good-listener.js"></script> |
||||
|
``` |
||||
|
|
||||
|
## Usage |
||||
|
|
||||
|
### Add an event listener |
||||
|
|
||||
|
By passing a string selector [(see full demo)](https://github.com/zenorocha/good-listener/blob/master/demo/selector.html). |
||||
|
|
||||
|
```js |
||||
|
listen('.btn', 'click', function(e) { |
||||
|
console.log(e); |
||||
|
}); |
||||
|
``` |
||||
|
|
||||
|
Or by passing a HTML element [(see full demo)](https://github.com/zenorocha/good-listener/blob/master/demo/node.html). |
||||
|
|
||||
|
```js |
||||
|
var logo = document.getElementById('logo'); |
||||
|
|
||||
|
listen(logo, 'click', function(e) { |
||||
|
console.log(e); |
||||
|
}); |
||||
|
``` |
||||
|
|
||||
|
Or by passing a list of HTML elements [(see full demo)](https://github.com/zenorocha/good-listener/blob/master/demo/nodelist.html). |
||||
|
|
||||
|
```js |
||||
|
var anchors = document.querySelectorAll('a'); |
||||
|
|
||||
|
listen(anchors, 'click', function(e) { |
||||
|
console.log(e); |
||||
|
}); |
||||
|
``` |
||||
|
|
||||
|
### Remove an event listener |
||||
|
|
||||
|
By calling the `destroy` function that returned from previous operation [(see full demo)](https://github.com/zenorocha/good-listener/blob/master/demo/destroy.html). |
||||
|
|
||||
|
```js |
||||
|
var listener = listen('.btn', 'click', function(e) { |
||||
|
console.log(e); |
||||
|
}); |
||||
|
|
||||
|
listener.destroy(); |
||||
|
``` |
||||
|
|
||||
|
## Browser Support |
||||
|
|
||||
|
| <img src="https://clipboardjs.com/assets/images/chrome.png" width="48px" height="48px" alt="Chrome logo"> | <img src="https://clipboardjs.com/assets/images/edge.png" width="48px" height="48px" alt="Edge logo"> | <img src="https://clipboardjs.com/assets/images/firefox.png" width="48px" height="48px" alt="Firefox logo"> | <img src="https://clipboardjs.com/assets/images/ie.png" width="48px" height="48px" alt="Internet Explorer logo"> | <img src="https://clipboardjs.com/assets/images/opera.png" width="48px" height="48px" alt="Opera logo"> | <img src="https://clipboardjs.com/assets/images/safari.png" width="48px" height="48px" alt="Safari logo"> | |
||||
|
|:---:|:---:|:---:|:---:|:---:|:---:| |
||||
|
| Latest ✔ | Latest ✔ | Latest ✔ | 9+ ✔ | Latest ✔ | Latest ✔ | |
||||
|
|
||||
|
## License |
||||
|
|
||||
|
[MIT License](http://zenorocha.mit-license.org/) © Zeno Rocha |
||||
@ -0,0 +1,49 @@ |
|||||
|
/** |
||||
|
* Check if argument is a HTML element. |
||||
|
* |
||||
|
* @param {Object} value |
||||
|
* @return {Boolean} |
||||
|
*/ |
||||
|
exports.node = function(value) { |
||||
|
return value !== undefined |
||||
|
&& value instanceof HTMLElement |
||||
|
&& value.nodeType === 1; |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* Check if argument is a list of HTML elements. |
||||
|
* |
||||
|
* @param {Object} value |
||||
|
* @return {Boolean} |
||||
|
*/ |
||||
|
exports.nodeList = function(value) { |
||||
|
var type = Object.prototype.toString.call(value); |
||||
|
|
||||
|
return value !== undefined |
||||
|
&& (type === '[object NodeList]' || type === '[object HTMLCollection]') |
||||
|
&& ('length' in value) |
||||
|
&& (value.length === 0 || exports.node(value[0])); |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* Check if argument is a string. |
||||
|
* |
||||
|
* @param {Object} value |
||||
|
* @return {Boolean} |
||||
|
*/ |
||||
|
exports.string = function(value) { |
||||
|
return typeof value === 'string' |
||||
|
|| value instanceof String; |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* Check if argument is a function. |
||||
|
* |
||||
|
* @param {Object} value |
||||
|
* @return {Boolean} |
||||
|
*/ |
||||
|
exports.fn = function(value) { |
||||
|
var type = Object.prototype.toString.call(value); |
||||
|
|
||||
|
return type === '[object Function]'; |
||||
|
}; |
||||
@ -0,0 +1,95 @@ |
|||||
|
var is = require('./is'); |
||||
|
var delegate = require('delegate'); |
||||
|
|
||||
|
/** |
||||
|
* Validates all params and calls the right |
||||
|
* listener function based on its target type. |
||||
|
* |
||||
|
* @param {String|HTMLElement|HTMLCollection|NodeList} target |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function listen(target, type, callback) { |
||||
|
if (!target && !type && !callback) { |
||||
|
throw new Error('Missing required arguments'); |
||||
|
} |
||||
|
|
||||
|
if (!is.string(type)) { |
||||
|
throw new TypeError('Second argument must be a String'); |
||||
|
} |
||||
|
|
||||
|
if (!is.fn(callback)) { |
||||
|
throw new TypeError('Third argument must be a Function'); |
||||
|
} |
||||
|
|
||||
|
if (is.node(target)) { |
||||
|
return listenNode(target, type, callback); |
||||
|
} |
||||
|
else if (is.nodeList(target)) { |
||||
|
return listenNodeList(target, type, callback); |
||||
|
} |
||||
|
else if (is.string(target)) { |
||||
|
return listenSelector(target, type, callback); |
||||
|
} |
||||
|
else { |
||||
|
throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Adds an event listener to a HTML element |
||||
|
* and returns a remove listener function. |
||||
|
* |
||||
|
* @param {HTMLElement} node |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function listenNode(node, type, callback) { |
||||
|
node.addEventListener(type, callback); |
||||
|
|
||||
|
return { |
||||
|
destroy: function() { |
||||
|
node.removeEventListener(type, callback); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Add an event listener to a list of HTML elements |
||||
|
* and returns a remove listener function. |
||||
|
* |
||||
|
* @param {NodeList|HTMLCollection} nodeList |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function listenNodeList(nodeList, type, callback) { |
||||
|
Array.prototype.forEach.call(nodeList, function(node) { |
||||
|
node.addEventListener(type, callback); |
||||
|
}); |
||||
|
|
||||
|
return { |
||||
|
destroy: function() { |
||||
|
Array.prototype.forEach.call(nodeList, function(node) { |
||||
|
node.removeEventListener(type, callback); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Add an event listener to a selector |
||||
|
* and returns a remove listener function. |
||||
|
* |
||||
|
* @param {String} selector |
||||
|
* @param {String} type |
||||
|
* @param {Function} callback |
||||
|
* @return {Object} |
||||
|
*/ |
||||
|
function listenSelector(selector, type, callback) { |
||||
|
return delegate(document.body, selector, type, callback); |
||||
|
} |
||||
|
|
||||
|
module.exports = listen; |
||||
@ -0,0 +1,111 @@ |
|||||
|
var is = require('../src/is'); |
||||
|
|
||||
|
describe('is', function() { |
||||
|
before(function() { |
||||
|
global.node = document.createElement('div'); |
||||
|
global.node.setAttribute('id', 'foo'); |
||||
|
global.node.setAttribute('class', 'foo'); |
||||
|
document.body.appendChild(global.node); |
||||
|
}); |
||||
|
|
||||
|
after(function() { |
||||
|
document.body.innerHTML = ''; |
||||
|
}); |
||||
|
|
||||
|
describe('is.node', function() { |
||||
|
it('should be considered as node', function() { |
||||
|
assert.ok(is.node(document.getElementById('foo'))); |
||||
|
assert.ok(is.node(document.getElementsByTagName('div')[0])); |
||||
|
assert.ok(is.node(document.getElementsByClassName('foo')[0])); |
||||
|
assert.ok(is.node(document.querySelector('.foo'))); |
||||
|
}); |
||||
|
|
||||
|
it('should not be considered as node', function() { |
||||
|
assert.notOk(is.node(undefined)); |
||||
|
assert.notOk(is.node(null)); |
||||
|
assert.notOk(is.node(false)); |
||||
|
assert.notOk(is.node(true)); |
||||
|
assert.notOk(is.node(function () {})); |
||||
|
assert.notOk(is.node([])); |
||||
|
assert.notOk(is.node({})); |
||||
|
assert.notOk(is.node(/a/g)); |
||||
|
assert.notOk(is.node(new RegExp('a', 'g'))); |
||||
|
assert.notOk(is.node(new Date())); |
||||
|
assert.notOk(is.node(42)); |
||||
|
assert.notOk(is.node(NaN)); |
||||
|
assert.notOk(is.node(Infinity)); |
||||
|
assert.notOk(is.node(new Number(42))); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('is.nodeList', function() { |
||||
|
it('should be considered as nodeList', function() { |
||||
|
assert.ok(is.nodeList(document.getElementsByTagName('div'))); |
||||
|
assert.ok(is.nodeList(document.getElementsByClassName('foo'))); |
||||
|
assert.ok(is.nodeList(document.querySelectorAll('.foo'))); |
||||
|
}); |
||||
|
|
||||
|
it('should not be considered as nodeList', function() { |
||||
|
assert.notOk(is.nodeList(undefined)); |
||||
|
assert.notOk(is.nodeList(null)); |
||||
|
assert.notOk(is.nodeList(false)); |
||||
|
assert.notOk(is.nodeList(true)); |
||||
|
assert.notOk(is.nodeList(function () {})); |
||||
|
assert.notOk(is.nodeList([])); |
||||
|
assert.notOk(is.nodeList({})); |
||||
|
assert.notOk(is.nodeList(/a/g)); |
||||
|
assert.notOk(is.nodeList(new RegExp('a', 'g'))); |
||||
|
assert.notOk(is.nodeList(new Date())); |
||||
|
assert.notOk(is.nodeList(42)); |
||||
|
assert.notOk(is.nodeList(NaN)); |
||||
|
assert.notOk(is.nodeList(Infinity)); |
||||
|
assert.notOk(is.nodeList(new Number(42))); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('is.string', function() { |
||||
|
it('should be considered as string', function() { |
||||
|
assert.ok(is.string('abc')); |
||||
|
assert.ok(is.string(new String('abc'))); |
||||
|
}); |
||||
|
|
||||
|
it('should not be considered as string', function() { |
||||
|
assert.notOk(is.string(undefined)); |
||||
|
assert.notOk(is.string(null)); |
||||
|
assert.notOk(is.string(false)); |
||||
|
assert.notOk(is.string(true)); |
||||
|
assert.notOk(is.string(function () {})); |
||||
|
assert.notOk(is.string([])); |
||||
|
assert.notOk(is.string({})); |
||||
|
assert.notOk(is.string(/a/g)); |
||||
|
assert.notOk(is.string(new RegExp('a', 'g'))); |
||||
|
assert.notOk(is.string(new Date())); |
||||
|
assert.notOk(is.string(42)); |
||||
|
assert.notOk(is.string(NaN)); |
||||
|
assert.notOk(is.string(Infinity)); |
||||
|
assert.notOk(is.string(new Number(42))); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('is.fn', function() { |
||||
|
it('should be considered as function', function() { |
||||
|
assert.ok(is.fn(function () {})); |
||||
|
}); |
||||
|
|
||||
|
it('should not be considered as function', function() { |
||||
|
assert.notOk(is.fn(undefined)); |
||||
|
assert.notOk(is.fn(null)); |
||||
|
assert.notOk(is.fn(false)); |
||||
|
assert.notOk(is.fn(true)); |
||||
|
assert.notOk(is.fn([])); |
||||
|
assert.notOk(is.fn({})); |
||||
|
assert.notOk(is.fn(/a/g)); |
||||
|
assert.notOk(is.fn(new RegExp('a', 'g'))); |
||||
|
assert.notOk(is.fn(new Date())); |
||||
|
assert.notOk(is.fn(42)); |
||||
|
assert.notOk(is.fn(NaN)); |
||||
|
assert.notOk(is.fn(Infinity)); |
||||
|
assert.notOk(is.fn(new Number(42))); |
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
@ -0,0 +1,135 @@ |
|||||
|
var listen = require('../src/listen'); |
||||
|
var simulant = require('simulant'); |
||||
|
|
||||
|
describe('good-listener', function() { |
||||
|
before(function() { |
||||
|
global.node = document.createElement('div'); |
||||
|
global.node.setAttribute('id', 'foo'); |
||||
|
global.node.setAttribute('class', 'foo'); |
||||
|
document.body.appendChild(global.node); |
||||
|
}); |
||||
|
|
||||
|
after(function() { |
||||
|
document.body.innerHTML = ''; |
||||
|
}); |
||||
|
|
||||
|
describe('listen', function() { |
||||
|
it('should throw an error since arguments were not passed', function(done) { |
||||
|
try { |
||||
|
listen(); |
||||
|
} |
||||
|
catch(error) { |
||||
|
assert.equal(error.message, 'Missing required arguments'); |
||||
|
done(); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
it('should throw an error since "target" was invalid', function(done) { |
||||
|
try { |
||||
|
listen(null, 'click', function() {}); |
||||
|
} |
||||
|
catch(error) { |
||||
|
assert.equal(error.message, 'First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); |
||||
|
done(); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
it('should throw an error since "type" was invalid', function(done) { |
||||
|
try { |
||||
|
listen('.btn', false, function() {}); |
||||
|
} |
||||
|
catch(error) { |
||||
|
assert.equal(error.message, 'Second argument must be a String'); |
||||
|
done(); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
it('should throw an error since "callback" was invalid', function(done) { |
||||
|
try { |
||||
|
listen('.btn', 'click', []); |
||||
|
} |
||||
|
catch(error) { |
||||
|
assert.equal(error.message, 'Third argument must be a Function'); |
||||
|
done(); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('listenNode', function() { |
||||
|
before(function() { |
||||
|
global.target = document.querySelector('#foo'); |
||||
|
global.spy = sinon.spy(global.target, 'removeEventListener'); |
||||
|
}); |
||||
|
|
||||
|
after(function() { |
||||
|
global.spy.restore(); |
||||
|
}); |
||||
|
|
||||
|
it('should add an event listener', function(done) { |
||||
|
listen(global.target, 'click', function() { |
||||
|
done(); |
||||
|
}); |
||||
|
|
||||
|
simulant.fire(global.target, simulant('click')); |
||||
|
}); |
||||
|
|
||||
|
it('should remove an event listener', function() { |
||||
|
var listener = listen(global.target, 'click', function() {}); |
||||
|
|
||||
|
listener.destroy(); |
||||
|
assert.ok(global.spy.calledOnce); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('listenNodeList', function() { |
||||
|
before(function() { |
||||
|
global.targets = document.querySelectorAll('.foo'); |
||||
|
global.spy = sinon.spy(global.targets[0], 'removeEventListener'); |
||||
|
}); |
||||
|
|
||||
|
after(function() { |
||||
|
global.spy.restore(); |
||||
|
}); |
||||
|
|
||||
|
it('should add an event listener', function(done) { |
||||
|
listen(global.targets, 'click', function() { |
||||
|
done(); |
||||
|
}); |
||||
|
|
||||
|
simulant.fire(global.targets[0], simulant('click')); |
||||
|
}); |
||||
|
|
||||
|
it('should remove an event listener', function() { |
||||
|
var listener = listen(global.targets, 'click', function() {}); |
||||
|
|
||||
|
listener.destroy(); |
||||
|
assert.ok(global.spy.calledOnce); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('listenSelector', function() { |
||||
|
before(function() { |
||||
|
global.target = document.querySelector('.foo'); |
||||
|
global.spy = sinon.spy(document.body, 'removeEventListener'); |
||||
|
}); |
||||
|
|
||||
|
after(function() { |
||||
|
global.spy.restore(); |
||||
|
}); |
||||
|
|
||||
|
it('should add an event listener', function(done) { |
||||
|
listen('.foo', 'click', function() { |
||||
|
done(); |
||||
|
}); |
||||
|
|
||||
|
simulant.fire(global.target, simulant('click')); |
||||
|
}); |
||||
|
|
||||
|
it('should remove an event listener', function() { |
||||
|
var listener = listen('.foo', 'click', function() {}); |
||||
|
|
||||
|
listener.destroy(); |
||||
|
assert.ok(global.spy.calledOnce); |
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
@ -1,355 +0,0 @@ |
|||||
/* PrismJS 1.15.0 |
|
||||
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+c+csharp+cpp+aspnet+http+java+json+objectivec+sql+jsx+typescript+sass+scss+yaml+tsx&plugins=line-highlight+line-numbers+show-invisibles+autolinker+custom-class+file-highlight+toolbar+jsonp-highlight+highlight-keywords+command-line+normalize-whitespace+keep-markup+show-language+copy-to-clipboard */ |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
* prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML |
|
||||
* Based on https://github.com/chriskempson/tomorrow-theme |
|
||||
* @author Rose Pritchard |
|
||||
*/ |
|
||||
|
|
||||
code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
color: #cdd8ef; |
|
||||
background: none; |
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; |
|
||||
font-family: Menlo, Monaco, Consolas, "Courier New", monospace; |
|
||||
text-align: left; |
|
||||
white-space: pre; |
|
||||
word-spacing: normal; |
|
||||
word-break: normal; |
|
||||
word-wrap: normal; |
|
||||
line-height: 1.5; |
|
||||
-moz-tab-size: 4; |
|
||||
-o-tab-size: 4; |
|
||||
tab-size: 4; |
|
||||
-webkit-hyphens: none; |
|
||||
-moz-hyphens: none; |
|
||||
-ms-hyphens: none; |
|
||||
hyphens: none; |
|
||||
font-size: 12px; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
/* Code blocks */ |
|
||||
|
|
||||
pre[class*="language-"] { |
|
||||
padding: 1em; |
|
||||
margin: .5em 0; |
|
||||
overflow: auto; |
|
||||
} |
|
||||
|
|
||||
:not(pre)>code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
background: #222; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
/* Inline code */ |
|
||||
|
|
||||
:not(pre)>code[class*="language-"] { |
|
||||
padding: .1em; |
|
||||
border-radius: .3em; |
|
||||
white-space: normal; |
|
||||
} |
|
||||
|
|
||||
.token.comment, |
|
||||
.token.block-comment, |
|
||||
.token.prolog, |
|
||||
.token.doctype, |
|
||||
.token.cdata { |
|
||||
color: #999; |
|
||||
} |
|
||||
|
|
||||
.token.punctuation { |
|
||||
color: #ccc; |
|
||||
} |
|
||||
|
|
||||
.token.tag, |
|
||||
.token.attr-name, |
|
||||
.token.namespace, |
|
||||
.token.deleted { |
|
||||
color: #fb3e7f; |
|
||||
} |
|
||||
|
|
||||
.token.function-name { |
|
||||
color: #6196cc; |
|
||||
} |
|
||||
|
|
||||
.token.boolean, |
|
||||
.token.number, |
|
||||
.token.function { |
|
||||
color: #ff4ea8; |
|
||||
} |
|
||||
|
|
||||
.token.property, |
|
||||
.token.class-name, |
|
||||
.token.constant, |
|
||||
.token.symbol { |
|
||||
color: #ecf44a; |
|
||||
} |
|
||||
|
|
||||
.token.selector, |
|
||||
.token.important, |
|
||||
.token.atrule, |
|
||||
.token.keyword, |
|
||||
.token.builtin { |
|
||||
color: #0f9bfb; |
|
||||
} |
|
||||
|
|
||||
.token.string, |
|
||||
.token.char, |
|
||||
.token.attr-value, |
|
||||
.token.regex, |
|
||||
.token.variable { |
|
||||
color: #7ec699; |
|
||||
} |
|
||||
|
|
||||
.token.operator, |
|
||||
.token.entity, |
|
||||
.token.url { |
|
||||
color: #67cdcc; |
|
||||
} |
|
||||
|
|
||||
.token.important, |
|
||||
.token.bold { |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
|
|
||||
.token.italic { |
|
||||
font-style: italic; |
|
||||
} |
|
||||
|
|
||||
.token.entity { |
|
||||
cursor: help; |
|
||||
} |
|
||||
|
|
||||
.token.inserted { |
|
||||
color: green; |
|
||||
} |
|
||||
|
|
||||
pre[data-line] { |
|
||||
position: relative; |
|
||||
padding: 1em 0 1em 3em; |
|
||||
} |
|
||||
|
|
||||
.line-highlight { |
|
||||
position: absolute; |
|
||||
left: 0; |
|
||||
right: 0; |
|
||||
padding: inherit 0; |
|
||||
margin-top: 1em; |
|
||||
/* Same as .prism’s padding-top */ |
|
||||
background: rgba(233, 3, 82, 0.2); |
|
||||
pointer-events: none; |
|
||||
line-height: inherit; |
|
||||
white-space: pre; |
|
||||
} |
|
||||
|
|
||||
.line-highlight:before, |
|
||||
.line-highlight[data-end]:after { |
|
||||
content: attr(data-start); |
|
||||
position: absolute; |
|
||||
top: .4em; |
|
||||
left: .6em; |
|
||||
min-width: 1em; |
|
||||
padding: 0 .5em; |
|
||||
background: rgba(233, 3, 82, 0.2); |
|
||||
color: hsl(24, 20%, 95%); |
|
||||
font: bold 65%/1.5 sans-serif; |
|
||||
text-align: center; |
|
||||
vertical-align: .3em; |
|
||||
border-radius: 999px; |
|
||||
text-shadow: none; |
|
||||
box-shadow: 0 1px white; |
|
||||
} |
|
||||
|
|
||||
.line-highlight[data-end]:after { |
|
||||
content: attr(data-end); |
|
||||
top: auto; |
|
||||
bottom: .4em; |
|
||||
} |
|
||||
|
|
||||
.line-numbers .line-highlight:before, |
|
||||
.line-numbers .line-highlight:after { |
|
||||
content: none; |
|
||||
} |
|
||||
|
|
||||
pre[class*="language-"].line-numbers { |
|
||||
position: relative; |
|
||||
padding-left: 3.4em; |
|
||||
counter-reset: linenumber; |
|
||||
} |
|
||||
|
|
||||
pre[class*="language-"].line-numbers>code { |
|
||||
position: relative; |
|
||||
white-space: inherit; |
|
||||
} |
|
||||
|
|
||||
.line-numbers .line-numbers-rows { |
|
||||
position: absolute; |
|
||||
pointer-events: none; |
|
||||
top: 0; |
|
||||
font-size: 100%; |
|
||||
left: -3.8em; |
|
||||
width: 3em; |
|
||||
/* works for line-numbers below 1000 lines */ |
|
||||
letter-spacing: -1px; |
|
||||
border-right: 1px solid #444; |
|
||||
-webkit-user-select: none; |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
user-select: none; |
|
||||
} |
|
||||
|
|
||||
.line-numbers-rows>span { |
|
||||
pointer-events: none; |
|
||||
display: block; |
|
||||
counter-increment: linenumber; |
|
||||
} |
|
||||
|
|
||||
.line-numbers-rows>span:before { |
|
||||
content: counter(linenumber); |
|
||||
color: #444; |
|
||||
display: block; |
|
||||
padding-right: 0.8em; |
|
||||
text-align: right; |
|
||||
} |
|
||||
|
|
||||
.token.tab:not(:empty), |
|
||||
.token.cr, |
|
||||
.token.lf, |
|
||||
.token.space { |
|
||||
position: relative; |
|
||||
} |
|
||||
|
|
||||
.token.tab:not(:empty):before, |
|
||||
.token.cr:before, |
|
||||
.token.lf:before, |
|
||||
.token.space:before { |
|
||||
color: #455075; |
|
||||
position: absolute; |
|
||||
} |
|
||||
|
|
||||
.token.tab:not(:empty):before { |
|
||||
content: '\21E5'; |
|
||||
} |
|
||||
|
|
||||
.token.cr:before { |
|
||||
content: '\240D'; |
|
||||
} |
|
||||
|
|
||||
.token.crlf:before { |
|
||||
content: '\240D\240A'; |
|
||||
} |
|
||||
|
|
||||
.token.lf:before { |
|
||||
content: '\240A'; |
|
||||
margin-left: 4px; |
|
||||
opacity: .5; |
|
||||
} |
|
||||
|
|
||||
.token.space:before { |
|
||||
content: '\00B7'; |
|
||||
/* arm */ |
|
||||
color: #222; |
|
||||
margin-left: -4px; |
|
||||
} |
|
||||
|
|
||||
.token a { |
|
||||
color: inherit; |
|
||||
} |
|
||||
|
|
||||
div.code-toolbar { |
|
||||
position: relative; |
|
||||
} |
|
||||
|
|
||||
div.code-toolbar>.toolbar { |
|
||||
position: absolute; |
|
||||
top: .3em; |
|
||||
right: .2em; |
|
||||
transition: opacity 0.3s ease-in-out; |
|
||||
opacity: 0; |
|
||||
} |
|
||||
|
|
||||
div.code-toolbar:hover>.toolbar { |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
div.code-toolbar>.toolbar .toolbar-item { |
|
||||
display: inline-block; |
|
||||
} |
|
||||
|
|
||||
div.code-toolbar>.toolbar a { |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
div.code-toolbar>.toolbar button { |
|
||||
background: none; |
|
||||
border: 0; |
|
||||
color: inherit; |
|
||||
font: inherit; |
|
||||
line-height: normal; |
|
||||
overflow: visible; |
|
||||
padding: 0; |
|
||||
-webkit-user-select: none; |
|
||||
/* for button */ |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
} |
|
||||
|
|
||||
div.code-toolbar>.toolbar a, |
|
||||
div.code-toolbar>.toolbar button, |
|
||||
div.code-toolbar>.toolbar span { |
|
||||
color: #bbb; |
|
||||
font-size: .8em; |
|
||||
padding: 0 .5em; |
|
||||
background: #f5f2f0; |
|
||||
background: rgba(224, 224, 224, 0.2); |
|
||||
box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); |
|
||||
border-radius: .5em; |
|
||||
} |
|
||||
|
|
||||
div.code-toolbar>.toolbar a:hover, |
|
||||
div.code-toolbar>.toolbar a:focus, |
|
||||
div.code-toolbar>.toolbar button:hover, |
|
||||
div.code-toolbar>.toolbar button:focus, |
|
||||
div.code-toolbar>.toolbar span:hover, |
|
||||
div.code-toolbar>.toolbar span:focus { |
|
||||
color: inherit; |
|
||||
text-decoration: none; |
|
||||
} |
|
||||
|
|
||||
.command-line-prompt { |
|
||||
border-right: 1px solid #999; |
|
||||
display: block; |
|
||||
float: left; |
|
||||
font-size: 100%; |
|
||||
letter-spacing: -1px; |
|
||||
margin-right: 1em; |
|
||||
pointer-events: none; |
|
||||
-webkit-user-select: none; |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
user-select: none; |
|
||||
} |
|
||||
|
|
||||
.command-line-prompt>span:before { |
|
||||
color: #999; |
|
||||
content: ' '; |
|
||||
display: block; |
|
||||
padding-right: 0.8em; |
|
||||
} |
|
||||
|
|
||||
.command-line-prompt>span[data-user]:before { |
|
||||
content: "[" attr(data-user) "@" attr(data-host) "] $"; |
|
||||
} |
|
||||
|
|
||||
.command-line-prompt>span[data-user="root"]:before { |
|
||||
content: "[" attr(data-user) "@" attr(data-host) "] #"; |
|
||||
} |
|
||||
|
|
||||
.command-line-prompt>span[data-prompt]:before { |
|
||||
content: attr(data-prompt); |
|
||||
} |
|
||||
|
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
@ -0,0 +1,21 @@ |
|||||
|
MIT LICENSE |
||||
|
|
||||
|
Copyright (c) 2012 Lea Verou |
||||
|
|
||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
|
of this software and associated documentation files (the "Software"), to deal |
||||
|
in the Software without restriction, including without limitation the rights |
||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
|
copies of the Software, and to permit persons to whom the Software is |
||||
|
furnished to do so, subject to the following conditions: |
||||
|
|
||||
|
The above copyright notice and this permission notice shall be included in |
||||
|
all copies or substantial portions of the Software. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
||||
|
THE SOFTWARE. |
||||
@ -0,0 +1,26 @@ |
|||||
|
# [Prism](http://prismjs.com/) |
||||
|
|
||||
|
Prism is a lightweight, robust, elegant syntax highlighting library. It's a spin-off project from [Dabblet](http://dabblet.com/). |
||||
|
|
||||
|
You can learn more on http://prismjs.com/. |
||||
|
|
||||
|
Why another syntax highlighter?: http://lea.verou.me/2012/07/introducing-prism-an-awesome-new-syntax-highlighter/#more-1841 |
||||
|
|
||||
|
## Contribute to Prism! |
||||
|
|
||||
|
Prism depends on community contributions to expand and cover a wider array of use cases. If you like it, considering giving back by sending a pull request. Here are a few tips: |
||||
|
|
||||
|
- Read the [documentation](http://prismjs.com/extending.html). Prism was designed to be extensible. |
||||
|
- Do not edit `prism.js`, it’s just the version of Prism used by the Prism website and is built automatically. Limit your changes to the unminified files in the components/ folder. The minified files are also generated automatically. |
||||
|
- The build system uses [gulp](https://github.com/gulpjs/gulp) to minify the files and build `prism.js`. Having gulp installed, you just need to run the command `gulp`. |
||||
|
- Please follow the code conventions used in the files already. For example, I use [tabs for indentation and spaces for alignment](http://lea.verou.me/2012/01/why-tabs-are-clearly-superior/). Opening braces are on the same line, closing braces on their own line regardless of construct. There is a space before the opening brace. etc etc. |
||||
|
- Please try to err towards more smaller PRs rather than few huge PRs. If a PR includes changes I want to merge and changes I don't, handling it becomes difficult. |
||||
|
- My time is very limited these days, so it might take a long time to review longer PRs (short ones are usually merged very quickly), especially those modifying the Prism Core. This doesn't mean your PR is rejected. |
||||
|
- If you contribute a new language definition, you will be responsible for handling bug reports about that language definition. |
||||
|
- If you add a new language definition, theme or plugin, you need to add it to `components.js` as well, so that it becomes available to the download build page. |
||||
|
|
||||
|
Thank you so much for contributing!! |
||||
|
|
||||
|
## Translations |
||||
|
|
||||
|
* [](http://www.awesomes.cn/repo/PrismJS/prism) |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,867 @@ |
|||||
|
{ |
||||
|
"core": { |
||||
|
"meta": { |
||||
|
"path": "components/prism-core.js", |
||||
|
"option": "mandatory" |
||||
|
}, |
||||
|
"core": "Core" |
||||
|
}, |
||||
|
"themes": { |
||||
|
"meta": { |
||||
|
"path": "themes/{id}.css", |
||||
|
"link": "index.html?theme={id}", |
||||
|
"exclusive": true |
||||
|
}, |
||||
|
"prism": { |
||||
|
"title": "Default", |
||||
|
"option": "default" |
||||
|
}, |
||||
|
"prism-dark": "Dark", |
||||
|
"prism-funky": "Funky", |
||||
|
"prism-okaidia": { |
||||
|
"title": "Okaidia", |
||||
|
"owner": "ocodia" |
||||
|
}, |
||||
|
"prism-twilight": { |
||||
|
"title": "Twilight", |
||||
|
"owner": "remybach" |
||||
|
}, |
||||
|
"prism-coy": { |
||||
|
"title": "Coy", |
||||
|
"owner": "tshedor" |
||||
|
}, |
||||
|
"prism-solarizedlight": { |
||||
|
"title": "Solarized Light", |
||||
|
"owner": "hectormatos2011 " |
||||
|
}, |
||||
|
"prism-tomorrow": { |
||||
|
"title": "Tomorrow Night", |
||||
|
"owner": "Rosey" |
||||
|
} |
||||
|
}, |
||||
|
"languages": { |
||||
|
"meta": { |
||||
|
"path": "components/prism-{id}", |
||||
|
"noCSS": true, |
||||
|
"examplesPath": "examples/prism-{id}", |
||||
|
"addCheckAll": true |
||||
|
}, |
||||
|
"markup": { |
||||
|
"title": "Markup", |
||||
|
"alias": ["html", "xml", "svg", "mathml"], |
||||
|
"aliasTitles": { |
||||
|
"html": "HTML", |
||||
|
"xml": "XML", |
||||
|
"svg": "SVG", |
||||
|
"mathml": "MathML" |
||||
|
}, |
||||
|
"option": "default" |
||||
|
}, |
||||
|
"css": { |
||||
|
"title": "CSS", |
||||
|
"option": "default", |
||||
|
"peerDependencies": "markup" |
||||
|
}, |
||||
|
"clike": { |
||||
|
"title": "C-like", |
||||
|
"option": "default", |
||||
|
"overrideExampleHeader": true |
||||
|
}, |
||||
|
"javascript": { |
||||
|
"title": "JavaScript", |
||||
|
"require": "clike", |
||||
|
"peerDependencies": "markup", |
||||
|
"alias": "js", |
||||
|
"option": "default" |
||||
|
}, |
||||
|
"abap": { |
||||
|
"title": "ABAP", |
||||
|
"owner": "dellagustin" |
||||
|
}, |
||||
|
"actionscript": { |
||||
|
"title": "ActionScript", |
||||
|
"require": "javascript", |
||||
|
"peerDependencies": "markup", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"ada": { |
||||
|
"title": "Ada", |
||||
|
"owner": "Lucretia" |
||||
|
}, |
||||
|
"apacheconf": { |
||||
|
"title": "Apache Configuration", |
||||
|
"owner": "GuiTeK" |
||||
|
}, |
||||
|
"apl": { |
||||
|
"title": "APL", |
||||
|
"owner": "ngn" |
||||
|
}, |
||||
|
"applescript": { |
||||
|
"title": "AppleScript", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"arduino": { |
||||
|
"title": "Arduino", |
||||
|
"require": "cpp", |
||||
|
"owner": "eisbehr-" |
||||
|
}, |
||||
|
"arff": { |
||||
|
"title": "ARFF", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"asciidoc": { |
||||
|
"title": "AsciiDoc", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"asm6502": { |
||||
|
"title": "6502 Assembly", |
||||
|
"owner": "kzurawel" |
||||
|
}, |
||||
|
"aspnet": { |
||||
|
"title": "ASP.NET (C#)", |
||||
|
"require": ["markup", "csharp"], |
||||
|
"owner": "nauzilus" |
||||
|
}, |
||||
|
"autohotkey": { |
||||
|
"title": "AutoHotkey", |
||||
|
"owner": "aviaryan" |
||||
|
}, |
||||
|
"autoit": { |
||||
|
"title": "AutoIt", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"bash": { |
||||
|
"title": "Bash", |
||||
|
"owner": "zeitgeist87" |
||||
|
}, |
||||
|
"basic": { |
||||
|
"title": "BASIC", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"batch": { |
||||
|
"title": "Batch", |
||||
|
"alias": "shell", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"bison": { |
||||
|
"title": "Bison", |
||||
|
"require": "c", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"brainfuck": { |
||||
|
"title": "Brainfuck", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"bro": { |
||||
|
"title": "Bro", |
||||
|
"owner": "wayward710" |
||||
|
}, |
||||
|
"c": { |
||||
|
"title": "C", |
||||
|
"require": "clike", |
||||
|
"owner": "zeitgeist87" |
||||
|
}, |
||||
|
"csharp": { |
||||
|
"title": "C#", |
||||
|
"require": "clike", |
||||
|
"alias": "dotnet", |
||||
|
"owner": "mvalipour" |
||||
|
}, |
||||
|
"cpp": { |
||||
|
"title": "C++", |
||||
|
"require": "c", |
||||
|
"owner": "zeitgeist87" |
||||
|
}, |
||||
|
"coffeescript": { |
||||
|
"title": "CoffeeScript", |
||||
|
"require": "javascript", |
||||
|
"owner": "R-osey" |
||||
|
}, |
||||
|
"clojure": { |
||||
|
"title": "Clojure", |
||||
|
"owner": "troglotit" |
||||
|
}, |
||||
|
"crystal": { |
||||
|
"title": "Crystal", |
||||
|
"require": "ruby", |
||||
|
"owner": "MakeNowJust" |
||||
|
}, |
||||
|
"csp": { |
||||
|
"title": "Content-Security-Policy", |
||||
|
"owner": "ScottHelme" |
||||
|
}, |
||||
|
"css-extras": { |
||||
|
"title": "CSS Extras", |
||||
|
"require": "css", |
||||
|
"owner": "milesj" |
||||
|
}, |
||||
|
"d": { |
||||
|
"title": "D", |
||||
|
"require": "clike", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"dart": { |
||||
|
"title": "Dart", |
||||
|
"require": "clike", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"diff": { |
||||
|
"title": "Diff", |
||||
|
"owner": "uranusjr" |
||||
|
}, |
||||
|
"django": { |
||||
|
"title": "Django/Jinja2", |
||||
|
"require": "markup", |
||||
|
"peerDependencies": [ |
||||
|
"css", |
||||
|
"javascript" |
||||
|
], |
||||
|
"alias": "jinja2", |
||||
|
"owner": "romanvm" |
||||
|
}, |
||||
|
"docker": { |
||||
|
"title": "Docker", |
||||
|
"owner": "JustinBeckwith" |
||||
|
}, |
||||
|
"eiffel": { |
||||
|
"title": "Eiffel", |
||||
|
"owner": "Conaclos" |
||||
|
}, |
||||
|
"elixir": { |
||||
|
"title": "Elixir", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"elm": { |
||||
|
"title": "Elm", |
||||
|
"owner": "zwilias" |
||||
|
}, |
||||
|
"erb": { |
||||
|
"title": "ERB", |
||||
|
"require": ["ruby", "markup-templating"], |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"erlang": { |
||||
|
"title": "Erlang", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"fsharp": { |
||||
|
"title": "F#", |
||||
|
"require": "clike", |
||||
|
"owner": "simonreynolds7" |
||||
|
}, |
||||
|
"flow": { |
||||
|
"title": "Flow", |
||||
|
"require": "javascript", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"fortran": { |
||||
|
"title": "Fortran", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"gedcom": { |
||||
|
"title": "GEDCOM", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"gherkin": { |
||||
|
"title": "Gherkin", |
||||
|
"owner": "hason" |
||||
|
}, |
||||
|
"git": { |
||||
|
"title": "Git", |
||||
|
"owner": "lgiraudel" |
||||
|
}, |
||||
|
"glsl": { |
||||
|
"title": "GLSL", |
||||
|
"require": "clike", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"go": { |
||||
|
"title": "Go", |
||||
|
"require": "clike", |
||||
|
"owner": "arnehormann" |
||||
|
}, |
||||
|
"graphql": { |
||||
|
"title": "GraphQL", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"groovy": { |
||||
|
"title": "Groovy", |
||||
|
"require": "clike", |
||||
|
"owner": "robfletcher" |
||||
|
}, |
||||
|
"haml": { |
||||
|
"title": "Haml", |
||||
|
"require": "ruby", |
||||
|
"peerDependencies": [ |
||||
|
"css", |
||||
|
"coffeescript", |
||||
|
"erb", |
||||
|
"javascript", |
||||
|
"less", |
||||
|
"markdown", |
||||
|
"ruby", |
||||
|
"scss", |
||||
|
"textile" |
||||
|
], |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"handlebars": { |
||||
|
"title": "Handlebars", |
||||
|
"require": "markup-templating", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"haskell": { |
||||
|
"title": "Haskell", |
||||
|
"owner": "bholst" |
||||
|
}, |
||||
|
"haxe": { |
||||
|
"title": "Haxe", |
||||
|
"require": "clike", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"http": { |
||||
|
"title": "HTTP", |
||||
|
"peerDependencies": [ |
||||
|
"javascript", |
||||
|
"markup" |
||||
|
], |
||||
|
"owner": "danielgtaylor" |
||||
|
}, |
||||
|
"hpkp": { |
||||
|
"title": "HTTP Public-Key-Pins", |
||||
|
"owner": "ScottHelme" |
||||
|
}, |
||||
|
"hsts": { |
||||
|
"title": "HTTP Strict-Transport-Security", |
||||
|
"owner": "ScottHelme" |
||||
|
}, |
||||
|
"ichigojam": { |
||||
|
"title": "IchigoJam", |
||||
|
"owner": "BlueCocoa" |
||||
|
}, |
||||
|
"icon": { |
||||
|
"title": "Icon", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"inform7": { |
||||
|
"title": "Inform 7", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"ini": { |
||||
|
"title": "Ini", |
||||
|
"owner": "aviaryan" |
||||
|
}, |
||||
|
"io": { |
||||
|
"title": "Io", |
||||
|
"owner": "AlesTsurko" |
||||
|
}, |
||||
|
"j": { |
||||
|
"title": "J", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"java": { |
||||
|
"title": "Java", |
||||
|
"require": "clike", |
||||
|
"owner": "sherblot" |
||||
|
}, |
||||
|
"jolie": { |
||||
|
"title": "Jolie", |
||||
|
"require": "clike", |
||||
|
"owner": "thesave" |
||||
|
}, |
||||
|
"json": { |
||||
|
"title": "JSON", |
||||
|
"owner": "CupOfTea696" |
||||
|
}, |
||||
|
"julia": { |
||||
|
"title": "Julia", |
||||
|
"owner": "cdagnino" |
||||
|
}, |
||||
|
"keyman": { |
||||
|
"title": "Keyman", |
||||
|
"owner": "mcdurdin" |
||||
|
}, |
||||
|
"kotlin": { |
||||
|
"title": "Kotlin", |
||||
|
"require": "clike", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"latex": { |
||||
|
"title": "LaTeX", |
||||
|
"owner": "japborst" |
||||
|
}, |
||||
|
"less": { |
||||
|
"title": "Less", |
||||
|
"require": "css", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"liquid": { |
||||
|
"title": "Liquid", |
||||
|
"owner": "cinhtau" |
||||
|
}, |
||||
|
"lisp": { |
||||
|
"title": "Lisp", |
||||
|
"owner": "JuanCaicedo", |
||||
|
"alias": ["emacs", "elisp", "emacs-lisp"] |
||||
|
}, |
||||
|
"livescript": { |
||||
|
"title": "LiveScript", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"lolcode": { |
||||
|
"title": "LOLCODE", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"lua": { |
||||
|
"title": "Lua", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"makefile": { |
||||
|
"title": "Makefile", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"markdown": { |
||||
|
"title": "Markdown", |
||||
|
"require": "markup", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"markup-templating": { |
||||
|
"title": "Markup templating", |
||||
|
"require": "markup", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"matlab": { |
||||
|
"title": "MATLAB", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"mel": { |
||||
|
"title": "MEL", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"mizar": { |
||||
|
"title": "Mizar", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"monkey": { |
||||
|
"title": "Monkey", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"n4js": { |
||||
|
"title": "N4JS", |
||||
|
"require": "javascript", |
||||
|
"owner": "bsmith-n4" |
||||
|
}, |
||||
|
"nasm": { |
||||
|
"title": "NASM", |
||||
|
"owner": "rbmj" |
||||
|
}, |
||||
|
"nginx": { |
||||
|
"title": "nginx", |
||||
|
"owner": "westonganger", |
||||
|
"require": "clike" |
||||
|
}, |
||||
|
"nim": { |
||||
|
"title": "Nim", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"nix": { |
||||
|
"title": "Nix", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"nsis": { |
||||
|
"title": "NSIS", |
||||
|
"owner": "idleberg" |
||||
|
}, |
||||
|
"objectivec": { |
||||
|
"title": "Objective-C", |
||||
|
"require": "c", |
||||
|
"owner": "uranusjr" |
||||
|
}, |
||||
|
"ocaml": { |
||||
|
"title": "OCaml", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"opencl": { |
||||
|
"title": "OpenCL", |
||||
|
"require": "cpp", |
||||
|
"peerDependencies": [ |
||||
|
"c", |
||||
|
"cpp" |
||||
|
], |
||||
|
"overrideExampleHeader": true, |
||||
|
"owner": "Milania1" |
||||
|
}, |
||||
|
"oz": { |
||||
|
"title": "Oz", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"parigp": { |
||||
|
"title": "PARI/GP", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"parser": { |
||||
|
"title": "Parser", |
||||
|
"require": "markup", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"pascal": { |
||||
|
"title": "Pascal", |
||||
|
"alias": "objectpascal", |
||||
|
"aliasTitles": { |
||||
|
"objectpascal": "Object Pascal" |
||||
|
}, |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"perl": { |
||||
|
"title": "Perl", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"php": { |
||||
|
"title": "PHP", |
||||
|
"require": ["clike", "markup-templating"], |
||||
|
"owner": "milesj" |
||||
|
}, |
||||
|
"php-extras": { |
||||
|
"title": "PHP Extras", |
||||
|
"require": "php", |
||||
|
"owner": "milesj" |
||||
|
}, |
||||
|
"plsql": { |
||||
|
"title": "PL/SQL", |
||||
|
"require": "sql", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"powershell": { |
||||
|
"title": "PowerShell", |
||||
|
"owner": "nauzilus" |
||||
|
}, |
||||
|
"processing": { |
||||
|
"title": "Processing", |
||||
|
"require": "clike", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"prolog": { |
||||
|
"title": "Prolog", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"properties": { |
||||
|
"title": ".properties", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"protobuf": { |
||||
|
"title": "Protocol Buffers", |
||||
|
"require": "clike", |
||||
|
"owner": "just-boris" |
||||
|
}, |
||||
|
"pug": { |
||||
|
"title": "Pug", |
||||
|
"require": "javascript", |
||||
|
"peerDependencies": [ |
||||
|
"coffeescript", |
||||
|
"ejs", |
||||
|
"handlebars", |
||||
|
"hogan", |
||||
|
"less", |
||||
|
"livescript", |
||||
|
"markdown", |
||||
|
"mustache", |
||||
|
"plates", |
||||
|
"scss", |
||||
|
"stylus", |
||||
|
"swig" |
||||
|
], |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"puppet": { |
||||
|
"title": "Puppet", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"pure": { |
||||
|
"title": "Pure", |
||||
|
"peerDependencies": [ |
||||
|
"c", |
||||
|
"cpp", |
||||
|
"fortran", |
||||
|
"ats", |
||||
|
"dsp" |
||||
|
], |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"python": { |
||||
|
"title": "Python", |
||||
|
"owner": "multipetros" |
||||
|
}, |
||||
|
"q": { |
||||
|
"title": "Q (kdb+ database)", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"qore": { |
||||
|
"title": "Qore", |
||||
|
"require": "clike", |
||||
|
"owner": "temnroegg" |
||||
|
}, |
||||
|
"r": { |
||||
|
"title": "R", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"jsx": { |
||||
|
"title": "React JSX", |
||||
|
"require": ["markup", "javascript"], |
||||
|
"owner": "vkbansal" |
||||
|
}, |
||||
|
"tsx": { |
||||
|
"title": "React TSX", |
||||
|
"require": ["jsx", "typescript"] |
||||
|
}, |
||||
|
"renpy": { |
||||
|
"title": "Ren'py", |
||||
|
"owner": "HyuchiaDiego" |
||||
|
}, |
||||
|
"reason": { |
||||
|
"title": "Reason", |
||||
|
"require": "clike", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"rest": { |
||||
|
"title": "reST (reStructuredText)", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"rip": { |
||||
|
"title": "Rip", |
||||
|
"owner": "ravinggenius" |
||||
|
}, |
||||
|
"roboconf": { |
||||
|
"title": "Roboconf", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"ruby": { |
||||
|
"title": "Ruby", |
||||
|
"require": "clike", |
||||
|
"owner": "samflores" |
||||
|
}, |
||||
|
"rust": { |
||||
|
"title": "Rust", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"sas": { |
||||
|
"title": "SAS", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"sass": { |
||||
|
"title": "Sass (Sass)", |
||||
|
"require": "css", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"scss": { |
||||
|
"title": "Sass (Scss)", |
||||
|
"require": "css", |
||||
|
"owner": "MoOx" |
||||
|
}, |
||||
|
"scala": { |
||||
|
"title": "Scala", |
||||
|
"require": "java", |
||||
|
"owner": "jozic" |
||||
|
}, |
||||
|
"scheme": { |
||||
|
"title": "Scheme", |
||||
|
"owner": "bacchus123" |
||||
|
}, |
||||
|
"smalltalk": { |
||||
|
"title": "Smalltalk", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"smarty": { |
||||
|
"title": "Smarty", |
||||
|
"require": "markup-templating", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"sql": { |
||||
|
"title": "SQL", |
||||
|
"owner": "multipetros" |
||||
|
}, |
||||
|
"soy": { |
||||
|
"title": "Soy (Closure Template)", |
||||
|
"require": "markup-templating", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"stylus": { |
||||
|
"title": "Stylus", |
||||
|
"owner": "vkbansal" |
||||
|
}, |
||||
|
"swift": { |
||||
|
"title": "Swift", |
||||
|
"require": "clike", |
||||
|
"owner": "chrischares" |
||||
|
}, |
||||
|
"tap": { |
||||
|
"title": "TAP", |
||||
|
"owner": "isaacs", |
||||
|
"require": "yaml" |
||||
|
}, |
||||
|
"tcl": { |
||||
|
"title": "Tcl", |
||||
|
"owner": "PeterChaplin" |
||||
|
}, |
||||
|
"textile": { |
||||
|
"title": "Textile", |
||||
|
"require": "markup", |
||||
|
"peerDependencies": "css", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"tt2": { |
||||
|
"title": "Template Toolkit 2", |
||||
|
"require": ["clike", "markup-templating"], |
||||
|
"owner": "gflohr" |
||||
|
}, |
||||
|
"twig": { |
||||
|
"title": "Twig", |
||||
|
"require": "markup", |
||||
|
"owner": "brandonkelly" |
||||
|
}, |
||||
|
"typescript": { |
||||
|
"title": "TypeScript", |
||||
|
"require": "javascript", |
||||
|
"alias": "ts", |
||||
|
"owner": "vkbansal" |
||||
|
}, |
||||
|
"vbnet": { |
||||
|
"title": "VB.Net", |
||||
|
"require": "basic", |
||||
|
"owner": "Bigsby" |
||||
|
}, |
||||
|
"velocity": { |
||||
|
"title": "Velocity", |
||||
|
"require": "markup", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"verilog": { |
||||
|
"title": "Verilog", |
||||
|
"owner": "a-rey" |
||||
|
}, |
||||
|
"vhdl": { |
||||
|
"title": "VHDL", |
||||
|
"owner": "a-rey" |
||||
|
}, |
||||
|
"vim": { |
||||
|
"title": "vim", |
||||
|
"owner": "westonganger" |
||||
|
}, |
||||
|
"visual-basic": { |
||||
|
"title": "Visual Basic", |
||||
|
"owner": "Golmote", |
||||
|
"alias": "vb" |
||||
|
}, |
||||
|
"wasm": { |
||||
|
"title": "WebAssembly", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"wiki": { |
||||
|
"title": "Wiki markup", |
||||
|
"require": "markup", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"xeora": { |
||||
|
"title": "Xeora", |
||||
|
"require": "markup", |
||||
|
"owner": "freakmaxi" |
||||
|
}, |
||||
|
"xojo": { |
||||
|
"title": "Xojo (REALbasic)", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"xquery": { |
||||
|
"title": "XQuery", |
||||
|
"require": "markup", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"yaml": { |
||||
|
"title": "YAML", |
||||
|
"owner": "hason" |
||||
|
} |
||||
|
}, |
||||
|
"plugins": { |
||||
|
"meta": { |
||||
|
"path": "plugins/{id}/prism-{id}", |
||||
|
"link": "plugins/{id}/" |
||||
|
}, |
||||
|
"line-highlight": "Line Highlight", |
||||
|
"line-numbers": { |
||||
|
"title": "Line Numbers", |
||||
|
"owner": "kuba-kubula" |
||||
|
}, |
||||
|
"show-invisibles": "Show Invisibles", |
||||
|
"autolinker": "Autolinker", |
||||
|
"wpd": "WebPlatform Docs", |
||||
|
"custom-class": { |
||||
|
"title": "Custom Class", |
||||
|
"owner": "dvkndn", |
||||
|
"noCSS": true |
||||
|
}, |
||||
|
"file-highlight": { |
||||
|
"title": "File Highlight", |
||||
|
"noCSS": true |
||||
|
}, |
||||
|
"show-language": { |
||||
|
"title": "Show Language", |
||||
|
"owner": "nauzilus", |
||||
|
"noCSS": true, |
||||
|
"require": "toolbar" |
||||
|
}, |
||||
|
"jsonp-highlight": { |
||||
|
"title": "JSONP Highlight", |
||||
|
"noCSS": true, |
||||
|
"owner": "nauzilus" |
||||
|
}, |
||||
|
"highlight-keywords": { |
||||
|
"title": "Highlight Keywords", |
||||
|
"owner": "vkbansal", |
||||
|
"noCSS": true |
||||
|
}, |
||||
|
"remove-initial-line-feed": { |
||||
|
"title": "Remove initial line feed", |
||||
|
"owner": "Golmote", |
||||
|
"noCSS": true |
||||
|
}, |
||||
|
"previewers": { |
||||
|
"title": "Previewers", |
||||
|
"owner": "Golmote" |
||||
|
}, |
||||
|
"autoloader": { |
||||
|
"title": "Autoloader", |
||||
|
"owner": "Golmote", |
||||
|
"noCSS": true |
||||
|
}, |
||||
|
"keep-markup": { |
||||
|
"title": "Keep Markup", |
||||
|
"owner": "Golmote", |
||||
|
"after": "normalize-whitespace", |
||||
|
"noCSS": true |
||||
|
}, |
||||
|
"command-line": { |
||||
|
"title": "Command Line", |
||||
|
"owner": "chriswells0" |
||||
|
}, |
||||
|
"unescaped-markup": "Unescaped Markup", |
||||
|
"normalize-whitespace": { |
||||
|
"title": "Normalize Whitespace", |
||||
|
"owner": "zeitgeist87", |
||||
|
"after": "unescaped-markup", |
||||
|
"noCSS": true |
||||
|
}, |
||||
|
"data-uri-highlight": { |
||||
|
"title": "Data-URI Highlight", |
||||
|
"owner": "Golmote", |
||||
|
"noCSS": true |
||||
|
}, |
||||
|
"toolbar": { |
||||
|
"title": "Toolbar", |
||||
|
"owner": "mAAdhaTTah" |
||||
|
}, |
||||
|
"copy-to-clipboard": { |
||||
|
"title": "Copy to Clipboard Button", |
||||
|
"owner": "mAAdhaTTah", |
||||
|
"require": "toolbar", |
||||
|
"noCSS": true |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,82 @@ |
|||||
|
var components = require('../components.js'); |
||||
|
var peerDependentsMap = null; |
||||
|
|
||||
|
function getPeerDependentsMap() { |
||||
|
var peerDependentsMap = {}; |
||||
|
Object.keys(components.languages).forEach(function (language) { |
||||
|
if (language === 'meta') { |
||||
|
return false; |
||||
|
} |
||||
|
if (components.languages[language].peerDependencies) { |
||||
|
var peerDependencies = components.languages[language].peerDependencies; |
||||
|
if (!Array.isArray(peerDependencies)) { |
||||
|
peerDependencies = [peerDependencies]; |
||||
|
} |
||||
|
peerDependencies.forEach(function (peerDependency) { |
||||
|
if (!peerDependentsMap[peerDependency]) { |
||||
|
peerDependentsMap[peerDependency] = []; |
||||
|
} |
||||
|
peerDependentsMap[peerDependency].push(language); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
return peerDependentsMap; |
||||
|
} |
||||
|
|
||||
|
function getPeerDependents(mainLanguage) { |
||||
|
if (!peerDependentsMap) { |
||||
|
peerDependentsMap = getPeerDependentsMap(); |
||||
|
} |
||||
|
return peerDependentsMap[mainLanguage] || []; |
||||
|
} |
||||
|
|
||||
|
function loadLanguages(arr, withoutDependencies) { |
||||
|
// If no argument is passed, load all components
|
||||
|
if (!arr) { |
||||
|
arr = Object.keys(components.languages).filter(function (language) { |
||||
|
return language !== 'meta'; |
||||
|
}); |
||||
|
} |
||||
|
if (arr && !arr.length) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (!Array.isArray(arr)) { |
||||
|
arr = [arr]; |
||||
|
} |
||||
|
|
||||
|
arr.forEach(function (language) { |
||||
|
if (!components.languages[language]) { |
||||
|
console.warn('Language does not exist ' + language); |
||||
|
return; |
||||
|
} |
||||
|
// Load dependencies first
|
||||
|
if (!withoutDependencies && components.languages[language].require) { |
||||
|
loadLanguages(components.languages[language].require); |
||||
|
} |
||||
|
|
||||
|
var pathToLanguage = './prism-' + language; |
||||
|
delete require.cache[require.resolve(pathToLanguage)]; |
||||
|
delete Prism.languages[language]; |
||||
|
require(pathToLanguage); |
||||
|
|
||||
|
// Reload dependents
|
||||
|
var dependents = getPeerDependents(language).filter(function (dependent) { |
||||
|
// If dependent language was already loaded,
|
||||
|
// we want to reload it.
|
||||
|
if (Prism.languages[dependent]) { |
||||
|
delete Prism.languages[dependent]; |
||||
|
return true; |
||||
|
} |
||||
|
return false; |
||||
|
}); |
||||
|
if (dependents.length) { |
||||
|
loadLanguages(dependents, true); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
module.exports = function (arr) { |
||||
|
// Don't expose withoutDependencies
|
||||
|
loadLanguages(arr); |
||||
|
}; |
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,17 @@ |
|||||
|
Prism.languages.actionscript = Prism.languages.extend('javascript', { |
||||
|
'keyword': /\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/, |
||||
|
'operator': /\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/ |
||||
|
}); |
||||
|
Prism.languages.actionscript['class-name'].alias = 'function'; |
||||
|
|
||||
|
if (Prism.languages.markup) { |
||||
|
Prism.languages.insertBefore('actionscript', 'string', { |
||||
|
'xml': { |
||||
|
pattern: /(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/, |
||||
|
lookbehind: true, |
||||
|
inside: { |
||||
|
rest: Prism.languages.markup |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.actionscript=Prism.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),Prism.languages.actionscript["class-name"].alias="function",Prism.languages.markup&&Prism.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:{rest:Prism.languages.markup}}}); |
||||
@ -0,0 +1,19 @@ |
|||||
|
Prism.languages.ada = { |
||||
|
'comment': /--.*/, |
||||
|
'string': /"(?:""|[^"\r\f\n])*"/i, |
||||
|
'number': [ |
||||
|
{ |
||||
|
pattern: /\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i |
||||
|
}, |
||||
|
{ |
||||
|
pattern: /\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i |
||||
|
} |
||||
|
], |
||||
|
'attr-name': /\b'\w+/i, |
||||
|
'keyword': /\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|new|return|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|not|null|of|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i, |
||||
|
'boolean': /\b(?:true|false)\b/i, |
||||
|
'operator': /<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/, |
||||
|
'punctuation': /\.\.?|[,;():]/, |
||||
|
'char': /'.'/, |
||||
|
'variable': /\b[a-z](?:[_a-z\d])*\b/i |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.ada={comment:/--.*/,string:/"(?:""|[^"\r\f\n])*"/i,number:[{pattern:/\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i},{pattern:/\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i}],"attr-name":/\b'\w+/i,keyword:/\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|new|return|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|not|null|of|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i,"boolean":/\b(?:true|false)\b/i,operator:/<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/,punctuation:/\.\.?|[,;():]/,"char":/'.'/,variable:/\b[a-z](?:[_a-z\d])*\b/i}; |
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,32 @@ |
|||||
|
Prism.languages.apl = { |
||||
|
'comment': /(?:⍝|#[! ]).*$/m, |
||||
|
'string': { |
||||
|
pattern: /'(?:[^'\r\n]|'')*'/, |
||||
|
greedy: true |
||||
|
}, |
||||
|
'number': /¯?(?:\d*\.?\d+(?:e[+¯]?\d+)?|¯|∞)(?:j¯?(?:\d*\.?\d+(?:e[+¯]?\d+)?|¯|∞))?/i, |
||||
|
'statement': /:[A-Z][a-z][A-Za-z]*\b/, |
||||
|
'system-function': { |
||||
|
pattern: /⎕[A-Z]+/i, |
||||
|
alias: 'function' |
||||
|
}, |
||||
|
'constant': /[⍬⌾#⎕⍞]/, |
||||
|
'function': /[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/, |
||||
|
'monadic-operator': { |
||||
|
pattern: /[\\\/⌿⍀¨⍨⌶&∥]/, |
||||
|
alias: 'operator' |
||||
|
}, |
||||
|
'dyadic-operator': { |
||||
|
pattern: /[.⍣⍠⍤∘⌸@⌺]/, |
||||
|
alias: 'operator' |
||||
|
}, |
||||
|
'assignment': { |
||||
|
pattern: /←/, |
||||
|
alias: 'keyword' |
||||
|
}, |
||||
|
'punctuation': /[\[;\]()◇⋄]/, |
||||
|
'dfn': { |
||||
|
pattern: /[{}⍺⍵⍶⍹∇⍫:]/, |
||||
|
alias: 'builtin' |
||||
|
} |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.apl={comment:/(?:⍝|#[! ]).*$/m,string:{pattern:/'(?:[^'\r\n]|'')*'/,greedy:!0},number:/¯?(?:\d*\.?\d+(?:e[+¯]?\d+)?|¯|∞)(?:j¯?(?:\d*\.?\d+(?:e[+¯]?\d+)?|¯|∞))?/i,statement:/:[A-Z][a-z][A-Za-z]*\b/,"system-function":{pattern:/⎕[A-Z]+/i,alias:"function"},constant:/[⍬⌾#⎕⍞]/,"function":/[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/,"monadic-operator":{pattern:/[\\\/⌿⍀¨⍨⌶&∥]/,alias:"operator"},"dyadic-operator":{pattern:/[.⍣⍠⍤∘⌸@⌺]/,alias:"operator"},assignment:{pattern:/←/,alias:"keyword"},punctuation:/[\[;\]()◇⋄]/,dfn:{pattern:/[{}⍺⍵⍶⍹∇⍫:]/,alias:"builtin"}}; |
||||
@ -0,0 +1,20 @@ |
|||||
|
Prism.languages.applescript = { |
||||
|
'comment': [ |
||||
|
// Allow one level of nesting
|
||||
|
/\(\*(?:\(\*[\s\S]*?\*\)|[\s\S])*?\*\)/, |
||||
|
/--.+/, |
||||
|
/#.+/ |
||||
|
], |
||||
|
'string': /"(?:\\.|[^"\\\r\n])*"/, |
||||
|
'number': /(?:\b\d+\.?\d*|\B\.\d+)(?:e-?\d+)?\b/i, |
||||
|
'operator': [ |
||||
|
/[&=≠≤≥*+\-\/÷^]|[<>]=?/, |
||||
|
/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/ |
||||
|
], |
||||
|
'keyword': /\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/, |
||||
|
'class': { |
||||
|
pattern: /\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/, |
||||
|
alias: 'builtin' |
||||
|
}, |
||||
|
'punctuation': /[{}():,¬«»《》]/ |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.applescript={comment:[/\(\*(?:\(\*[\s\S]*?\*\)|[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+\.?\d*|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=≠≤≥*+\-\/÷^]|[<>]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,"class":{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},punctuation:/[{}():,¬«»《》]/}; |
||||
@ -0,0 +1,5 @@ |
|||||
|
Prism.languages.arduino = Prism.languages.extend('cpp', { |
||||
|
'keyword': /\b(?:setup|if|else|while|do|for|return|in|instanceof|default|function|loop|goto|switch|case|new|try|throw|catch|finally|null|break|continue|boolean|bool|void|byte|word|string|String|array|int|long|integer|double)\b/, |
||||
|
'builtin': /\b(?:KeyboardController|MouseController|SoftwareSerial|EthernetServer|EthernetClient|LiquidCrystal|LiquidCrystal_I2C|RobotControl|GSMVoiceCall|EthernetUDP|EsploraTFT|HttpClient|RobotMotor|WiFiClient|GSMScanner|FileSystem|Scheduler|GSMServer|YunClient|YunServer|IPAddress|GSMClient|GSMModem|Keyboard|Ethernet|Console|GSMBand|Esplora|Stepper|Process|WiFiUDP|GSM_SMS|Mailbox|USBHost|Firmata|PImage|Client|Server|GSMPIN|FileIO|Bridge|Serial|EEPROM|Stream|Mouse|Audio|Servo|File|Task|GPRS|WiFi|Wire|TFT|GSM|SPI|SD|runShellCommandAsynchronously|analogWriteResolution|retrieveCallingNumber|printFirmwareVersion|analogReadResolution|sendDigitalPortPair|noListenOnLocalhost|readJoystickButton|setFirmwareVersion|readJoystickSwitch|scrollDisplayRight|getVoiceCallStatus|scrollDisplayLeft|writeMicroseconds|delayMicroseconds|beginTransmission|getSignalStrength|runAsynchronously|getAsynchronously|listenOnLocalhost|getCurrentCarrier|readAccelerometer|messageAvailable|sendDigitalPorts|lineFollowConfig|countryNameWrite|runShellCommand|readStringUntil|rewindDirectory|readTemperature|setClockDivider|readLightSensor|endTransmission|analogReference|detachInterrupt|countryNameRead|attachInterrupt|encryptionType|readBytesUntil|robotNameWrite|readMicrophone|robotNameRead|cityNameWrite|userNameWrite|readJoystickY|readJoystickX|mouseReleased|openNextFile|scanNetworks|noInterrupts|digitalWrite|beginSpeaker|mousePressed|isActionDone|mouseDragged|displayLogos|noAutoscroll|addParameter|remoteNumber|getModifiers|keyboardRead|userNameRead|waitContinue|processInput|parseCommand|printVersion|readNetworks|writeMessage|blinkVersion|cityNameRead|readMessage|setDataMode|parsePacket|isListening|setBitOrder|beginPacket|isDirectory|motorsWrite|drawCompass|digitalRead|clearScreen|serialEvent|rightToLeft|setTextSize|leftToRight|requestFrom|keyReleased|compassRead|analogWrite|interrupts|WiFiServer|disconnect|playMelody|parseFloat|autoscroll|getPINUsed|setPINUsed|setTimeout|sendAnalog|readSlider|analogRead|beginWrite|createChar|motorsStop|keyPressed|tempoWrite|readButton|subnetMask|debugPrint|macAddress|writeGreen|randomSeed|attachGPRS|readString|sendString|remotePort|releaseAll|mouseMoved|background|getXChange|getYChange|answerCall|getResult|voiceCall|endPacket|constrain|getSocket|writeJSON|getButton|available|connected|findUntil|readBytes|exitValue|readGreen|writeBlue|startLoop|IPAddress|isPressed|sendSysex|pauseMode|gatewayIP|setCursor|getOemKey|tuneWrite|noDisplay|loadImage|switchPIN|onRequest|onReceive|changePIN|playFile|noBuffer|parseInt|overflow|checkPIN|knobRead|beginTFT|bitClear|updateIR|bitWrite|position|writeRGB|highByte|writeRed|setSpeed|readBlue|noStroke|remoteIP|transfer|shutdown|hangCall|beginSMS|endWrite|attached|maintain|noCursor|checkReg|checkPUK|shiftOut|isValid|shiftIn|pulseIn|connect|println|localIP|pinMode|getIMEI|display|noBlink|process|getBand|running|beginSD|drawBMP|lowByte|setBand|release|bitRead|prepare|pointTo|readRed|setMode|noFill|remove|listen|stroke|detach|attach|noTone|exists|buffer|height|bitSet|circle|config|cursor|random|IRread|setDNS|endSMS|getKey|micros|millis|begin|print|write|ready|flush|width|isPIN|blink|clear|press|mkdir|rmdir|close|point|yield|image|BSSID|click|delay|read|text|move|peek|beep|rect|line|open|seek|fill|size|turn|stop|home|find|step|tone|sqrt|RSSI|SSID|end|bit|tan|cos|sin|pow|map|abs|max|min|get|run|put)\b/, |
||||
|
'constant': /\b(?:DIGITAL_MESSAGE|FIRMATA_STRING|ANALOG_MESSAGE|REPORT_DIGITAL|REPORT_ANALOG|INPUT_PULLUP|SET_PIN_MODE|INTERNAL2V56|SYSTEM_RESET|LED_BUILTIN|INTERNAL1V1|SYSEX_START|INTERNAL|EXTERNAL|DEFAULT|OUTPUT|INPUT|HIGH|LOW)\b/ |
||||
|
}); |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.arduino=Prism.languages.extend("cpp",{keyword:/\b(?:setup|if|else|while|do|for|return|in|instanceof|default|function|loop|goto|switch|case|new|try|throw|catch|finally|null|break|continue|boolean|bool|void|byte|word|string|String|array|int|long|integer|double)\b/,builtin:/\b(?:KeyboardController|MouseController|SoftwareSerial|EthernetServer|EthernetClient|LiquidCrystal|LiquidCrystal_I2C|RobotControl|GSMVoiceCall|EthernetUDP|EsploraTFT|HttpClient|RobotMotor|WiFiClient|GSMScanner|FileSystem|Scheduler|GSMServer|YunClient|YunServer|IPAddress|GSMClient|GSMModem|Keyboard|Ethernet|Console|GSMBand|Esplora|Stepper|Process|WiFiUDP|GSM_SMS|Mailbox|USBHost|Firmata|PImage|Client|Server|GSMPIN|FileIO|Bridge|Serial|EEPROM|Stream|Mouse|Audio|Servo|File|Task|GPRS|WiFi|Wire|TFT|GSM|SPI|SD|runShellCommandAsynchronously|analogWriteResolution|retrieveCallingNumber|printFirmwareVersion|analogReadResolution|sendDigitalPortPair|noListenOnLocalhost|readJoystickButton|setFirmwareVersion|readJoystickSwitch|scrollDisplayRight|getVoiceCallStatus|scrollDisplayLeft|writeMicroseconds|delayMicroseconds|beginTransmission|getSignalStrength|runAsynchronously|getAsynchronously|listenOnLocalhost|getCurrentCarrier|readAccelerometer|messageAvailable|sendDigitalPorts|lineFollowConfig|countryNameWrite|runShellCommand|readStringUntil|rewindDirectory|readTemperature|setClockDivider|readLightSensor|endTransmission|analogReference|detachInterrupt|countryNameRead|attachInterrupt|encryptionType|readBytesUntil|robotNameWrite|readMicrophone|robotNameRead|cityNameWrite|userNameWrite|readJoystickY|readJoystickX|mouseReleased|openNextFile|scanNetworks|noInterrupts|digitalWrite|beginSpeaker|mousePressed|isActionDone|mouseDragged|displayLogos|noAutoscroll|addParameter|remoteNumber|getModifiers|keyboardRead|userNameRead|waitContinue|processInput|parseCommand|printVersion|readNetworks|writeMessage|blinkVersion|cityNameRead|readMessage|setDataMode|parsePacket|isListening|setBitOrder|beginPacket|isDirectory|motorsWrite|drawCompass|digitalRead|clearScreen|serialEvent|rightToLeft|setTextSize|leftToRight|requestFrom|keyReleased|compassRead|analogWrite|interrupts|WiFiServer|disconnect|playMelody|parseFloat|autoscroll|getPINUsed|setPINUsed|setTimeout|sendAnalog|readSlider|analogRead|beginWrite|createChar|motorsStop|keyPressed|tempoWrite|readButton|subnetMask|debugPrint|macAddress|writeGreen|randomSeed|attachGPRS|readString|sendString|remotePort|releaseAll|mouseMoved|background|getXChange|getYChange|answerCall|getResult|voiceCall|endPacket|constrain|getSocket|writeJSON|getButton|available|connected|findUntil|readBytes|exitValue|readGreen|writeBlue|startLoop|IPAddress|isPressed|sendSysex|pauseMode|gatewayIP|setCursor|getOemKey|tuneWrite|noDisplay|loadImage|switchPIN|onRequest|onReceive|changePIN|playFile|noBuffer|parseInt|overflow|checkPIN|knobRead|beginTFT|bitClear|updateIR|bitWrite|position|writeRGB|highByte|writeRed|setSpeed|readBlue|noStroke|remoteIP|transfer|shutdown|hangCall|beginSMS|endWrite|attached|maintain|noCursor|checkReg|checkPUK|shiftOut|isValid|shiftIn|pulseIn|connect|println|localIP|pinMode|getIMEI|display|noBlink|process|getBand|running|beginSD|drawBMP|lowByte|setBand|release|bitRead|prepare|pointTo|readRed|setMode|noFill|remove|listen|stroke|detach|attach|noTone|exists|buffer|height|bitSet|circle|config|cursor|random|IRread|setDNS|endSMS|getKey|micros|millis|begin|print|write|ready|flush|width|isPIN|blink|clear|press|mkdir|rmdir|close|point|yield|image|BSSID|click|delay|read|text|move|peek|beep|rect|line|open|seek|fill|size|turn|stop|home|find|step|tone|sqrt|RSSI|SSID|end|bit|tan|cos|sin|pow|map|abs|max|min|get|run|put)\b/,constant:/\b(?:DIGITAL_MESSAGE|FIRMATA_STRING|ANALOG_MESSAGE|REPORT_DIGITAL|REPORT_ANALOG|INPUT_PULLUP|SET_PIN_MODE|INTERNAL2V56|SYSTEM_RESET|LED_BUILTIN|INTERNAL1V1|SYSEX_START|INTERNAL|EXTERNAL|DEFAULT|OUTPUT|INPUT|HIGH|LOW)\b/}); |
||||
@ -0,0 +1,10 @@ |
|||||
|
Prism.languages.arff = { |
||||
|
'comment': /%.*/, |
||||
|
'string': { |
||||
|
pattern: /(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/, |
||||
|
greedy: true |
||||
|
}, |
||||
|
'keyword': /@(?:attribute|data|end|relation)\b/i, |
||||
|
'number': /\b\d+(?:\.\d+)?\b/, |
||||
|
'punctuation': /[{},]/ |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.arff={comment:/%.*/,string:{pattern:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/@(?:attribute|data|end|relation)\b/i,number:/\b\d+(?:\.\d+)?\b/,punctuation:/[{},]/}; |
||||
@ -0,0 +1,271 @@ |
|||||
|
(function (Prism) { |
||||
|
|
||||
|
var attributes = { |
||||
|
pattern: /(^[ \t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\]\\]|\\.)*\]|[^\]\\]|\\.)*\]/m, |
||||
|
lookbehind: true, |
||||
|
inside: { |
||||
|
'quoted': { |
||||
|
pattern: /([$`])(?:(?!\1)[^\\]|\\.)*\1/, |
||||
|
inside: { |
||||
|
'punctuation': /^[$`]|[$`]$/ |
||||
|
} |
||||
|
}, |
||||
|
'interpreted': { |
||||
|
pattern: /'(?:[^'\\]|\\.)*'/, |
||||
|
inside: { |
||||
|
'punctuation': /^'|'$/ |
||||
|
// See rest below
|
||||
|
} |
||||
|
}, |
||||
|
'string': /"(?:[^"\\]|\\.)*"/, |
||||
|
'variable': /\w+(?==)/, |
||||
|
'punctuation': /^\[|\]$|,/, |
||||
|
'operator': /=/, |
||||
|
// The negative look-ahead prevents blank matches
|
||||
|
'attr-value': /(?!^\s+$).+/ |
||||
|
} |
||||
|
}; |
||||
|
Prism.languages.asciidoc = { |
||||
|
'comment-block': { |
||||
|
pattern: /^(\/{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1/m, |
||||
|
alias: 'comment' |
||||
|
}, |
||||
|
'table': { |
||||
|
pattern: /^\|={3,}(?:(?:\r?\n|\r).*)*?(?:\r?\n|\r)\|={3,}$/m, |
||||
|
inside: { |
||||
|
'specifiers': { |
||||
|
pattern: /(?!\|)(?:(?:(?:\d+(?:\.\d+)?|\.\d+)[+*])?(?:[<^>](?:\.[<^>])?|\.[<^>])?[a-z]*)(?=\|)/, |
||||
|
alias: 'attr-value' |
||||
|
}, |
||||
|
'punctuation': { |
||||
|
pattern: /(^|[^\\])[|!]=*/, |
||||
|
lookbehind: true |
||||
|
} |
||||
|
// See rest below
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
'passthrough-block': { |
||||
|
pattern: /^(\+{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m, |
||||
|
inside: { |
||||
|
'punctuation': /^\++|\++$/ |
||||
|
// See rest below
|
||||
|
} |
||||
|
}, |
||||
|
// Literal blocks and listing blocks
|
||||
|
'literal-block': { |
||||
|
pattern: /^(-{4,}|\.{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m, |
||||
|
inside: { |
||||
|
'punctuation': /^(?:-+|\.+)|(?:-+|\.+)$/ |
||||
|
// See rest below
|
||||
|
} |
||||
|
}, |
||||
|
// Sidebar blocks, quote blocks, example blocks and open blocks
|
||||
|
'other-block': { |
||||
|
pattern: /^(--|\*{4,}|_{4,}|={4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m, |
||||
|
inside: { |
||||
|
'punctuation': /^(?:-+|\*+|_+|=+)|(?:-+|\*+|_+|=+)$/ |
||||
|
// See rest below
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
// list-punctuation and list-label must appear before indented-block
|
||||
|
'list-punctuation': { |
||||
|
pattern: /(^[ \t]*)(?:-|\*{1,5}|\.{1,5}|(?:[a-z]|\d+)\.|[xvi]+\))(?= )/im, |
||||
|
lookbehind: true, |
||||
|
alias: 'punctuation' |
||||
|
}, |
||||
|
'list-label': { |
||||
|
pattern: /(^[ \t]*)[a-z\d].+(?::{2,4}|;;)(?=\s)/im, |
||||
|
lookbehind: true, |
||||
|
alias: 'symbol' |
||||
|
}, |
||||
|
'indented-block': { |
||||
|
pattern: /((\r?\n|\r)\2)([ \t]+)\S.*(?:(?:\r?\n|\r)\3.+)*(?=\2{2}|$)/, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
|
||||
|
'comment': /^\/\/.*/m, |
||||
|
'title': { |
||||
|
pattern: /^.+(?:\r?\n|\r)(?:={3,}|-{3,}|~{3,}|\^{3,}|\+{3,})$|^={1,5} +.+|^\.(?![\s.]).*/m, |
||||
|
alias: 'important', |
||||
|
inside: { |
||||
|
'punctuation': /^(?:\.|=+)|(?:=+|-+|~+|\^+|\++)$/ |
||||
|
// See rest below
|
||||
|
} |
||||
|
}, |
||||
|
'attribute-entry': { |
||||
|
pattern: /^:[^:\r\n]+:(?: .*?(?: \+(?:\r?\n|\r).*?)*)?$/m, |
||||
|
alias: 'tag' |
||||
|
}, |
||||
|
'attributes': attributes, |
||||
|
'hr': { |
||||
|
pattern: /^'{3,}$/m, |
||||
|
alias: 'punctuation' |
||||
|
}, |
||||
|
'page-break': { |
||||
|
pattern: /^<{3,}$/m, |
||||
|
alias: 'punctuation' |
||||
|
}, |
||||
|
'admonition': { |
||||
|
pattern: /^(?:TIP|NOTE|IMPORTANT|WARNING|CAUTION):/m, |
||||
|
alias: 'keyword' |
||||
|
}, |
||||
|
'callout': [ |
||||
|
{ |
||||
|
pattern: /(^[ \t]*)<?\d*>/m, |
||||
|
lookbehind: true, |
||||
|
alias: 'symbol' |
||||
|
}, |
||||
|
{ |
||||
|
pattern: /<\d+>/, |
||||
|
alias: 'symbol' |
||||
|
} |
||||
|
], |
||||
|
'macro': { |
||||
|
pattern: /\b[a-z\d][a-z\d-]*::?(?:(?:\S+)??\[(?:[^\]\\"]|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/, |
||||
|
inside: { |
||||
|
'function': /^[a-z\d-]+(?=:)/, |
||||
|
'punctuation': /^::?/, |
||||
|
'attributes': { |
||||
|
pattern: /(?:\[(?:[^\]\\"]|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/, |
||||
|
inside: attributes.inside |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
'inline': { |
||||
|
/* |
||||
|
The initial look-behind prevents the highlighting of escaped quoted text. |
||||
|
|
||||
|
Quoted text can be multi-line but cannot span an empty line. |
||||
|
All quoted text can have attributes before [foobar, 'foobar', baz="bar"]. |
||||
|
|
||||
|
First, we handle the constrained quotes. |
||||
|
Those must be bounded by non-word chars and cannot have spaces between the delimiter and the first char. |
||||
|
They are, in order: _emphasis_, ``double quotes'', `single quotes', `monospace`, 'emphasis', *strong*, +monospace+ and #unquoted#
|
||||
|
|
||||
|
Then we handle the unconstrained quotes. |
||||
|
Those do not have the restrictions of the constrained quotes. |
||||
|
They are, in order: __emphasis__, **strong**, ++monospace++, +++passthrough+++, ##unquoted##, $$passthrough$$, ~subscript~, ^superscript^, {attribute-reference}, [[anchor]], [[[bibliography anchor]]], <<xref>>, (((indexes))) and ((indexes)) |
||||
|
*/ |
||||
|
pattern: /(^|[^\\])(?:(?:\B\[(?:[^\]\\"]|(["'])(?:(?!\2)[^\\]|\\.)*\2|\\.)*\])?(?:\b_(?!\s)(?: _|[^_\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: _|[^_\\\r\n]|\\.)+)*_\b|\B``(?!\s).+?(?:(?:\r?\n|\r).+?)*''\B|\B`(?!\s)(?: ['`]|.)+?(?:(?:\r?\n|\r)(?: ['`]|.)+?)*['`]\B|\B(['*+#])(?!\s)(?: \3|(?!\3)[^\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: \3|(?!\3)[^\\\r\n]|\\.)+)*\3\B)|(?:\[(?:[^\]\\"]|(["'])(?:(?!\4)[^\\]|\\.)*\4|\\.)*\])?(?:(__|\*\*|\+\+\+?|##|\$\$|[~^]).+?(?:(?:\r?\n|\r).+?)*\5|\{[^}\r\n]+\}|\[\[\[?.+?(?:(?:\r?\n|\r).+?)*\]?\]\]|<<.+?(?:(?:\r?\n|\r).+?)*>>|\(\(\(?.+?(?:(?:\r?\n|\r).+?)*\)?\)\)))/m, |
||||
|
lookbehind: true, |
||||
|
inside: { |
||||
|
'attributes': attributes, |
||||
|
'url': { |
||||
|
pattern: /^(?:\[\[\[?.+?\]?\]\]|<<.+?>>)$/, |
||||
|
inside: { |
||||
|
'punctuation': /^(?:\[\[\[?|<<)|(?:\]\]\]?|>>)$/ |
||||
|
} |
||||
|
}, |
||||
|
'attribute-ref': { |
||||
|
pattern: /^\{.+\}$/, |
||||
|
inside: { |
||||
|
'variable': { |
||||
|
pattern: /(^\{)[a-z\d,+_-]+/, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
'operator': /^[=?!#%@$]|!(?=[:}])/, |
||||
|
'punctuation': /^\{|\}$|::?/ |
||||
|
} |
||||
|
}, |
||||
|
'italic': { |
||||
|
pattern: /^(['_])[\s\S]+\1$/, |
||||
|
inside: { |
||||
|
'punctuation': /^(?:''?|__?)|(?:''?|__?)$/ |
||||
|
} |
||||
|
}, |
||||
|
'bold': { |
||||
|
pattern: /^\*[\s\S]+\*$/, |
||||
|
inside: { |
||||
|
punctuation: /^\*\*?|\*\*?$/ |
||||
|
} |
||||
|
}, |
||||
|
'punctuation': /^(?:``?|\+{1,3}|##?|\$\$|[~^]|\(\(\(?)|(?:''?|\+{1,3}|##?|\$\$|[~^`]|\)?\)\))$/ |
||||
|
} |
||||
|
}, |
||||
|
'replacement': { |
||||
|
pattern: /\((?:C|TM|R)\)/, |
||||
|
alias: 'builtin' |
||||
|
}, |
||||
|
'entity': /&#?[\da-z]{1,8};/i, |
||||
|
'line-continuation': { |
||||
|
pattern: /(^| )\+$/m, |
||||
|
lookbehind: true, |
||||
|
alias: 'punctuation' |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
// Allow some nesting. There is no recursion though, so cloning should not be needed.
|
||||
|
|
||||
|
attributes.inside['interpreted'].inside.rest = { |
||||
|
'macro': Prism.languages.asciidoc['macro'], |
||||
|
'inline': Prism.languages.asciidoc['inline'], |
||||
|
'replacement': Prism.languages.asciidoc['replacement'], |
||||
|
'entity': Prism.languages.asciidoc['entity'] |
||||
|
}; |
||||
|
|
||||
|
Prism.languages.asciidoc['passthrough-block'].inside.rest = { |
||||
|
'macro': Prism.languages.asciidoc['macro'] |
||||
|
}; |
||||
|
|
||||
|
Prism.languages.asciidoc['literal-block'].inside.rest = { |
||||
|
'callout': Prism.languages.asciidoc['callout'] |
||||
|
}; |
||||
|
|
||||
|
Prism.languages.asciidoc['table'].inside.rest = { |
||||
|
'comment-block': Prism.languages.asciidoc['comment-block'], |
||||
|
'passthrough-block': Prism.languages.asciidoc['passthrough-block'], |
||||
|
'literal-block': Prism.languages.asciidoc['literal-block'], |
||||
|
'other-block': Prism.languages.asciidoc['other-block'], |
||||
|
'list-punctuation': Prism.languages.asciidoc['list-punctuation'], |
||||
|
'indented-block': Prism.languages.asciidoc['indented-block'], |
||||
|
'comment': Prism.languages.asciidoc['comment'], |
||||
|
'title': Prism.languages.asciidoc['title'], |
||||
|
'attribute-entry': Prism.languages.asciidoc['attribute-entry'], |
||||
|
'attributes': Prism.languages.asciidoc['attributes'], |
||||
|
'hr': Prism.languages.asciidoc['hr'], |
||||
|
'page-break': Prism.languages.asciidoc['page-break'], |
||||
|
'admonition': Prism.languages.asciidoc['admonition'], |
||||
|
'list-label': Prism.languages.asciidoc['list-label'], |
||||
|
'callout': Prism.languages.asciidoc['callout'], |
||||
|
'macro': Prism.languages.asciidoc['macro'], |
||||
|
'inline': Prism.languages.asciidoc['inline'], |
||||
|
'replacement': Prism.languages.asciidoc['replacement'], |
||||
|
'entity': Prism.languages.asciidoc['entity'], |
||||
|
'line-continuation': Prism.languages.asciidoc['line-continuation'] |
||||
|
}; |
||||
|
|
||||
|
Prism.languages.asciidoc['other-block'].inside.rest = { |
||||
|
'table': Prism.languages.asciidoc['table'], |
||||
|
'list-punctuation': Prism.languages.asciidoc['list-punctuation'], |
||||
|
'indented-block': Prism.languages.asciidoc['indented-block'], |
||||
|
'comment': Prism.languages.asciidoc['comment'], |
||||
|
'attribute-entry': Prism.languages.asciidoc['attribute-entry'], |
||||
|
'attributes': Prism.languages.asciidoc['attributes'], |
||||
|
'hr': Prism.languages.asciidoc['hr'], |
||||
|
'page-break': Prism.languages.asciidoc['page-break'], |
||||
|
'admonition': Prism.languages.asciidoc['admonition'], |
||||
|
'list-label': Prism.languages.asciidoc['list-label'], |
||||
|
'macro': Prism.languages.asciidoc['macro'], |
||||
|
'inline': Prism.languages.asciidoc['inline'], |
||||
|
'replacement': Prism.languages.asciidoc['replacement'], |
||||
|
'entity': Prism.languages.asciidoc['entity'], |
||||
|
'line-continuation': Prism.languages.asciidoc['line-continuation'] |
||||
|
}; |
||||
|
|
||||
|
Prism.languages.asciidoc['title'].inside.rest = { |
||||
|
'macro': Prism.languages.asciidoc['macro'], |
||||
|
'inline': Prism.languages.asciidoc['inline'], |
||||
|
'replacement': Prism.languages.asciidoc['replacement'], |
||||
|
'entity': Prism.languages.asciidoc['entity'] |
||||
|
}; |
||||
|
|
||||
|
// Plugin to make entity title show the real entity, idea by Roman Komarov
|
||||
|
Prism.hooks.add('wrap', function(env) { |
||||
|
if (env.type === 'entity') { |
||||
|
env.attributes['title'] = env.content.replace(/&/, '&'); |
||||
|
} |
||||
|
}); |
||||
|
}(Prism)); |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,28 @@ |
|||||
|
Prism.languages.asm6502 = { |
||||
|
'comment': /;.*/, |
||||
|
'directive': { |
||||
|
pattern: /\.\w+(?= )/, |
||||
|
alias: 'keyword' |
||||
|
}, |
||||
|
'string': /(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/, |
||||
|
'opcode': { |
||||
|
pattern: /\b(?:adc|and|asl|bcc|bcs|beq|bit|bmi|bne|bpl|brk|bvc|bvs|clc|cld|cli|clv|cmp|cpx|cpy|dec|dex|dey|eor|inc|inx|iny|jmp|jsr|lda|ldx|ldy|lsr|nop|ora|pha|php|pla|plp|rol|ror|rti|rts|sbc|sec|sed|sei|sta|stx|sty|tax|tay|tsx|txa|txs|tya|ADC|AND|ASL|BCC|BCS|BEQ|BIT|BMI|BNE|BPL|BRK|BVC|BVS|CLC|CLD|CLI|CLV|CMP|CPX|CPY|DEC|DEX|DEY|EOR|INC|INX|INY|JMP|JSR|LDA|LDX|LDY|LSR|NOP|ORA|PHA|PHP|PLA|PLP|ROL|ROR|RTI|RTS|SBC|SEC|SED|SEI|STA|STX|STY|TAX|TAY|TSX|TXA|TXS|TYA)\b/, |
||||
|
alias: 'property' |
||||
|
}, |
||||
|
'hexnumber': { |
||||
|
pattern: /#?\$[\da-f]{2,4}/i, |
||||
|
alias: 'string' |
||||
|
}, |
||||
|
'binarynumber': { |
||||
|
pattern: /#?%[01]+/, |
||||
|
alias: 'string' |
||||
|
}, |
||||
|
'decimalnumber': { |
||||
|
pattern: /#?\d+/, |
||||
|
alias: 'string' |
||||
|
}, |
||||
|
'register': { |
||||
|
pattern: /\b[xya]\b/i, |
||||
|
alias: 'variable' |
||||
|
} |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.asm6502={comment:/;.*/,directive:{pattern:/\.\w+(?= )/,alias:"keyword"},string:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,opcode:{pattern:/\b(?:adc|and|asl|bcc|bcs|beq|bit|bmi|bne|bpl|brk|bvc|bvs|clc|cld|cli|clv|cmp|cpx|cpy|dec|dex|dey|eor|inc|inx|iny|jmp|jsr|lda|ldx|ldy|lsr|nop|ora|pha|php|pla|plp|rol|ror|rti|rts|sbc|sec|sed|sei|sta|stx|sty|tax|tay|tsx|txa|txs|tya|ADC|AND|ASL|BCC|BCS|BEQ|BIT|BMI|BNE|BPL|BRK|BVC|BVS|CLC|CLD|CLI|CLV|CMP|CPX|CPY|DEC|DEX|DEY|EOR|INC|INX|INY|JMP|JSR|LDA|LDX|LDY|LSR|NOP|ORA|PHA|PHP|PLA|PLP|ROL|ROR|RTI|RTS|SBC|SEC|SED|SEI|STA|STX|STY|TAX|TAY|TSX|TXA|TXS|TYA)\b/,alias:"property"},hexnumber:{pattern:/#?\$[\da-f]{2,4}/i,alias:"string"},binarynumber:{pattern:/#?%[01]+/,alias:"string"},decimalnumber:{pattern:/#?\d+/,alias:"string"},register:{pattern:/\b[xya]\b/i,alias:"variable"}}; |
||||
@ -0,0 +1,36 @@ |
|||||
|
Prism.languages.aspnet = Prism.languages.extend('markup', { |
||||
|
'page-directive tag': { |
||||
|
pattern: /<%\s*@.*%>/i, |
||||
|
inside: { |
||||
|
'page-directive tag': /<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i, |
||||
|
rest: Prism.languages.markup.tag.inside |
||||
|
} |
||||
|
}, |
||||
|
'directive tag': { |
||||
|
pattern: /<%.*%>/i, |
||||
|
inside: { |
||||
|
'directive tag': /<%\s*?[$=%#:]{0,2}|%>/i, |
||||
|
rest: Prism.languages.csharp |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
// Regexp copied from prism-markup, with a negative look-ahead added
|
||||
|
Prism.languages.aspnet.tag.pattern = /<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i; |
||||
|
|
||||
|
// match directives of attribute value foo="<% Bar %>"
|
||||
|
Prism.languages.insertBefore('inside', 'punctuation', { |
||||
|
'directive tag': Prism.languages.aspnet['directive tag'] |
||||
|
}, Prism.languages.aspnet.tag.inside["attr-value"]); |
||||
|
|
||||
|
Prism.languages.insertBefore('aspnet', 'comment', { |
||||
|
'asp comment': /<%--[\s\S]*?--%>/ |
||||
|
}); |
||||
|
|
||||
|
// script runat="server" contains csharp, not javascript
|
||||
|
Prism.languages.insertBefore('aspnet', Prism.languages.javascript ? 'script' : 'tag', { |
||||
|
'asp script': { |
||||
|
pattern: /(<script(?=.*runat=['"]?server['"]?)[\s\S]*?>)[\s\S]*?(?=<\/script>)/i, |
||||
|
lookbehind: true, |
||||
|
inside: Prism.languages.csharp || {} |
||||
|
} |
||||
|
}); |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive tag":{pattern:/<%\s*@.*%>/i,inside:{"page-directive tag":/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,rest:Prism.languages.markup.tag.inside}},"directive tag":{pattern:/<%.*%>/i,inside:{"directive tag":/<%\s*?[$=%#:]{0,2}|%>/i,rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,Prism.languages.insertBefore("inside","punctuation",{"directive tag":Prism.languages.aspnet["directive tag"]},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp comment":/<%--[\s\S]*?--%>/}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp script":{pattern:/(<script(?=.*runat=['"]?server['"]?)[\s\S]*?>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.csharp||{}}}); |
||||
@ -0,0 +1,27 @@ |
|||||
|
// NOTES - follows first-first highlight method, block is locked after highlight, different from SyntaxHl
|
||||
|
Prism.languages.autohotkey= { |
||||
|
'comment': { |
||||
|
pattern: /(^[^";\n]*("[^"\n]*?"[^"\n]*?)*)(?:;.*$|^\s*\/\*[\s\S]*\n\*\/)/m, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
'string': /"(?:[^"\n\r]|"")*"/m, |
||||
|
'function': /[^(); \t,\n+*\-=?>:\\\/<&%\[\]]+?(?=\()/m, //function - don't use .*\) in the end bcoz string locks it
|
||||
|
'tag': /^[ \t]*[^\s:]+?(?=:(?:[^:]|$))/m, //labels
|
||||
|
'variable': /%\w+%/, |
||||
|
'number': /\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/, |
||||
|
'operator': /\?|\/\/?=?|:=|\|[=|]?|&[=&]?|\+[=+]?|-[=-]?|\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\b(?:AND|NOT|OR)\b/, |
||||
|
'punctuation': /[{}[\]():,]/, |
||||
|
'boolean': /\b(?:true|false)\b/, |
||||
|
|
||||
|
'selector': /\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/i, |
||||
|
|
||||
|
'constant': /\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\b/i, |
||||
|
|
||||
|
'builtin': /\b(?:abs|acos|asc|asin|atan|ceil|chr|class|cos|dllcall|exp|fileexist|Fileopen|floor|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|IsObject|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|strsplit|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__New|__Call|__Get|__Set)\b/i, |
||||
|
|
||||
|
'symbol': /\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\b/i, |
||||
|
|
||||
|
'important': /#\b(?:AllowSameLineComments|ClipboardTimeout|CommentFlag|ErrorStdOut|EscapeChar|HotkeyInterval|HotkeyModifierTimeout|Hotstring|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Include|IncludeAgain|InstallKeybdHook|InstallMouseHook|KeyHistory|LTrim|MaxHotkeysPerInterval|MaxMem|MaxThreads|MaxThreadsBuffer|MaxThreadsPerHotkey|NoEnv|NoTrayIcon|Persistent|SingleInstance|UseHook|WinActivateForce)\b/i, |
||||
|
|
||||
|
'keyword': /\b(?:Abort|AboveNormal|Add|ahk_class|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Region|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|TryAgain|Type|UnCheck|underline|Unicode|Unlock|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\b/i |
||||
|
}; |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,34 @@ |
|||||
|
Prism.languages.autoit = { |
||||
|
"comment": [ |
||||
|
/;.*/, |
||||
|
{ |
||||
|
// The multi-line comments delimiters can actually be commented out with ";"
|
||||
|
pattern: /(^\s*)#(?:comments-start|cs)[\s\S]*?^\s*#(?:comments-end|ce)/m, |
||||
|
lookbehind: true |
||||
|
} |
||||
|
], |
||||
|
"url": { |
||||
|
pattern: /(^\s*#include\s+)(?:<[^\r\n>]+>|"[^\r\n"]+")/m, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
"string": { |
||||
|
pattern: /(["'])(?:\1\1|(?!\1)[^\r\n])*\1/, |
||||
|
greedy: true, |
||||
|
inside: { |
||||
|
"variable": /([%$@])\w+\1/ |
||||
|
} |
||||
|
}, |
||||
|
"directive": { |
||||
|
pattern: /(^\s*)#\w+/m, |
||||
|
lookbehind: true, |
||||
|
alias: 'keyword' |
||||
|
}, |
||||
|
"function": /\b\w+(?=\()/, |
||||
|
// Variables and macros
|
||||
|
"variable": /[$@]\w+/, |
||||
|
"keyword": /\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\b/i, |
||||
|
"number": /\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i, |
||||
|
"boolean": /\b(?:True|False)\b/i, |
||||
|
"operator": /<[=>]?|[-+*\/=&>]=?|[?^]|\b(?:And|Or|Not)\b/i, |
||||
|
"punctuation": /[\[\]().,:]/ |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.autoit={comment:[/;.*/,{pattern:/(^\s*)#(?:comments-start|cs)[\s\S]*?^\s*#(?:comments-end|ce)/m,lookbehind:!0}],url:{pattern:/(^\s*#include\s+)(?:<[^\r\n>]+>|"[^\r\n"]+")/m,lookbehind:!0},string:{pattern:/(["'])(?:\1\1|(?!\1)[^\r\n])*\1/,greedy:!0,inside:{variable:/([%$@])\w+\1/}},directive:{pattern:/(^\s*)#\w+/m,lookbehind:!0,alias:"keyword"},"function":/\b\w+(?=\()/,variable:/[$@]\w+/,keyword:/\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\b/i,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,"boolean":/\b(?:True|False)\b/i,operator:/<[=>]?|[-+*\/=&>]=?|[?^]|\b(?:And|Or|Not)\b/i,punctuation:/[\[\]().,:]/}; |
||||
@ -0,0 +1,84 @@ |
|||||
|
(function(Prism) { |
||||
|
var insideString = { |
||||
|
variable: [ |
||||
|
// Arithmetic Environment
|
||||
|
{ |
||||
|
pattern: /\$?\(\([\s\S]+?\)\)/, |
||||
|
inside: { |
||||
|
// If there is a $ sign at the beginning highlight $(( and )) as variable
|
||||
|
variable: [{ |
||||
|
pattern: /(^\$\(\([\s\S]+)\)\)/, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
/^\$\(\(/ |
||||
|
], |
||||
|
number: /\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/, |
||||
|
// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic
|
||||
|
operator: /--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/, |
||||
|
// If there is no $ sign at the beginning highlight (( and )) as punctuation
|
||||
|
punctuation: /\(\(?|\)\)?|,|;/ |
||||
|
} |
||||
|
}, |
||||
|
// Command Substitution
|
||||
|
{ |
||||
|
pattern: /\$\([^)]+\)|`[^`]+`/, |
||||
|
greedy: true, |
||||
|
inside: { |
||||
|
variable: /^\$\(|^`|\)$|`$/ |
||||
|
} |
||||
|
}, |
||||
|
/\$(?:[\w#?*!@]+|\{[^}]+\})/i |
||||
|
] |
||||
|
}; |
||||
|
|
||||
|
Prism.languages.bash = { |
||||
|
'shebang': { |
||||
|
pattern: /^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/, |
||||
|
alias: 'important' |
||||
|
}, |
||||
|
'comment': { |
||||
|
pattern: /(^|[^"{\\])#.*/, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
'string': [ |
||||
|
//Support for Here-Documents https://en.wikipedia.org/wiki/Here_document
|
||||
|
{ |
||||
|
pattern: /((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/, |
||||
|
lookbehind: true, |
||||
|
greedy: true, |
||||
|
inside: insideString |
||||
|
}, |
||||
|
{ |
||||
|
pattern: /(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/, |
||||
|
greedy: true, |
||||
|
inside: insideString |
||||
|
} |
||||
|
], |
||||
|
'variable': insideString.variable, |
||||
|
// Originally based on http://ss64.com/bash/
|
||||
|
'function': { |
||||
|
pattern: /(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
'keyword': { |
||||
|
pattern: /(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
'boolean': { |
||||
|
pattern: /(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
'operator': /&&?|\|\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/, |
||||
|
'punctuation': /\$?\(\(?|\)\)?|\.\.|[{}[\];]/ |
||||
|
}; |
||||
|
|
||||
|
var inside = insideString.variable[1].inside; |
||||
|
inside.string = Prism.languages.bash.string; |
||||
|
inside['function'] = Prism.languages.bash['function']; |
||||
|
inside.keyword = Prism.languages.bash.keyword; |
||||
|
inside['boolean'] = Prism.languages.bash['boolean']; |
||||
|
inside.operator = Prism.languages.bash.operator; |
||||
|
inside.punctuation = Prism.languages.bash.punctuation; |
||||
|
|
||||
|
Prism.languages.shell = Prism.languages.bash; |
||||
|
})(Prism); |
||||
@ -0,0 +1 @@ |
|||||
|
!function(e){var t={variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[\w#?*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,greedy:!0,inside:t}],variable:t.variable,"function":{pattern:/(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/,lookbehind:!0},"boolean":{pattern:/(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var a=t.variable[1].inside;a.string=e.languages.bash.string,a["function"]=e.languages.bash["function"],a.keyword=e.languages.bash.keyword,a["boolean"]=e.languages.bash["boolean"],a.operator=e.languages.bash.operator,a.punctuation=e.languages.bash.punctuation,e.languages.shell=e.languages.bash}(Prism); |
||||
@ -0,0 +1,17 @@ |
|||||
|
Prism.languages.basic = { |
||||
|
'comment': { |
||||
|
pattern: /(?:!|REM\b).+/i, |
||||
|
inside: { |
||||
|
'keyword': /^REM/i |
||||
|
} |
||||
|
}, |
||||
|
'string': { |
||||
|
pattern: /"(?:""|[!#$%&'()*,\/:;<=>?^_ +\-.A-Z\d])*"/i, |
||||
|
greedy: true |
||||
|
}, |
||||
|
'number': /(?:\b\d+\.?\d*|\B\.\d+)(?:E[+-]?\d+)?/i, |
||||
|
'keyword': /\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SHARED|SINGLE|SELECT CASE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i, |
||||
|
'function': /\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i, |
||||
|
'operator': /<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i, |
||||
|
'punctuation': /[,;:()]/ |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.basic={comment:{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^_ +\-.A-Z\d])*"/i,greedy:!0},number:/(?:\b\d+\.?\d*|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SHARED|SINGLE|SELECT CASE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i,"function":/\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i,punctuation:/[,;:()]/}; |
||||
@ -0,0 +1,99 @@ |
|||||
|
(function (Prism) { |
||||
|
var variable = /%%?[~:\w]+%?|!\S+!/; |
||||
|
var parameter = { |
||||
|
pattern: /\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im, |
||||
|
alias: 'attr-name', |
||||
|
inside: { |
||||
|
'punctuation': /:/ |
||||
|
} |
||||
|
}; |
||||
|
var string = /"[^"]*"/; |
||||
|
var number = /(?:\b|-)\d+\b/; |
||||
|
|
||||
|
Prism.languages.batch = { |
||||
|
'comment': [ |
||||
|
/^::.*/m, |
||||
|
{ |
||||
|
pattern: /((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im, |
||||
|
lookbehind: true |
||||
|
} |
||||
|
], |
||||
|
'label': { |
||||
|
pattern: /^:.*/m, |
||||
|
alias: 'property' |
||||
|
}, |
||||
|
'command': [ |
||||
|
{ |
||||
|
// FOR command
|
||||
|
pattern: /((?:^|[&(])[ \t]*)for(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* \S+ in \([^)]+\) do/im, |
||||
|
lookbehind: true, |
||||
|
inside: { |
||||
|
'keyword': /^for\b|\b(?:in|do)\b/i, |
||||
|
'string': string, |
||||
|
'parameter': parameter, |
||||
|
'variable': variable, |
||||
|
'number': number, |
||||
|
'punctuation': /[()',]/ |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
// IF command
|
||||
|
pattern: /((?:^|[&(])[ \t]*)if(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:"[^"]*"|\S+))/im, |
||||
|
lookbehind: true, |
||||
|
inside: { |
||||
|
'keyword': /^if\b|\b(?:not|cmdextversion|defined|errorlevel|exist)\b/i, |
||||
|
'string': string, |
||||
|
'parameter': parameter, |
||||
|
'variable': variable, |
||||
|
'number': number, |
||||
|
'operator': /\^|==|\b(?:equ|neq|lss|leq|gtr|geq)\b/i |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
// ELSE command
|
||||
|
pattern: /((?:^|[&()])[ \t]*)else\b/im, |
||||
|
lookbehind: true, |
||||
|
inside: { |
||||
|
'keyword': /^else\b/i |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
// SET command
|
||||
|
pattern: /((?:^|[&(])[ \t]*)set(?: ?\/[a-z](?:[ :](?:"[^"]*"|\S+))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im, |
||||
|
lookbehind: true, |
||||
|
inside: { |
||||
|
'keyword': /^set\b/i, |
||||
|
'string': string, |
||||
|
'parameter': parameter, |
||||
|
'variable': [ |
||||
|
variable, |
||||
|
/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/ |
||||
|
], |
||||
|
'number': number, |
||||
|
'operator': /[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/, |
||||
|
'punctuation': /[()',]/ |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
// Other commands
|
||||
|
pattern: /((?:^|[&(])[ \t]*@?)\w+\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im, |
||||
|
lookbehind: true, |
||||
|
inside: { |
||||
|
'keyword': /^\w+\b/i, |
||||
|
'string': string, |
||||
|
'parameter': parameter, |
||||
|
'label': { |
||||
|
pattern: /(^\s*):\S+/m, |
||||
|
lookbehind: true, |
||||
|
alias: 'property' |
||||
|
}, |
||||
|
'variable': variable, |
||||
|
'number': number, |
||||
|
'operator': /\^/ |
||||
|
} |
||||
|
} |
||||
|
], |
||||
|
'operator': /[&@]/, |
||||
|
'punctuation': /[()']/ |
||||
|
}; |
||||
|
}(Prism)); |
||||
@ -0,0 +1 @@ |
|||||
|
!function(e){var r=/%%?[~:\w]+%?|!\S+!/,t={pattern:/\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im,alias:"attr-name",inside:{punctuation:/:/}},n=/"[^"]*"/,i=/(?:\b|-)\d+\b/;e.languages.batch={comment:[/^::.*/m,{pattern:/((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0}],label:{pattern:/^:.*/m,alias:"property"},command:[{pattern:/((?:^|[&(])[ \t]*)for(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* \S+ in \([^)]+\) do/im,lookbehind:!0,inside:{keyword:/^for\b|\b(?:in|do)\b/i,string:n,parameter:t,variable:r,number:i,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*)if(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:"[^"]*"|\S+))/im,lookbehind:!0,inside:{keyword:/^if\b|\b(?:not|cmdextversion|defined|errorlevel|exist)\b/i,string:n,parameter:t,variable:r,number:i,operator:/\^|==|\b(?:equ|neq|lss|leq|gtr|geq)\b/i}},{pattern:/((?:^|[&()])[ \t]*)else\b/im,lookbehind:!0,inside:{keyword:/^else\b/i}},{pattern:/((?:^|[&(])[ \t]*)set(?: ?\/[a-z](?:[ :](?:"[^"]*"|\S+))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^set\b/i,string:n,parameter:t,variable:[r,/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/],number:i,operator:/[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*@?)\w+\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^\w+\b/i,string:n,parameter:t,label:{pattern:/(^\s*):\S+/m,lookbehind:!0,alias:"property"},variable:r,number:i,operator:/\^/}}],operator:/[&@]/,punctuation:/[()']/}}(Prism); |
||||
@ -0,0 +1,39 @@ |
|||||
|
Prism.languages.bison = Prism.languages.extend('c', {}); |
||||
|
|
||||
|
Prism.languages.insertBefore('bison', 'comment', { |
||||
|
'bison': { |
||||
|
// This should match all the beginning of the file
|
||||
|
// including the prologue(s), the bison declarations and
|
||||
|
// the grammar rules.
|
||||
|
pattern: /^[\s\S]*?%%[\s\S]*?%%/, |
||||
|
inside: { |
||||
|
'c': { |
||||
|
// Allow for one level of nested braces
|
||||
|
pattern: /%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/, |
||||
|
inside: { |
||||
|
'delimiter': { |
||||
|
pattern: /^%?\{|%?\}$/, |
||||
|
alias: 'punctuation' |
||||
|
}, |
||||
|
'bison-variable': { |
||||
|
pattern: /[$@](?:<[^\s>]+>)?[\w$]+/, |
||||
|
alias: 'variable', |
||||
|
inside: { |
||||
|
'punctuation': /<|>/ |
||||
|
} |
||||
|
}, |
||||
|
rest: Prism.languages.c |
||||
|
} |
||||
|
}, |
||||
|
'comment': Prism.languages.c.comment, |
||||
|
'string': Prism.languages.c.string, |
||||
|
'property': /\S+(?=:)/, |
||||
|
'keyword': /%\w+/, |
||||
|
'number': { |
||||
|
pattern: /(^|[^@])\b(?:0x[\da-f]+|\d+)/i, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
'punctuation': /%[%?]|[|:;\[\]<>]/ |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.bison=Prism.languages.extend("c",{}),Prism.languages.insertBefore("bison","comment",{bison:{pattern:/^[\s\S]*?%%[\s\S]*?%%/,inside:{c:{pattern:/%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/,inside:{delimiter:{pattern:/^%?\{|%?\}$/,alias:"punctuation"},"bison-variable":{pattern:/[$@](?:<[^\s>]+>)?[\w$]+/,alias:"variable",inside:{punctuation:/<|>/}},rest:Prism.languages.c}},comment:Prism.languages.c.comment,string:Prism.languages.c.string,property:/\S+(?=:)/,keyword:/%\w+/,number:{pattern:/(^|[^@])\b(?:0x[\da-f]+|\d+)/i,lookbehind:!0},punctuation:/%[%?]|[|:;\[\]<>]/}}}); |
||||
@ -0,0 +1,20 @@ |
|||||
|
Prism.languages.brainfuck = { |
||||
|
'pointer': { |
||||
|
pattern: /<|>/, |
||||
|
alias: 'keyword' |
||||
|
}, |
||||
|
'increment': { |
||||
|
pattern: /\+/, |
||||
|
alias: 'inserted' |
||||
|
}, |
||||
|
'decrement': { |
||||
|
pattern: /-/, |
||||
|
alias: 'deleted' |
||||
|
}, |
||||
|
'branching': { |
||||
|
pattern: /\[|\]/, |
||||
|
alias: 'important' |
||||
|
}, |
||||
|
'operator': /[.,]/, |
||||
|
'comment': /\S+/ |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.brainfuck={pointer:{pattern:/<|>/,alias:"keyword"},increment:{pattern:/\+/,alias:"inserted"},decrement:{pattern:/-/,alias:"deleted"},branching:{pattern:/\[|\]/,alias:"important"},operator:/[.,]/,comment:/\S+/}; |
||||
@ -0,0 +1,48 @@ |
|||||
|
Prism.languages.bro = { |
||||
|
|
||||
|
'comment': { |
||||
|
pattern: /(^|[^\\$])#.*/, |
||||
|
lookbehind: true, |
||||
|
inside: { |
||||
|
'italic': /\b(?:TODO|FIXME|XXX)\b/ |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
'string': { |
||||
|
pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, |
||||
|
greedy: true |
||||
|
}, |
||||
|
|
||||
|
'boolean': /\b[TF]\b/, |
||||
|
|
||||
|
'function': { |
||||
|
pattern: /(?:function|hook|event) \w+(?:::\w+)?/, |
||||
|
inside: { |
||||
|
keyword: /^(?:function|hook|event)/ |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
'variable': { |
||||
|
pattern: /(?:global|local) \w+/i, |
||||
|
inside: { |
||||
|
keyword: /(?:global|local)/ |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
'builtin': /(?:@(?:load(?:-(?:sigs|plugin))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:redef|priority|log|optional|default|add_func|delete_func|expire_func|read_expire|write_expire|create_expire|synchronized|persistent|rotate_interval|rotate_size|encrypt|raw_output|mergeable|group|error_handler|type_column))/, |
||||
|
|
||||
|
'constant': { |
||||
|
pattern: /const \w+/i, |
||||
|
inside: { |
||||
|
keyword: /const/ |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
'keyword': /\b(?:break|next|continue|alarm|using|of|add|delete|export|print|return|schedule|when|timeout|addr|any|bool|count|double|enum|file|int|interval|pattern|opaque|port|record|set|string|subnet|table|time|vector|for|if|else|in|module|function)\b/, |
||||
|
|
||||
|
'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/, |
||||
|
|
||||
|
'number': /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i, |
||||
|
|
||||
|
'punctuation': /[{}[\];(),.:]/ |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.bro={comment:{pattern:/(^|[^\\$])#.*/,lookbehind:!0,inside:{italic:/\b(?:TODO|FIXME|XXX)\b/}},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"boolean":/\b[TF]\b/,"function":{pattern:/(?:function|hook|event) \w+(?:::\w+)?/,inside:{keyword:/^(?:function|hook|event)/}},variable:{pattern:/(?:global|local) \w+/i,inside:{keyword:/(?:global|local)/}},builtin:/(?:@(?:load(?:-(?:sigs|plugin))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:redef|priority|log|optional|default|add_func|delete_func|expire_func|read_expire|write_expire|create_expire|synchronized|persistent|rotate_interval|rotate_size|encrypt|raw_output|mergeable|group|error_handler|type_column))/,constant:{pattern:/const \w+/i,inside:{keyword:/const/}},keyword:/\b(?:break|next|continue|alarm|using|of|add|delete|export|print|return|schedule|when|timeout|addr|any|bool|count|double|enum|file|int|interval|pattern|opaque|port|record|set|string|subnet|table|time|vector|for|if|else|in|module|function)\b/,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,punctuation:/[{}[\];(),.:]/}; |
||||
@ -0,0 +1,33 @@ |
|||||
|
Prism.languages.c = Prism.languages.extend('clike', { |
||||
|
'keyword': /\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/, |
||||
|
'operator': /-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/]/, |
||||
|
'number': /(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i |
||||
|
}); |
||||
|
|
||||
|
Prism.languages.insertBefore('c', 'string', { |
||||
|
'macro': { |
||||
|
// allow for multiline macro definitions
|
||||
|
// spaces after the # character compile fine with gcc
|
||||
|
pattern: /(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im, |
||||
|
lookbehind: true, |
||||
|
alias: 'property', |
||||
|
inside: { |
||||
|
// highlight the path of the include statement as a string
|
||||
|
'string': { |
||||
|
pattern: /(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
// highlight macro directives as keywords
|
||||
|
'directive': { |
||||
|
pattern: /(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/, |
||||
|
lookbehind: true, |
||||
|
alias: 'keyword' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
// highlight predefined macros as constants
|
||||
|
'constant': /\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/ |
||||
|
}); |
||||
|
|
||||
|
delete Prism.languages.c['class-name']; |
||||
|
delete Prism.languages.c['boolean']; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/]/,number:/(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c["class-name"],delete Prism.languages.c["boolean"]; |
||||
@ -0,0 +1,30 @@ |
|||||
|
Prism.languages.clike = { |
||||
|
'comment': [ |
||||
|
{ |
||||
|
pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
{ |
||||
|
pattern: /(^|[^\\:])\/\/.*/, |
||||
|
lookbehind: true, |
||||
|
greedy: true |
||||
|
} |
||||
|
], |
||||
|
'string': { |
||||
|
pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, |
||||
|
greedy: true |
||||
|
}, |
||||
|
'class-name': { |
||||
|
pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, |
||||
|
lookbehind: true, |
||||
|
inside: { |
||||
|
punctuation: /[.\\]/ |
||||
|
} |
||||
|
}, |
||||
|
'keyword': /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, |
||||
|
'boolean': /\b(?:true|false)\b/, |
||||
|
'function': /[a-z0-9_]+(?=\()/i, |
||||
|
'number': /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i, |
||||
|
'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, |
||||
|
'punctuation': /[{}[\];(),.:]/ |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(?:true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; |
||||
@ -0,0 +1,13 @@ |
|||||
|
// Copied from https://github.com/jeluard/prism-clojure
|
||||
|
Prism.languages.clojure = { |
||||
|
comment: /;+.*/, |
||||
|
string: /"(?:\\.|[^\\"\r\n])*"/, |
||||
|
operator: /(?:::|[:|'])\b[a-z][\w*+!?-]*\b/i, //used for symbols and keywords
|
||||
|
keyword: { |
||||
|
pattern: /([^\w+*'?-])(?:def|if|do|let|\.\.|quote|var|->>|->|fn|loop|recur|throw|try|monitor-enter|\.|new|set!|def\-|defn|defn\-|defmacro|defmulti|defmethod|defstruct|defonce|declare|definline|definterface|defprotocol|==|defrecord|>=|deftype|<=|defproject|ns|\*|\+|\-|\/|<|=|>|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|conj|cons|constantly|cond|if-not|construct-proxy|contains\?|count|create-ns|create-struct|cycle|dec|deref|difference|disj|dissoc|distinct|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\?|ensure|eval|every\?|false\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|for|fnseq|frest|gensym|get-proxy-class|get|hash-map|hash-set|identical\?|identity|if-let|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\?|last|lazy-cat|lazy-cons|left|lefts|line-seq|list\*|list|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|name|namespace|neg\?|new|newline|next|nil\?|node|not|not-any\?|not-every\?|not=|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\?|set|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\?|split-at|split-with|str|string\?|struct|struct-map|subs|subvec|symbol|symbol\?|sync|take|take-nth|take-while|test|time|to-array|to-array-2d|tree-seq|true\?|union|up|update-proxy|val|vals|var-get|var-set|var\?|vector|vector-zip|vector\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\?|zipmap|zipper)(?=[^\w+*'?-])/, |
||||
|
lookbehind: true |
||||
|
}, |
||||
|
boolean: /\b(?:true|false|nil)\b/, |
||||
|
number: /\b[0-9A-Fa-f]+\b/, |
||||
|
punctuation: /[{}\[\](),]/ |
||||
|
}; |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.clojure={comment:/;+.*/,string:/"(?:\\.|[^\\"\r\n])*"/,operator:/(?:::|[:|'])\b[a-z][\w*+!?-]*\b/i,keyword:{pattern:/([^\w+*'?-])(?:def|if|do|let|\.\.|quote|var|->>|->|fn|loop|recur|throw|try|monitor-enter|\.|new|set!|def\-|defn|defn\-|defmacro|defmulti|defmethod|defstruct|defonce|declare|definline|definterface|defprotocol|==|defrecord|>=|deftype|<=|defproject|ns|\*|\+|\-|\/|<|=|>|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|conj|cons|constantly|cond|if-not|construct-proxy|contains\?|count|create-ns|create-struct|cycle|dec|deref|difference|disj|dissoc|distinct|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\?|ensure|eval|every\?|false\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|for|fnseq|frest|gensym|get-proxy-class|get|hash-map|hash-set|identical\?|identity|if-let|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\?|last|lazy-cat|lazy-cons|left|lefts|line-seq|list\*|list|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|name|namespace|neg\?|new|newline|next|nil\?|node|not|not-any\?|not-every\?|not=|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\?|set|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\?|split-at|split-with|str|string\?|struct|struct-map|subs|subvec|symbol|symbol\?|sync|take|take-nth|take-while|test|time|to-array|to-array-2d|tree-seq|true\?|union|up|update-proxy|val|vals|var-get|var-set|var\?|vector|vector-zip|vector\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\?|zipmap|zipper)(?=[^\w+*'?-])/,lookbehind:!0},"boolean":/\b(?:true|false|nil)\b/,number:/\b[0-9A-Fa-f]+\b/,punctuation:/[{}\[\](),]/}; |
||||
@ -0,0 +1,91 @@ |
|||||
|
(function(Prism) { |
||||
|
|
||||
|
// Ignore comments starting with { to privilege string interpolation highlighting
|
||||
|
var comment = /#(?!\{).+/, |
||||
|
interpolation = { |
||||
|
pattern: /#\{[^}]+\}/, |
||||
|
alias: 'variable' |
||||
|
}; |
||||
|
|
||||
|
Prism.languages.coffeescript = Prism.languages.extend('javascript', { |
||||
|
'comment': comment, |
||||
|
'string': [ |
||||
|
|
||||
|
// Strings are multiline
|
||||
|
{ |
||||
|
pattern: /'(?:\\[\s\S]|[^\\'])*'/, |
||||
|
greedy: true |
||||
|
}, |
||||
|
|
||||
|
{ |
||||
|
// Strings are multiline
|
||||
|
pattern: /"(?:\\[\s\S]|[^\\"])*"/, |
||||
|
greedy: true, |
||||
|
inside: { |
||||
|
'interpolation': interpolation |
||||
|
} |
||||
|
} |
||||
|
], |
||||
|
'keyword': /\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/, |
||||
|
'class-member': { |
||||
|
pattern: /@(?!\d)\w+/, |
||||
|
alias: 'variable' |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
Prism.languages.insertBefore('coffeescript', 'comment', { |
||||
|
'multiline-comment': { |
||||
|
pattern: /###[\s\S]+?###/, |
||||
|
alias: 'comment' |
||||
|
}, |
||||
|
|
||||
|
// Block regexp can contain comments and interpolation
|
||||
|
'block-regex': { |
||||
|
pattern: /\/{3}[\s\S]*?\/{3}/, |
||||
|
alias: 'regex', |
||||
|
inside: { |
||||
|
'comment': comment, |
||||
|
'interpolation': interpolation |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
Prism.languages.insertBefore('coffeescript', 'string', { |
||||
|
'inline-javascript': { |
||||
|
pattern: /`(?:\\[\s\S]|[^\\`])*`/, |
||||
|
inside: { |
||||
|
'delimiter': { |
||||
|
pattern: /^`|`$/, |
||||
|
alias: 'punctuation' |
||||
|
}, |
||||
|
rest: Prism.languages.javascript |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
// Block strings
|
||||
|
'multiline-string': [ |
||||
|
{ |
||||
|
pattern: /'''[\s\S]*?'''/, |
||||
|
greedy: true, |
||||
|
alias: 'string' |
||||
|
}, |
||||
|
{ |
||||
|
pattern: /"""[\s\S]*?"""/, |
||||
|
greedy: true, |
||||
|
alias: 'string', |
||||
|
inside: { |
||||
|
interpolation: interpolation |
||||
|
} |
||||
|
} |
||||
|
] |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
Prism.languages.insertBefore('coffeescript', 'keyword', { |
||||
|
// Object property
|
||||
|
'property': /(?!\d)\w+(?=\s*:(?!:))/ |
||||
|
}); |
||||
|
|
||||
|
delete Prism.languages.coffeescript['template-string']; |
||||
|
|
||||
|
}(Prism)); |
||||
@ -0,0 +1 @@ |
|||||
|
!function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"]}(Prism); |
||||
@ -0,0 +1,557 @@ |
|||||
|
var _self = (typeof window !== 'undefined') |
||||
|
? window // if in browser
|
||||
|
: ( |
||||
|
(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) |
||||
|
? self // if in worker
|
||||
|
: {} // if in node js
|
||||
|
); |
||||
|
|
||||
|
/** |
||||
|
* Prism: Lightweight, robust, elegant syntax highlighting |
||||
|
* MIT license http://www.opensource.org/licenses/mit-license.php/
|
||||
|
* @author Lea Verou http://lea.verou.me
|
||||
|
*/ |
||||
|
|
||||
|
var Prism = (function(){ |
||||
|
|
||||
|
// Private helper vars
|
||||
|
var lang = /\blang(?:uage)?-([\w-]+)\b/i; |
||||
|
var uniqueId = 0; |
||||
|
|
||||
|
var _ = _self.Prism = { |
||||
|
manual: _self.Prism && _self.Prism.manual, |
||||
|
disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, |
||||
|
util: { |
||||
|
encode: function (tokens) { |
||||
|
if (tokens instanceof Token) { |
||||
|
return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); |
||||
|
} else if (_.util.type(tokens) === 'Array') { |
||||
|
return tokens.map(_.util.encode); |
||||
|
} else { |
||||
|
return tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\u00a0/g, ' '); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
type: function (o) { |
||||
|
return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1]; |
||||
|
}, |
||||
|
|
||||
|
objId: function (obj) { |
||||
|
if (!obj['__id']) { |
||||
|
Object.defineProperty(obj, '__id', { value: ++uniqueId }); |
||||
|
} |
||||
|
return obj['__id']; |
||||
|
}, |
||||
|
|
||||
|
// Deep clone a language definition (e.g. to extend it)
|
||||
|
clone: function (o, visited) { |
||||
|
var type = _.util.type(o); |
||||
|
visited = visited || {}; |
||||
|
|
||||
|
switch (type) { |
||||
|
case 'Object': |
||||
|
if (visited[_.util.objId(o)]) { |
||||
|
return visited[_.util.objId(o)]; |
||||
|
} |
||||
|
var clone = {}; |
||||
|
visited[_.util.objId(o)] = clone; |
||||
|
|
||||
|
for (var key in o) { |
||||
|
if (o.hasOwnProperty(key)) { |
||||
|
clone[key] = _.util.clone(o[key], visited); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return clone; |
||||
|
|
||||
|
case 'Array': |
||||
|
if (visited[_.util.objId(o)]) { |
||||
|
return visited[_.util.objId(o)]; |
||||
|
} |
||||
|
var clone = []; |
||||
|
visited[_.util.objId(o)] = clone; |
||||
|
|
||||
|
o.forEach(function (v, i) { |
||||
|
clone[i] = _.util.clone(v, visited); |
||||
|
}); |
||||
|
|
||||
|
return clone; |
||||
|
} |
||||
|
|
||||
|
return o; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
languages: { |
||||
|
extend: function (id, redef) { |
||||
|
var lang = _.util.clone(_.languages[id]); |
||||
|
|
||||
|
for (var key in redef) { |
||||
|
lang[key] = redef[key]; |
||||
|
} |
||||
|
|
||||
|
return lang; |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* Insert a token before another token in a language literal |
||||
|
* As this needs to recreate the object (we cannot actually insert before keys in object literals), |
||||
|
* we cannot just provide an object, we need anobject and a key. |
||||
|
* @param inside The key (or language id) of the parent |
||||
|
* @param before The key to insert before. If not provided, the function appends instead. |
||||
|
* @param insert Object with the key/value pairs to insert |
||||
|
* @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted. |
||||
|
*/ |
||||
|
insertBefore: function (inside, before, insert, root) { |
||||
|
root = root || _.languages; |
||||
|
var grammar = root[inside]; |
||||
|
|
||||
|
if (arguments.length == 2) { |
||||
|
insert = arguments[1]; |
||||
|
|
||||
|
for (var newToken in insert) { |
||||
|
if (insert.hasOwnProperty(newToken)) { |
||||
|
grammar[newToken] = insert[newToken]; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return grammar; |
||||
|
} |
||||
|
|
||||
|
var ret = {}; |
||||
|
|
||||
|
for (var token in grammar) { |
||||
|
|
||||
|
if (grammar.hasOwnProperty(token)) { |
||||
|
|
||||
|
if (token == before) { |
||||
|
|
||||
|
for (var newToken in insert) { |
||||
|
|
||||
|
if (insert.hasOwnProperty(newToken)) { |
||||
|
ret[newToken] = insert[newToken]; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
ret[token] = grammar[token]; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Update references in other language definitions
|
||||
|
_.languages.DFS(_.languages, function(key, value) { |
||||
|
if (value === root[inside] && key != inside) { |
||||
|
this[key] = ret; |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
return root[inside] = ret; |
||||
|
}, |
||||
|
|
||||
|
// Traverse a language definition with Depth First Search
|
||||
|
DFS: function(o, callback, type, visited) { |
||||
|
visited = visited || {}; |
||||
|
for (var i in o) { |
||||
|
if (o.hasOwnProperty(i)) { |
||||
|
callback.call(o, i, o[i], type || i); |
||||
|
|
||||
|
if (_.util.type(o[i]) === 'Object' && !visited[_.util.objId(o[i])]) { |
||||
|
visited[_.util.objId(o[i])] = true; |
||||
|
_.languages.DFS(o[i], callback, null, visited); |
||||
|
} |
||||
|
else if (_.util.type(o[i]) === 'Array' && !visited[_.util.objId(o[i])]) { |
||||
|
visited[_.util.objId(o[i])] = true; |
||||
|
_.languages.DFS(o[i], callback, i, visited); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
plugins: {}, |
||||
|
|
||||
|
highlightAll: function(async, callback) { |
||||
|
_.highlightAllUnder(document, async, callback); |
||||
|
}, |
||||
|
|
||||
|
highlightAllUnder: function(container, async, callback) { |
||||
|
var env = { |
||||
|
callback: callback, |
||||
|
selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code' |
||||
|
}; |
||||
|
|
||||
|
_.hooks.run("before-highlightall", env); |
||||
|
|
||||
|
var elements = env.elements || container.querySelectorAll(env.selector); |
||||
|
|
||||
|
for (var i=0, element; element = elements[i++];) { |
||||
|
_.highlightElement(element, async === true, env.callback); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
highlightElement: function(element, async, callback) { |
||||
|
// Find language
|
||||
|
var language, grammar, parent = element; |
||||
|
|
||||
|
while (parent && !lang.test(parent.className)) { |
||||
|
parent = parent.parentNode; |
||||
|
} |
||||
|
|
||||
|
if (parent) { |
||||
|
language = (parent.className.match(lang) || [,''])[1].toLowerCase(); |
||||
|
grammar = _.languages[language]; |
||||
|
} |
||||
|
|
||||
|
// Set language on the element, if not present
|
||||
|
element.className = element.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; |
||||
|
|
||||
|
if (element.parentNode) { |
||||
|
// Set language on the parent, for styling
|
||||
|
parent = element.parentNode; |
||||
|
|
||||
|
if (/pre/i.test(parent.nodeName)) { |
||||
|
parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
var code = element.textContent; |
||||
|
|
||||
|
var env = { |
||||
|
element: element, |
||||
|
language: language, |
||||
|
grammar: grammar, |
||||
|
code: code |
||||
|
}; |
||||
|
|
||||
|
_.hooks.run('before-sanity-check', env); |
||||
|
|
||||
|
if (!env.code || !env.grammar) { |
||||
|
if (env.code) { |
||||
|
_.hooks.run('before-highlight', env); |
||||
|
env.element.textContent = env.code; |
||||
|
_.hooks.run('after-highlight', env); |
||||
|
} |
||||
|
_.hooks.run('complete', env); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
_.hooks.run('before-highlight', env); |
||||
|
|
||||
|
if (async && _self.Worker) { |
||||
|
var worker = new Worker(_.filename); |
||||
|
|
||||
|
worker.onmessage = function(evt) { |
||||
|
env.highlightedCode = evt.data; |
||||
|
|
||||
|
_.hooks.run('before-insert', env); |
||||
|
|
||||
|
env.element.innerHTML = env.highlightedCode; |
||||
|
|
||||
|
callback && callback.call(env.element); |
||||
|
_.hooks.run('after-highlight', env); |
||||
|
_.hooks.run('complete', env); |
||||
|
}; |
||||
|
|
||||
|
worker.postMessage(JSON.stringify({ |
||||
|
language: env.language, |
||||
|
code: env.code, |
||||
|
immediateClose: true |
||||
|
})); |
||||
|
} |
||||
|
else { |
||||
|
env.highlightedCode = _.highlight(env.code, env.grammar, env.language); |
||||
|
|
||||
|
_.hooks.run('before-insert', env); |
||||
|
|
||||
|
env.element.innerHTML = env.highlightedCode; |
||||
|
|
||||
|
callback && callback.call(element); |
||||
|
|
||||
|
_.hooks.run('after-highlight', env); |
||||
|
_.hooks.run('complete', env); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
highlight: function (text, grammar, language) { |
||||
|
var env = { |
||||
|
code: text, |
||||
|
grammar: grammar, |
||||
|
language: language |
||||
|
}; |
||||
|
_.hooks.run('before-tokenize', env); |
||||
|
env.tokens = _.tokenize(env.code, env.grammar); |
||||
|
_.hooks.run('after-tokenize', env); |
||||
|
return Token.stringify(_.util.encode(env.tokens), env.language); |
||||
|
}, |
||||
|
|
||||
|
matchGrammar: function (text, strarr, grammar, index, startPos, oneshot, target) { |
||||
|
var Token = _.Token; |
||||
|
|
||||
|
for (var token in grammar) { |
||||
|
if(!grammar.hasOwnProperty(token) || !grammar[token]) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if (token == target) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
var patterns = grammar[token]; |
||||
|
patterns = (_.util.type(patterns) === "Array") ? patterns : [patterns]; |
||||
|
|
||||
|
for (var j = 0; j < patterns.length; ++j) { |
||||
|
var pattern = patterns[j], |
||||
|
inside = pattern.inside, |
||||
|
lookbehind = !!pattern.lookbehind, |
||||
|
greedy = !!pattern.greedy, |
||||
|
lookbehindLength = 0, |
||||
|
alias = pattern.alias; |
||||
|
|
||||
|
if (greedy && !pattern.pattern.global) { |
||||
|
// Without the global flag, lastIndex won't work
|
||||
|
var flags = pattern.pattern.toString().match(/[imuy]*$/)[0]; |
||||
|
pattern.pattern = RegExp(pattern.pattern.source, flags + "g"); |
||||
|
} |
||||
|
|
||||
|
pattern = pattern.pattern || pattern; |
||||
|
|
||||
|
// Don’t cache length as it changes during the loop
|
||||
|
for (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) { |
||||
|
|
||||
|
var str = strarr[i]; |
||||
|
|
||||
|
if (strarr.length > text.length) { |
||||
|
// Something went terribly wrong, ABORT, ABORT!
|
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (str instanceof Token) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if (greedy && i != strarr.length - 1) { |
||||
|
pattern.lastIndex = pos; |
||||
|
var match = pattern.exec(text); |
||||
|
if (!match) { |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
var from = match.index + (lookbehind ? match[1].length : 0), |
||||
|
to = match.index + match[0].length, |
||||
|
k = i, |
||||
|
p = pos; |
||||
|
|
||||
|
for (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) { |
||||
|
p += strarr[k].length; |
||||
|
// Move the index i to the element in strarr that is closest to from
|
||||
|
if (from >= p) { |
||||
|
++i; |
||||
|
pos = p; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// If strarr[i] is a Token, then the match starts inside another Token, which is invalid
|
||||
|
if (strarr[i] instanceof Token) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// Number of tokens to delete and replace with the new match
|
||||
|
delNum = k - i; |
||||
|
str = text.slice(pos, p); |
||||
|
match.index -= pos; |
||||
|
} else { |
||||
|
pattern.lastIndex = 0; |
||||
|
|
||||
|
var match = pattern.exec(str), |
||||
|
delNum = 1; |
||||
|
} |
||||
|
|
||||
|
if (!match) { |
||||
|
if (oneshot) { |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if(lookbehind) { |
||||
|
lookbehindLength = match[1] ? match[1].length : 0; |
||||
|
} |
||||
|
|
||||
|
var from = match.index + lookbehindLength, |
||||
|
match = match[0].slice(lookbehindLength), |
||||
|
to = from + match.length, |
||||
|
before = str.slice(0, from), |
||||
|
after = str.slice(to); |
||||
|
|
||||
|
var args = [i, delNum]; |
||||
|
|
||||
|
if (before) { |
||||
|
++i; |
||||
|
pos += before.length; |
||||
|
args.push(before); |
||||
|
} |
||||
|
|
||||
|
var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); |
||||
|
|
||||
|
args.push(wrapped); |
||||
|
|
||||
|
if (after) { |
||||
|
args.push(after); |
||||
|
} |
||||
|
|
||||
|
Array.prototype.splice.apply(strarr, args); |
||||
|
|
||||
|
if (delNum != 1) |
||||
|
_.matchGrammar(text, strarr, grammar, i, pos, true, token); |
||||
|
|
||||
|
if (oneshot) |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
tokenize: function(text, grammar, language) { |
||||
|
var strarr = [text]; |
||||
|
|
||||
|
var rest = grammar.rest; |
||||
|
|
||||
|
if (rest) { |
||||
|
for (var token in rest) { |
||||
|
grammar[token] = rest[token]; |
||||
|
} |
||||
|
|
||||
|
delete grammar.rest; |
||||
|
} |
||||
|
|
||||
|
_.matchGrammar(text, strarr, grammar, 0, 0, false); |
||||
|
|
||||
|
return strarr; |
||||
|
}, |
||||
|
|
||||
|
hooks: { |
||||
|
all: {}, |
||||
|
|
||||
|
add: function (name, callback) { |
||||
|
var hooks = _.hooks.all; |
||||
|
|
||||
|
hooks[name] = hooks[name] || []; |
||||
|
|
||||
|
hooks[name].push(callback); |
||||
|
}, |
||||
|
|
||||
|
run: function (name, env) { |
||||
|
var callbacks = _.hooks.all[name]; |
||||
|
|
||||
|
if (!callbacks || !callbacks.length) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
for (var i=0, callback; callback = callbacks[i++];) { |
||||
|
callback(env); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
var Token = _.Token = function(type, content, alias, matchedStr, greedy) { |
||||
|
this.type = type; |
||||
|
this.content = content; |
||||
|
this.alias = alias; |
||||
|
// Copy of the full string this token was created from
|
||||
|
this.length = (matchedStr || "").length|0; |
||||
|
this.greedy = !!greedy; |
||||
|
}; |
||||
|
|
||||
|
Token.stringify = function(o, language, parent) { |
||||
|
if (typeof o == 'string') { |
||||
|
return o; |
||||
|
} |
||||
|
|
||||
|
if (_.util.type(o) === 'Array') { |
||||
|
return o.map(function(element) { |
||||
|
return Token.stringify(element, language, o); |
||||
|
}).join(''); |
||||
|
} |
||||
|
|
||||
|
var env = { |
||||
|
type: o.type, |
||||
|
content: Token.stringify(o.content, language, parent), |
||||
|
tag: 'span', |
||||
|
classes: ['token', o.type], |
||||
|
attributes: {}, |
||||
|
language: language, |
||||
|
parent: parent |
||||
|
}; |
||||
|
|
||||
|
if (o.alias) { |
||||
|
var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; |
||||
|
Array.prototype.push.apply(env.classes, aliases); |
||||
|
} |
||||
|
|
||||
|
_.hooks.run('wrap', env); |
||||
|
|
||||
|
var attributes = Object.keys(env.attributes).map(function(name) { |
||||
|
return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; |
||||
|
}).join(' '); |
||||
|
|
||||
|
return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '</' + env.tag + '>'; |
||||
|
|
||||
|
}; |
||||
|
|
||||
|
if (!_self.document) { |
||||
|
if (!_self.addEventListener) { |
||||
|
// in Node.js
|
||||
|
return _self.Prism; |
||||
|
} |
||||
|
|
||||
|
if (!_.disableWorkerMessageHandler) { |
||||
|
// In worker
|
||||
|
_self.addEventListener('message', function (evt) { |
||||
|
var message = JSON.parse(evt.data), |
||||
|
lang = message.language, |
||||
|
code = message.code, |
||||
|
immediateClose = message.immediateClose; |
||||
|
|
||||
|
_self.postMessage(_.highlight(code, _.languages[lang], lang)); |
||||
|
if (immediateClose) { |
||||
|
_self.close(); |
||||
|
} |
||||
|
}, false); |
||||
|
} |
||||
|
|
||||
|
return _self.Prism; |
||||
|
} |
||||
|
|
||||
|
//Get current script and highlight
|
||||
|
var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); |
||||
|
|
||||
|
if (script) { |
||||
|
_.filename = script.src; |
||||
|
|
||||
|
if (!_.manual && !script.hasAttribute('data-manual')) { |
||||
|
if(document.readyState !== "loading") { |
||||
|
if (window.requestAnimationFrame) { |
||||
|
window.requestAnimationFrame(_.highlightAll); |
||||
|
} else { |
||||
|
window.setTimeout(_.highlightAll, 16); |
||||
|
} |
||||
|
} |
||||
|
else { |
||||
|
document.addEventListener('DOMContentLoaded', _.highlightAll); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return _self.Prism; |
||||
|
|
||||
|
})(); |
||||
|
|
||||
|
if (typeof module !== 'undefined' && module.exports) { |
||||
|
module.exports = Prism; |
||||
|
} |
||||
|
|
||||
|
// hack for components to work correctly in node.js
|
||||
|
if (typeof global !== 'undefined') { |
||||
|
global.Prism = Prism; |
||||
|
} |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,20 @@ |
|||||
|
Prism.languages.cpp = Prism.languages.extend('c', { |
||||
|
'keyword': /\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/, |
||||
|
'boolean': /\b(?:true|false)\b/, |
||||
|
'operator': /--?|\+\+?|!=?|<{1,2}=?|>{1,2}=?|->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|\|?|\?|\*|\/|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/ |
||||
|
}); |
||||
|
|
||||
|
Prism.languages.insertBefore('cpp', 'keyword', { |
||||
|
'class-name': { |
||||
|
pattern: /(class\s+)\w+/i, |
||||
|
lookbehind: true |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
Prism.languages.insertBefore('cpp', 'string', { |
||||
|
'raw-string': { |
||||
|
pattern: /R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/, |
||||
|
alias: 'string', |
||||
|
greedy: true |
||||
|
} |
||||
|
}); |
||||
@ -0,0 +1 @@ |
|||||
|
Prism.languages.cpp=Prism.languages.extend("c",{keyword:/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(?:true|false)\b/,operator:/--?|\+\+?|!=?|<{1,2}=?|>{1,2}=?|->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|\|?|\?|\*|\/|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),Prism.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)\w+/i,lookbehind:!0}}),Prism.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}); |
||||
@ -0,0 +1,51 @@ |
|||||
|
(function(Prism) { |
||||
|
Prism.languages.crystal = Prism.languages.extend('ruby', { |
||||
|
keyword: [ |
||||
|
/\b(?:abstract|alias|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|rescue|return|require|select|self|sizeof|struct|super|then|type|typeof|uninitialized|union|unless|until|when|while|with|yield|__DIR__|__END_LINE__|__FILE__|__LINE__)\b/, |
||||
|
{ |
||||
|
pattern: /(\.\s*)(?:is_a|responds_to)\?/, |
||||
|
lookbehind: true |
||||
|
} |
||||
|
], |
||||
|
|
||||
|
number: /\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\da-fA-F_]*[\da-fA-F]|(?:\d(?:[\d_]*\d)?)(?:\.[\d_]*\d)?(?:[eE][+-]?[\d_]*\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\b/ |
||||
|
}); |
||||
|
|
||||
|
Prism.languages.insertBefore('crystal', 'string', { |
||||
|
attribute: { |
||||
|
pattern: /@\[.+?\]/, |
||||
|
alias: 'attr-name', |
||||
|
inside: { |
||||
|
delimiter: { |
||||
|
pattern: /^@\[|\]$/, |
||||
|
alias: 'tag' |
||||
|
}, |
||||
|
rest: Prism.languages.crystal |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
expansion: [ |
||||
|
{ |
||||
|
pattern: /\{\{.+?\}\}/, |
||||
|
inside: { |
||||
|
delimiter: { |
||||
|
pattern: /^\{\{|\}\}$/, |
||||
|
alias: 'tag' |
||||
|
}, |
||||
|
rest: Prism.languages.crystal |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
pattern: /\{%.+?%\}/, |
||||
|
inside: { |
||||
|
delimiter: { |
||||
|
pattern: /^\{%|%\}$/, |
||||
|
alias: 'tag' |
||||
|
}, |
||||
|
rest: Prism.languages.crystal |
||||
|
} |
||||
|
} |
||||
|
] |
||||
|
}); |
||||
|
|
||||
|
}(Prism)); |
||||
@ -0,0 +1 @@ |
|||||
|
!function(e){e.languages.crystal=e.languages.extend("ruby",{keyword:[/\b(?:abstract|alias|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|rescue|return|require|select|self|sizeof|struct|super|then|type|typeof|uninitialized|union|unless|until|when|while|with|yield|__DIR__|__END_LINE__|__FILE__|__LINE__)\b/,{pattern:/(\.\s*)(?:is_a|responds_to)\?/,lookbehind:!0}],number:/\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\da-fA-F_]*[\da-fA-F]|(?:\d(?:[\d_]*\d)?)(?:\.[\d_]*\d)?(?:[eE][+-]?[\d_]*\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\b/}),e.languages.insertBefore("crystal","string",{attribute:{pattern:/@\[.+?\]/,alias:"attr-name",inside:{delimiter:{pattern:/^@\[|\]$/,alias:"tag"},rest:e.languages.crystal}},expansion:[{pattern:/\{\{.+?\}\}/,inside:{delimiter:{pattern:/^\{\{|\}\}$/,alias:"tag"},rest:e.languages.crystal}},{pattern:/\{%.+?%\}/,inside:{delimiter:{pattern:/^\{%|%\}$/,alias:"tag"},rest:e.languages.crystal}}]})}(Prism); |
||||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue