From e7b5e25bf88cabf577ae68c474a68e0fea40d4bc Mon Sep 17 00:00:00 2001 From: John Gardner Date: Fri, 3 Feb 2017 06:08:20 +1100 Subject: [PATCH] Add support for regular expression data (#3441) --- .gitmodules | 3 ++ grammars.yml | 4 ++ lib/linguist/languages.yml | 18 +++++-- .../Regular Expression/modeline-emacs.regexp | 19 +++++++ .../Regular Expression/modeline-vim.regexp | 27 ++++++++++ samples/Regular Expression/ordinal.regex | 1 + samples/Regular Expression/url.regex | 1 + samples/Text/filenames/COPYING.regex | 54 +++++++++++++++++++ vendor/README.md | 3 +- vendor/grammars/language-regexp | 1 + vendor/licenses/grammar/language-regexp.txt | 18 +++++++ 11 files changed, 145 insertions(+), 4 deletions(-) create mode 100644 samples/Regular Expression/modeline-emacs.regexp create mode 100644 samples/Regular Expression/modeline-vim.regexp create mode 100644 samples/Regular Expression/ordinal.regex create mode 100644 samples/Regular Expression/url.regex create mode 100644 samples/Text/filenames/COPYING.regex create mode 160000 vendor/grammars/language-regexp create mode 100644 vendor/licenses/grammar/language-regexp.txt diff --git a/.gitmodules b/.gitmodules index 7e082ef0..14461012 100644 --- a/.gitmodules +++ b/.gitmodules @@ -815,3 +815,6 @@ [submodule "vendor/grammars/language-css"] path = vendor/grammars/language-css url = https://github.com/atom/language-css +[submodule "vendor/grammars/language-regexp"] + path = vendor/grammars/language-regexp + url = https://github.com/Alhadis/language-regexp diff --git a/grammars.yml b/grammars.yml index 88060df5..217eefad 100755 --- a/grammars.yml +++ b/grammars.yml @@ -415,6 +415,10 @@ vendor/grammars/language-povray: vendor/grammars/language-python: - text.python.console - text.python.traceback +vendor/grammars/language-regexp: +- source.regexp +- source.regexp.comment +- source.regexp.extended vendor/grammars/language-renpy: - source.renpy vendor/grammars/language-restructuredtext: diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index a0c86f2c..e2794ea7 100755 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -3601,6 +3601,17 @@ Redcode: tm_scope: none ace_mode: text language_id: 321 +Regular Expression: + type: data + extensions: + - ".regexp" + - ".regex" + aliases: + - regexp + - regex + ace_mode: text + tm_scope: source.regexp + language_id: 363378884 Ren'Py: type: programming aliases: @@ -4298,6 +4309,7 @@ Text: - ".no" filenames: - COPYING + - COPYRIGHT.regex - FONTLOG - INSTALL - INSTALL.mysql @@ -4597,9 +4609,9 @@ XCompose: type: data filenames: - ".XCompose" - - "XCompose" - - "xcompose" - tm_scope: 'config.xcompose' + - XCompose + - xcompose + tm_scope: config.xcompose ace_mode: text language_id: 225167241 XML: diff --git a/samples/Regular Expression/modeline-emacs.regexp b/samples/Regular Expression/modeline-emacs.regexp new file mode 100644 index 00000000..b9c33b82 --- /dev/null +++ b/samples/Regular Expression/modeline-emacs.regexp @@ -0,0 +1,19 @@ +-\*- +(?: + \s* + (?= [^:;\s]+ \s* -\*-) + | + (?: + .*?[;\s] + | + (?<=-\*-) + ) + mode\s*:\s* +) +([^:;\s]+) + +(?= + [\s;] | (?]?\d+|m)? + | + [\t\x20] + ex +) +(?= + : (?=\s* set? \s [^\n:]+ :) | + : (?!\s* set? \s) +) + +(?: + (?:\s|\s*:\s*) + \w* + (?: + \s*= + (?:[^\n\\\s]|\\.)* + )? +)* + +[\s:] +(?:filetype|ft|syntax) +\s*= +(MODE_NAME_HERE) +(?=\s|:|$) diff --git a/samples/Regular Expression/ordinal.regex b/samples/Regular Expression/ordinal.regex new file mode 100644 index 00000000..9017a8e0 --- /dev/null +++ b/samples/Regular Expression/ordinal.regex @@ -0,0 +1 @@ +\b(\d*1[1-3]th|\d*0th|(?:(?!11st)\d)*1st|\d*2nd|(?:(?!13rd)\d*)3rd|\d*[4-9]th)\b diff --git a/samples/Regular Expression/url.regex b/samples/Regular Expression/url.regex new file mode 100644 index 00000000..298419d7 --- /dev/null +++ b/samples/Regular Expression/url.regex @@ -0,0 +1 @@ +/^([^\/#\?]*:?\/\/)?(\/?(?:[^\/#\?]+\/)*)?([^\/#\?]+)?(?:\/(?=$))?(\?[^#]*)?(#.*)?$/ diff --git a/samples/Text/filenames/COPYING.regex b/samples/Text/filenames/COPYING.regex new file mode 100644 index 00000000..a6392fd3 --- /dev/null +++ b/samples/Text/filenames/COPYING.regex @@ -0,0 +1,54 @@ +$OpenBSD: COPYRIGHT,v 1.3 2003/06/02 20:18:36 millert Exp $ + +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. + +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: + +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + +4. This notice may not be removed or altered. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +/*- + * Copyright (c) 1994 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)COPYRIGHT 8.1 (Berkeley) 3/16/94 + */ diff --git a/vendor/README.md b/vendor/README.md index 15654c34..359a9b14 100644 --- a/vendor/README.md +++ b/vendor/README.md @@ -84,7 +84,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **D-ObjDump:** [nanoant/assembly.tmbundle](https://github.com/nanoant/assembly.tmbundle) - **Dart:** [guillermooo/dart-sublime-bundle](https://github.com/guillermooo/dart-sublime-bundle) - **desktop:** [Mailaender/desktop.tmbundle](https://github.com/Mailaender/desktop.tmbundle) -- **Diff:** [kivikakk/diff.tmbundle](https://github.com/kivikakk/diff.tmbundle) +- **Diff:** [textmate/diff.tmbundle](https://github.com/textmate/diff.tmbundle) - **DM:** [PJB3005/atomic-dreams](https://github.com/PJB3005/atomic-dreams) - **DNS Zone:** [sixty4k/st2-zonefile](https://github.com/sixty4k/st2-zonefile) - **Dockerfile:** [asbjornenge/Docker.tmbundle](https://github.com/asbjornenge/Docker.tmbundle) @@ -278,6 +278,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Reason:** [facebook/reason](https://github.com/facebook/reason) - **Rebol:** [Oldes/Sublime-REBOL](https://github.com/Oldes/Sublime-REBOL) - **Red:** [Oldes/Sublime-Red](https://github.com/Oldes/Sublime-Red) +- **Regular Expression:** [Alhadis/language-regexp](https://github.com/Alhadis/language-regexp) - **Ren'Py:** [williamd1k0/language-renpy](https://github.com/williamd1k0/language-renpy) - **reStructuredText:** [Lukasa/language-restructuredtext](https://github.com/Lukasa/language-restructuredtext) - **REXX:** [mblocker/rexx-sublime](https://github.com/mblocker/rexx-sublime) diff --git a/vendor/grammars/language-regexp b/vendor/grammars/language-regexp new file mode 160000 index 00000000..9dc99a60 --- /dev/null +++ b/vendor/grammars/language-regexp @@ -0,0 +1 @@ +Subproject commit 9dc99a60ae07a8f8773527600c9ef9a6489a21c4 diff --git a/vendor/licenses/grammar/language-regexp.txt b/vendor/licenses/grammar/language-regexp.txt new file mode 100644 index 00000000..29fe86b1 --- /dev/null +++ b/vendor/licenses/grammar/language-regexp.txt @@ -0,0 +1,18 @@ +--- +type: grammar +name: language-regexp +license: isc +--- +Copyright (c) 2016-2017, John Gardner + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.