Skip to content

Commit

Permalink
Merge pull request #557 from mtpc/master
Browse files Browse the repository at this point in the history
support namespaced tsx
  • Loading branch information
sheetalkamat committed Mar 3, 2018
2 parents ebd19c7 + 3d230d3 commit e8fea97
Show file tree
Hide file tree
Showing 4 changed files with 389 additions and 41 deletions.
67 changes: 42 additions & 25 deletions TypeScriptReact.YAML-tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -34,25 +34,29 @@ repository:
begin: |-
(?x)
(?<=[({\[,?=>:*]|&&|\|\||\?|{{lookBehindReturn}}|{{lookBehindDefault}}|^)\s*
(?=(<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
end: (?!\s*(<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
(?=(<)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
end: (?!\s*(<)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
patterns:
- include: '#jsx-tag-without-attributes'

jsx-tag-without-attributes:
name: meta.tag.without-attributes.tsx
begin: (<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
end: (</)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
begin: (<)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
end: (</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
beginCaptures:
'1': {name: punctuation.definition.tag.begin.tsx}
'2': {name: entity.name.tag.tsx}
'3': {name: support.class.component.tsx}
'4': {name: punctuation.definition.tag.end.tsx}
'2': {name: entity.name.tag.namespace.tsx}
'3': {name: punctuation.separator.namespace.tsx}
'4': {name: entity.name.tag.tsx}
'5': {name: support.class.component.tsx}
'6': {name: punctuation.definition.tag.end.tsx}
endCaptures:
'1': {name: punctuation.definition.tag.begin.tsx}
'2': {name: entity.name.tag.tsx}
'3': {name: support.class.component.tsx}
'4': {name: punctuation.definition.tag.end.tsx}
'2': {name: entity.name.tag.namespace.tsx}
'3': {name: punctuation.separator.namespace.tsx}
'4': {name: entity.name.tag.tsx}
'5': {name: support.class.component.tsx}
'6': {name: punctuation.definition.tag.end.tsx}
contentName: meta.jsx.children.tsx
patterns:
- include: '#jsx-children'
Expand All @@ -64,16 +68,19 @@ repository:
(?<=[({\[,?=>:*]|&&|\|\||\?|{{lookBehindReturn}}|{{lookBehindDefault}}|^)\s*
(?!<\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s+[^=>])|,)) # look ahead is not type parameter of arrow
(?=(<)\s*
([_$a-zA-Z][-$\w.]*(?<!\.|-):)?
([_$a-zA-Z][-$\w.]*(?<!\.|-))
(?=\s+(?!\?)|/?>))
end: (/>)|(?:(</)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
end: (/>)|(?:(</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
endCaptures:
'0': { name: meta.tag.tsx }
'1': { name: punctuation.definition.tag.end.tsx }
'2': { name: punctuation.definition.tag.begin.tsx }
'3': { name: entity.name.tag.tsx }
'4': { name: support.class.component.tsx }
'5': { name: punctuation.definition.tag.end.tsx }
'3': { name: entity.name.tag.namespace.tsx }
'4': { name: punctuation.separator.namespace.tsx }
'5': { name: entity.name.tag.tsx }
'6': { name: support.class.component.tsx }
'7': { name: punctuation.definition.tag.end.tsx }
patterns:
- include: '#jsx-tag'

Expand All @@ -82,16 +89,19 @@ repository:
begin: |-
(?x)
(?=(<)\s*
([_$a-zA-Z][-$\w.]*(?<!\.|-):)?
([_$a-zA-Z][-$\w.]*(?<!\.|-))
(?=\s+(?!\?)|/?>))
end: (/>)|(?:(</)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
end: (/>)|(?:(</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
endCaptures:
'0': { name: meta.tag.tsx }
'1': { name: punctuation.definition.tag.end.tsx }
'2': { name: punctuation.definition.tag.begin.tsx }
'3': { name: entity.name.tag.tsx }
'4': { name: support.class.component.tsx }
'5': { name: punctuation.definition.tag.end.tsx }
'0': { name: meta.tag.tsx }
'1': { name: punctuation.definition.tag.end.tsx }
'2': { name: punctuation.definition.tag.begin.tsx }
'3': { name: entity.name.tag.namespace.tsx }
'4': { name: punctuation.separator.namespace.tsx }
'5': { name: entity.name.tag.tsx }
'6': { name: support.class.component.tsx }
'7': { name: punctuation.definition.tag.end.tsx }
patterns:
- include: '#jsx-tag'

Expand All @@ -100,19 +110,23 @@ repository:
begin: |-
(?x)
(?=(<)\s*
(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?
([_$a-zA-Z][-$\w.]*(?<!\.|-))
(?=\s+(?!\?)|/?>))
end: (?=(/>)|(?:(</)\s*([_$a-zA-Z][-$\w.]*(?<!\.|-))\s*(>)))
end: (?=(/>)|(?:(</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?([_$a-zA-Z][-$\w.]*(?<!\.|-))\s*(>)))
patterns:
- begin: |-
(?x)
(<)\s*
(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?
((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))
(?=\s+(?!\?)|/?>)
beginCaptures:
'1': { name: punctuation.definition.tag.begin.tsx }
'2': { name: entity.name.tag.tsx }
'3': { name: support.class.component.tsx }
'2': { name: entity.name.tag.namespace.tsx }
'3': { name: punctuation.separator.namespace.tsx }
'4': { name: entity.name.tag.tsx }
'5': { name: support.class.component.tsx }
end: (?=[/]?>)
contentName: meta.tag.attributes.tsx
patterns:
Expand Down Expand Up @@ -170,10 +184,13 @@ repository:
match: |-
(?x)
\s*
(?:([_$a-zA-Z][-$\w.]*)(:))?
([_$a-zA-Z][-$\w]*)
(?=\s|=|/?>|/\*|//)
captures:
'1': {name: entity.other.attribute-name.tsx}
'1': {name: entity.other.attribute-name.namespace.tsx}
'2': {name: punctuation.separator.namespace.tsx}
'3': {name: entity.other.attribute-name.tsx}

jsx-tag-attribute-assignment:
name: keyword.operator.assignment.tsx
Expand Down
97 changes: 81 additions & 16 deletions TypeScriptReact.tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -6897,9 +6897,9 @@
<key>begin</key>
<string>(?x)
(?&lt;=[({\[,?=&gt;:*]|&amp;&amp;|\|\||\?|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^)\s*
(?=(&lt;)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;))</string>
(?=(&lt;)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;))</string>
<key>end</key>
<string>(?!\s*(&lt;)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;))</string>
<string>(?!\s*(&lt;)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;))</string>
<key>patterns</key>
<array>
<dict>
Expand All @@ -6913,9 +6913,9 @@
<key>name</key>
<string>meta.tag.without-attributes.tsx</string>
<key>begin</key>
<string>(&lt;)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;)</string>
<string>(&lt;)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;)</string>
<key>end</key>
<string>(&lt;/)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;)</string>
<string>(&lt;/)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
Expand All @@ -6926,14 +6926,24 @@
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.tsx</string>
<string>entity.name.tag.namespace.tsx</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>support.class.component.tsx</string>
<string>punctuation.separator.namespace.tsx</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.tag.tsx</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>support.class.component.tsx</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.tsx</string>
Expand All @@ -6949,14 +6959,24 @@
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.tsx</string>
<string>entity.name.tag.namespace.tsx</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>support.class.component.tsx</string>
<string>punctuation.separator.namespace.tsx</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.tag.tsx</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>support.class.component.tsx</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.tsx</string>
Expand All @@ -6979,10 +6999,11 @@
(?&lt;=[({\[,?=&gt;:*]|&amp;&amp;|\|\||\?|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^)\s*
(?!&lt;\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s+[^=&gt;])|,)) # look ahead is not type parameter of arrow
(?=(&lt;)\s*
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-):)?
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))
(?=\s+(?!\?)|/?&gt;))</string>
<key>end</key>
<string>(/&gt;)|(?:(&lt;/)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))\s*(&gt;))</string>
<string>(/&gt;)|(?:(&lt;/)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))\s*(&gt;))</string>
<key>endCaptures</key>
<dict>
<key>0</key>
Expand All @@ -7003,14 +7024,24 @@
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.tag.tsx</string>
<string>entity.name.tag.namespace.tsx</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>support.class.component.tsx</string>
<string>punctuation.separator.namespace.tsx</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>entity.name.tag.tsx</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>support.class.component.tsx</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.tsx</string>
Expand All @@ -7029,10 +7060,11 @@
<key>begin</key>
<string>(?x)
(?=(&lt;)\s*
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-):)?
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))
(?=\s+(?!\?)|/?&gt;))</string>
<key>end</key>
<string>(/&gt;)|(?:(&lt;/)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))\s*(&gt;))</string>
<string>(/&gt;)|(?:(&lt;/)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))\s*(&gt;))</string>
<key>endCaptures</key>
<dict>
<key>0</key>
Expand All @@ -7053,14 +7085,24 @@
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.tag.tsx</string>
<string>entity.name.tag.namespace.tsx</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>support.class.component.tsx</string>
<string>punctuation.separator.namespace.tsx</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>entity.name.tag.tsx</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>support.class.component.tsx</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.tsx</string>
Expand All @@ -7081,16 +7123,18 @@
<key>begin</key>
<string>(?x)
(?=(&lt;)\s*
(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))
(?=\s+(?!\?)|/?&gt;))</string>
<key>end</key>
<string>(?=(/&gt;)|(?:(&lt;/)\s*([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))\s*(&gt;)))</string>
<string>(?=(/&gt;)|(?:(&lt;/)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))\s*(&gt;)))</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x)
(&lt;)\s*
(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?
((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))
(?=\s+(?!\?)|/?&gt;)</string>
<key>beginCaptures</key>
Expand All @@ -7103,9 +7147,19 @@
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.tsx</string>
<string>entity.name.tag.namespace.tsx</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.namespace.tsx</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.tag.tsx</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>support.class.component.tsx</string>
Expand Down Expand Up @@ -7272,11 +7326,22 @@
<key>match</key>
<string>(?x)
\s*
(?:([_$a-zA-Z][-$\w.]*)(:))?
([_$a-zA-Z][-$\w]*)
(?=\s|=|/?&gt;|/\*|//)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.namespace.tsx</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.namespace.tsx</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.tsx</string>
Expand Down
Loading

0 comments on commit e8fea97

Please sign in to comment.