All files / commands sort-document-by-type.ts

100% Statements 5/5
100% Branches 0/0
100% Functions 1/1
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40            1x                                         1x     2x 2x       1x        
import * as vscode from 'vscode';
import { RDF, RDFS, OWL, SKOS } from '@faubulous/mentor-rdf';
import { PrioritySortingStrategy, PriorityStrategyConfig } from '@faubulous/mentor-rdf-serializers';
import { getConfig } from '@src/utilities/vscode/config';
import { sortDocument } from './sort-document';
 
const defaultTypeSortingOptions: PriorityStrategyConfig = {
	typeOrder: [
		OWL.Ontology,
		OWL.Class,
		RDFS.Class,
		OWL.ObjectProperty,
		OWL.DatatypeProperty,
		OWL.AnnotationProperty,
		RDF.Property,
		OWL.NamedIndividual,
		SKOS.ConceptScheme,
		SKOS.Collection,
		SKOS.Concept
	],
	predicateOrder: [
		RDF.type
	],
	unmatchedPosition: 'end',
	unmatchedSort: 'alphabetical'
};
 
export const sortDocumentByType = {
	id: 'mentor.command.sortDocumentByType',
	handler: async (documentUri?: vscode.Uri) => {
		const options = getConfig().get<PriorityStrategyConfig>('sorting.typeSortingOptions', defaultTypeSortingOptions);
		await sortDocument(documentUri, new PrioritySortingStrategy(options));
	}
};
 
export const sortDocumentByTypeSubmenu = {
	id: 'mentor.command.sortDocumentByTypeSubmenu',
	handler: sortDocumentByType.handler
};