Atom package to provide syntax highlighting for the MiniZinc constraint modelling language

Blank atom package

dekker.one 7d4ad4f8

+212
+3
.gitignore
··· 1 + .DS_Store 2 + npm-debug.log 3 + node_modules
+3
CHANGELOG.md
··· 1 + ## 0.1.0 - First Release 2 + * Every feature added 3 + * Every bug fixed
+20
LICENSE.md
··· 1 + Copyright (c) 2015 <Your name here> 2 + 3 + Permission is hereby granted, free of charge, to any person obtaining 4 + a copy of this software and associated documentation files (the 5 + "Software"), to deal in the Software without restriction, including 6 + without limitation the rights to use, copy, modify, merge, publish, 7 + distribute, sublicense, and/or sell copies of the Software, and to 8 + permit persons to whom the Software is furnished to do so, subject to 9 + the following conditions: 10 + 11 + The above copyright notice and this permission notice shall be 12 + included in all copies or substantial portions of the Software. 13 + 14 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+5
README.md
··· 1 + # language-mzn package 2 + 3 + A short description of your package. 4 + 5 + ![A screenshot of your package](https://f.cloud.github.com/assets/69169/2290250/c35d867a-a017-11e3-86be-cd7c5bf3ff9b.gif)
+11
keymaps/language-mzn.cson
··· 1 + # Keybindings require three things to be fully defined: A selector that is 2 + # matched against the focused element, the keystroke and the command to 3 + # execute. 4 + # 5 + # Below is a basic keybinding which registers on all platforms by applying to 6 + # the root workspace element. 7 + 8 + # For more detailed documentation see 9 + # https://atom.io/docs/latest/behind-atom-keymaps-in-depth 10 + 'atom-workspace': 11 + 'ctrl-alt-o': 'language-mzn:toggle'
+22
lib/language-mzn-view.coffee
··· 1 + module.exports = 2 + class LanguageMznView 3 + constructor: (serializedState) -> 4 + # Create root element 5 + @element = document.createElement('div') 6 + @element.classList.add('language-mzn') 7 + 8 + # Create message element 9 + message = document.createElement('div') 10 + message.textContent = "The LanguageMzn package is Alive! It's ALIVE!" 11 + message.classList.add('message') 12 + @element.appendChild(message) 13 + 14 + # Returns an object that can be retrieved when package is activated 15 + serialize: -> 16 + 17 + # Tear down any state and detach 18 + destroy: -> 19 + @element.remove() 20 + 21 + getElement: -> 22 + @element
+33
lib/language-mzn.coffee
··· 1 + LanguageMznView = require './language-mzn-view' 2 + {CompositeDisposable} = require 'atom' 3 + 4 + module.exports = LanguageMzn = 5 + languageMznView: null 6 + modalPanel: null 7 + subscriptions: null 8 + 9 + activate: (state) -> 10 + @languageMznView = new LanguageMznView(state.languageMznViewState) 11 + @modalPanel = atom.workspace.addModalPanel(item: @languageMznView.getElement(), visible: false) 12 + 13 + # Events subscribed to in atom's system can be easily cleaned up with a CompositeDisposable 14 + @subscriptions = new CompositeDisposable 15 + 16 + # Register command that toggles this view 17 + @subscriptions.add atom.commands.add 'atom-workspace', 'language-mzn:toggle': => @toggle() 18 + 19 + deactivate: -> 20 + @modalPanel.destroy() 21 + @subscriptions.dispose() 22 + @languageMznView.destroy() 23 + 24 + serialize: -> 25 + languageMznViewState: @languageMznView.serialize() 26 + 27 + toggle: -> 28 + console.log 'LanguageMzn was toggled!' 29 + 30 + if @modalPanel.isVisible() 31 + @modalPanel.hide() 32 + else 33 + @modalPanel.show()
+22
menus/language-mzn.cson
··· 1 + # See https://atom.io/docs/latest/hacking-atom-package-word-count#menus for more details 2 + 'context-menu': 3 + 'atom-text-editor': [ 4 + { 5 + 'label': 'Toggle language-mzn' 6 + 'command': 'language-mzn:toggle' 7 + } 8 + ] 9 + 'menu': [ 10 + { 11 + 'label': 'Packages' 12 + 'submenu': [ 13 + 'label': 'language-mzn' 14 + 'submenu': [ 15 + { 16 + 'label': 'Toggle' 17 + 'command': 'language-mzn:toggle' 18 + } 19 + ] 20 + ] 21 + } 22 + ]
+18
package.json
··· 1 + { 2 + "name": "language-mzn", 3 + "main": "./lib/language-mzn", 4 + "version": "0.0.0", 5 + "description": "A short description of your package", 6 + "keywords": [ 7 + ], 8 + "activationCommands": { 9 + "atom-workspace": "language-mzn:toggle" 10 + }, 11 + "repository": "https://github.com/atom/language-mzn", 12 + "license": "MIT", 13 + "engines": { 14 + "atom": ">=1.0.0 <2.0.0" 15 + }, 16 + "dependencies": { 17 + } 18 + }
+62
spec/language-mzn-spec.coffee
··· 1 + LanguageMzn = require '../lib/language-mzn' 2 + 3 + # Use the command `window:run-package-specs` (cmd-alt-ctrl-p) to run specs. 4 + # 5 + # To run a specific `it` or `describe` block add an `f` to the front (e.g. `fit` 6 + # or `fdescribe`). Remove the `f` to unfocus the block. 7 + 8 + describe "LanguageMzn", -> 9 + [workspaceElement, activationPromise] = [] 10 + 11 + beforeEach -> 12 + workspaceElement = atom.views.getView(atom.workspace) 13 + activationPromise = atom.packages.activatePackage('language-mzn') 14 + 15 + describe "when the language-mzn:toggle event is triggered", -> 16 + it "hides and shows the modal panel", -> 17 + # Before the activation event the view is not on the DOM, and no panel 18 + # has been created 19 + expect(workspaceElement.querySelector('.language-mzn')).not.toExist() 20 + 21 + # This is an activation event, triggering it will cause the package to be 22 + # activated. 23 + atom.commands.dispatch workspaceElement, 'language-mzn:toggle' 24 + 25 + waitsForPromise -> 26 + activationPromise 27 + 28 + runs -> 29 + expect(workspaceElement.querySelector('.language-mzn')).toExist() 30 + 31 + languageMznElement = workspaceElement.querySelector('.language-mzn') 32 + expect(languageMznElement).toExist() 33 + 34 + languageMznPanel = atom.workspace.panelForItem(languageMznElement) 35 + expect(languageMznPanel.isVisible()).toBe true 36 + atom.commands.dispatch workspaceElement, 'language-mzn:toggle' 37 + expect(languageMznPanel.isVisible()).toBe false 38 + 39 + it "hides and shows the view", -> 40 + # This test shows you an integration test testing at the view level. 41 + 42 + # Attaching the workspaceElement to the DOM is required to allow the 43 + # `toBeVisible()` matchers to work. Anything testing visibility or focus 44 + # requires that the workspaceElement is on the DOM. Tests that attach the 45 + # workspaceElement to the DOM are generally slower than those off DOM. 46 + jasmine.attachToDOM(workspaceElement) 47 + 48 + expect(workspaceElement.querySelector('.language-mzn')).not.toExist() 49 + 50 + # This is an activation event, triggering it causes the package to be 51 + # activated. 52 + atom.commands.dispatch workspaceElement, 'language-mzn:toggle' 53 + 54 + waitsForPromise -> 55 + activationPromise 56 + 57 + runs -> 58 + # Now we can test for view visibility 59 + languageMznElement = workspaceElement.querySelector('.language-mzn') 60 + expect(languageMznElement).toBeVisible() 61 + atom.commands.dispatch workspaceElement, 'language-mzn:toggle' 62 + expect(languageMznElement).not.toBeVisible()
+5
spec/language-mzn-view-spec.coffee
··· 1 + LanguageMznView = require '../lib/language-mzn-view' 2 + 3 + describe "LanguageMznView", -> 4 + it "has one valid test", -> 5 + expect("life").toBe "easy"
+8
styles/language-mzn.less
··· 1 + // The ui-variables file is provided by base themes provided by Atom. 2 + // 3 + // See https://github.com/atom/atom-dark-ui/blob/master/styles/ui-variables.less 4 + // for a full listing of what's available. 5 + @import "ui-variables"; 6 + 7 + .language-mzn { 8 + }