3425307fe8bf1ffdcc45d40d37ada60d374a9fd9
[idea/community.git] / json / src / com / intellij / json / JsonScriptContentProvider.java
1 /*
2  * Copyright 2000-2015 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.json;/*
17  * Copyright 2000-2015 JetBrains s.r.o.
18  *
19  * Licensed under the Apache License, Version 2.0 (the "License");
20  * you may not use this file except in compliance with the License.
21  * You may obtain a copy of the License at
22  *
23  * http://www.apache.org/licenses/LICENSE-2.0
24  *
25  * Unless required by applicable law or agreed to in writing, software
26  * distributed under the License is distributed on an "AS IS" BASIS,
27  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28  * See the License for the specific language governing permissions and
29  * limitations under the License.
30  */
31
32 import com.intellij.javascript.JSScriptContentProvider;
33 import com.intellij.lang.HtmlScriptContentProvider;
34 import com.intellij.lexer.Lexer;
35 import com.intellij.psi.tree.IElementType;
36 import com.intellij.psi.tree.ILazyParseableElementType;
37 import org.jetbrains.annotations.Nullable;
38
39 /**
40  * Json as  embedded script
41  *
42  * @author Ilya.Kazakevich
43  */
44 public final class JsonScriptContentProvider implements HtmlScriptContentProvider {
45
46   private static final JsonEmbedded JSON_EMBEDDED = new JsonEmbedded();
47
48   @Override
49   public IElementType getScriptElementType() {
50     return JSON_EMBEDDED;
51   }
52
53   @Nullable
54   @Override
55   public Lexer getHighlightingLexer() {
56     // TODO: temporary solution:
57     /**
58      * We do not have highlighting JSON lexer for embedded environment for now, so we reuse JScript
59      */
60     return new JSScriptContentProvider().getHighlightingLexer();
61   }
62
63   private static final class JsonEmbedded extends ILazyParseableElementType {
64     private JsonEmbedded() {
65       super("JSON_EMBEDDED", JsonLanguage.INSTANCE);
66     }
67   }
68 }