@@ -12,6 +12,7 @@ import {
1212 Position ,
1313 Range ,
1414 TextDocument ,
15+ MarkdownString ,
1516} from 'vscode' ;
1617import * as url from 'url' ;
1718import opn = require( 'opn' ) ;
@@ -113,13 +114,13 @@ class LaunchDarklyHoverProvider implements HoverProvider {
113114 public provideHover ( document : TextDocument , position : Position ) : Thenable < Hover > {
114115 return new Promise ( async ( resolve , reject ) => {
115116 if ( this . config . enableHover ) {
116- let candidate = document . getText ( document . getWordRangeAtPosition ( position , FLAG_KEY_REGEX ) ) ;
117+ const candidate = document . getText ( document . getWordRangeAtPosition ( position , FLAG_KEY_REGEX ) ) ;
117118 try {
118- let data =
119+ const data =
119120 ( await this . flagStore . getFeatureFlag ( candidate ) ) ||
120121 ( await this . flagStore . getFeatureFlag ( kebabCase ( candidate ) ) ) ;
121122 if ( data ) {
122- let hover = generateHoverString ( data . flag , data . config ) ;
123+ const hover = generateHoverString ( data . flag , data . config ) ;
123124 resolve ( new Hover ( hover ) ) ;
124125 return ;
125126 }
@@ -180,19 +181,31 @@ const openFlagInBrowser = async (config: Configuration, flagKey: string, flagSto
180181} ;
181182
182183export function generateHoverString ( flag : Flag , c : FlagConfiguration ) {
183- return `**LaunchDarkly feature flag**\n
184- Name: ${ flag . name }
185- Key: ${ c . key }
186- Enabled: ${ c . on }
187- Default variation: ${ JSON . stringify ( c . variations [ c . fallthrough . variation ] ) }
188- Off variation: ${ JSON . stringify ( c . variations [ c . offVariation ] ) }
189- ${ plural ( c . prerequisites . length , 'prerequisite' , 'prerequisites' ) }
190- ${ plural (
191- c . targets . reduce ( ( acc , curr ) => acc + curr . values . length , 0 ) ,
192- 'user target' ,
193- 'user targets' ,
194- ) }
195- ${ plural ( c . rules . length , 'rule' , 'rules' ) } ` ;
184+ const fields = [
185+ [ 'Name' , flag . name ] ,
186+ [ 'Key' , c . key ] ,
187+ [ 'Enabled' , c . on ] ,
188+ [ 'Default variation' , JSON . stringify ( c . variations [ c . fallthrough . variation ] , null , 2 ) ] ,
189+ [ 'Off variation' , JSON . stringify ( c . variations [ c . offVariation ] , null , 2 ) ] ,
190+ [ plural ( c . prerequisites . length , 'prerequisite' , 'prerequisites' ) ] ,
191+ [
192+ plural (
193+ c . targets . reduce ( ( acc , curr ) => acc + curr . values . length , 0 ) ,
194+ 'user target' ,
195+ 'user targets' ,
196+ ) ,
197+ ] ,
198+ [ plural ( c . rules . length , 'rule' , 'rules' ) ] ,
199+ ] ;
200+ let hoverString = new MarkdownString ( `**LaunchDarkly feature flag**` ) ;
201+ fields . forEach ( field => {
202+ hoverString = hoverString . appendText ( '\n' + `${ field [ 0 ] } ` ) ;
203+ if ( field . length == 2 ) {
204+ hoverString = hoverString . appendText ( `: ` ) ;
205+ hoverString = hoverString . appendCodeblock ( `${ field [ 1 ] } ` ) ;
206+ }
207+ } ) ;
208+ return hoverString ;
196209}
197210
198211function plural ( count : number , singular : string , plural : string ) {
0 commit comments