123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /**
- * Javascript patterns
- *
- * @author Craig Campbell
- * @version 1.0.7
- */
- Rainbow.extend('javascript', [
- /**
- * matches $. or $(
- */
- {
- 'name': 'selector',
- 'pattern': /(\s|^)\$(?=\.|\()/g
- },
- {
- 'name': 'support',
- 'pattern': /\b(window|document)\b/g
- },
- {
- 'matches': {
- 1: 'support.property'
- },
- 'pattern': /\.(length|node(Name|Value))\b/g
- },
- {
- 'matches': {
- 1: 'support.function'
- },
- 'pattern': /(setTimeout|setInterval)(?=\()/g
- },
- {
- 'matches': {
- 1: 'support.method'
- },
- 'pattern': /\.(getAttribute|push|getElementById|getElementsByClassName|log|setTimeout|setInterval)(?=\()/g
- },
- {
- 'matches': {
- 1: 'support.tag.script',
- 2: [
- {
- 'name': 'string',
- 'pattern': /('|")(.*?)(\1)/g
- },
- {
- 'name': 'entity.tag.script',
- 'pattern': /(\w+)/g
- }
- ],
- 3: 'support.tag.script'
- },
- 'pattern': /(<\/?)(script.*?)(>)/g
- },
- /**
- * matches any escaped characters inside of a js regex pattern
- *
- * @see https://github.com/ccampbell/rainbow/issues/22
- *
- * this was causing single line comments to fail so it now makes sure
- * the opening / is not directly followed by a *
- *
- * @todo check that there is valid regex in match group 1
- */
- {
- 'name': 'string.regexp',
- 'matches': {
- 1: 'string.regexp.open',
- 2: {
- 'name': 'constant.regexp.escape',
- 'pattern': /\\(.){1}/g
- },
- 3: 'string.regexp.cclose',
- 4: 'string.regexp.modifier'
- },
- 'pattern': /(\/)(?!\*)(.+)(\/)([igm]{0,3})/g
- },
- /**
- * matches runtime function declarations
- */
- {
- 'matches': {
- 1: 'storage',
- 3: 'entity.function'
- },
- 'pattern': /(var)?(\s|^)(.*)(?=\s?=\s?function\()/g
- },
- /**
- * matches constructor call
- */
- {
- 'matches': {
- 1: 'keyword',
- 2: 'entity.function'
- },
- 'pattern': /(new)\s+(.*)(?=\()/g
- },
- /**
- * matches any function call in the style functionName: function()
- */
- {
- 'name': 'entity.function',
- 'pattern': /(\w+)(?=:\s{0,}function)/g
- }
- ]);
|