ui: Refactors the code-mirror linting/restrict legacy tokens to HCL (#4866)
This commit is contained in:
parent
74390f2d24
commit
8656c65a3d
|
@ -11,7 +11,7 @@ const DEFAULTS = {
|
|||
};
|
||||
export default Component.extend({
|
||||
settings: service('settings'),
|
||||
helper: service('code-mirror'),
|
||||
helper: service('code-mirror/linter'),
|
||||
classNames: ['code-editor'],
|
||||
syntax: '',
|
||||
onchange: function(value) {
|
||||
|
|
|
@ -1,44 +1,9 @@
|
|||
import { inject as service } from '@ember/service';
|
||||
import { get } from '@ember/object';
|
||||
import lint from 'consul-ui/utils/editor/lint';
|
||||
const MODES = [
|
||||
{
|
||||
name: 'JSON',
|
||||
mime: 'application/json',
|
||||
mode: 'javascript',
|
||||
ext: ['json', 'map'],
|
||||
alias: ['json5'],
|
||||
},
|
||||
{
|
||||
name: 'HCL',
|
||||
mime: 'text/x-ruby',
|
||||
mode: 'ruby',
|
||||
ext: ['rb'],
|
||||
alias: ['jruby', 'macruby', 'rake', 'rb', 'rbx'],
|
||||
},
|
||||
{ name: 'YAML', mime: 'text/x-yaml', mode: 'yaml', ext: ['yaml', 'yml'], alias: ['yml'] },
|
||||
];
|
||||
export function initialize(application) {
|
||||
const IvyCodeMirrorComponent = application.resolveRegistration('component:ivy-codemirror');
|
||||
const IvyCodeMirrorService = application.resolveRegistration('service:code-mirror');
|
||||
// Make sure ivy-codemirror respects/maintains a `name=""` attribute
|
||||
IvyCodeMirrorComponent.reopen({
|
||||
attributeBindings: ['name'],
|
||||
});
|
||||
// Add some method to the code-mirror service so I don't have to have 2 services
|
||||
// for dealing with codemirror
|
||||
IvyCodeMirrorService.reopen({
|
||||
dom: service('dom'),
|
||||
modes: function() {
|
||||
return MODES;
|
||||
},
|
||||
lint: function() {
|
||||
return lint(...arguments);
|
||||
},
|
||||
getEditor: function(element) {
|
||||
return get(this, 'dom').element('textarea + div', element).CodeMirror;
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export default {
|
||||
|
|
33
ui-v2/app/services/code-mirror/linter.js
Normal file
33
ui-v2/app/services/code-mirror/linter.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
import Service, { inject as service } from '@ember/service';
|
||||
import { get } from '@ember/object';
|
||||
import lint from 'consul-ui/utils/editor/lint';
|
||||
const MODES = [
|
||||
{
|
||||
name: 'JSON',
|
||||
mime: 'application/json',
|
||||
mode: 'javascript',
|
||||
ext: ['json', 'map'],
|
||||
alias: ['json5'],
|
||||
},
|
||||
{
|
||||
name: 'HCL',
|
||||
mime: 'text/x-ruby',
|
||||
mode: 'ruby',
|
||||
ext: ['rb'],
|
||||
alias: ['jruby', 'macruby', 'rake', 'rb', 'rbx'],
|
||||
},
|
||||
{ name: 'YAML', mime: 'text/x-yaml', mode: 'yaml', ext: ['yaml', 'yml'], alias: ['yml'] },
|
||||
];
|
||||
|
||||
export default Service.extend({
|
||||
dom: service('dom'),
|
||||
modes: function() {
|
||||
return MODES;
|
||||
},
|
||||
lint: function() {
|
||||
return lint(...arguments);
|
||||
},
|
||||
getEditor: function(element) {
|
||||
return get(this, 'dom').element('textarea + div', element).CodeMirror;
|
||||
},
|
||||
});
|
12
ui-v2/tests/unit/services/code-mirror/linter-test.js
Normal file
12
ui-v2/tests/unit/services/code-mirror/linter-test.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
import { moduleFor, test } from 'ember-qunit';
|
||||
|
||||
moduleFor('service:code-mirror/linter', 'Unit | Service | code mirror/linter', {
|
||||
// Specify the other units that are required for this test.
|
||||
needs: ['service:dom'],
|
||||
});
|
||||
|
||||
// Replace this with your real tests.
|
||||
test('it exists', function(assert) {
|
||||
let service = this.subject();
|
||||
assert.ok(service);
|
||||
});
|
Loading…
Reference in a new issue