source: frontend/node_modules/css-tree/lib/syntax/create.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.3 KB
RevLine 
[9af201e]1var List = require('../common/List');
2var SyntaxError = require('../common/SyntaxError');
3var TokenStream = require('../common/TokenStream');
4var Lexer = require('../lexer/Lexer');
5var definitionSyntax = require('../definition-syntax');
6var tokenize = require('../tokenizer');
7var createParser = require('../parser/create');
8var createGenerator = require('../generator/create');
9var createConvertor = require('../convertor/create');
10var createWalker = require('../walker/create');
11var clone = require('../utils/clone');
12var names = require('../utils/names');
13var mix = require('./config/mix');
14
15function assign(dest, src) {
16 for (var key in src) {
17 dest[key] = src[key];
18 }
19
20 return dest;
21}
22
23function createSyntax(config) {
24 var parse = createParser(config);
25 var walk = createWalker(config);
26 var generate = createGenerator(config);
27 var convert = createConvertor(walk);
28
29 var syntax = {
30 List: List,
31 SyntaxError: SyntaxError,
32 TokenStream: TokenStream,
33 Lexer: Lexer,
34
35 vendorPrefix: names.vendorPrefix,
36 keyword: names.keyword,
37 property: names.property,
38 isCustomProperty: names.isCustomProperty,
39
40 definitionSyntax: definitionSyntax,
41 lexer: null,
42 createLexer: function(config) {
43 return new Lexer(config, syntax, syntax.lexer.structure);
44 },
45
46 tokenize: tokenize,
47 parse: parse,
48 walk: walk,
49 generate: generate,
50
51 find: walk.find,
52 findLast: walk.findLast,
53 findAll: walk.findAll,
54
55 clone: clone,
56 fromPlainObject: convert.fromPlainObject,
57 toPlainObject: convert.toPlainObject,
58
59 createSyntax: function(config) {
60 return createSyntax(mix({}, config));
61 },
62 fork: function(extension) {
63 var base = mix({}, config); // copy of config
64 return createSyntax(
65 typeof extension === 'function'
66 ? extension(base, assign)
67 : mix(base, extension)
68 );
69 }
70 };
71
72 syntax.lexer = new Lexer({
73 generic: true,
74 types: config.types,
75 properties: config.properties,
76 node: config.node
77 }, syntax);
78
79 return syntax;
80};
81
82exports.create = function(config) {
83 return createSyntax(mix({}, config));
84};
Note: See TracBrowser for help on using the repository browser.