33// Import the module and reference it with the alias vscode in your code below
44import * as vscode from 'vscode' ;
55import * as path from 'path' ;
6- import { open } from 'fs' ;
76
87const EXTENTION_ID = 'denco.confluence-markup' ;
98const EMOTICON_PATH = '/resources/emoticons/' ;
9+ const CSS_PATH = '/resources/css/' ;
1010
1111function imageUri ( searchUri : vscode . Uri , imageLink : string ) {
1212 let imageUri
@@ -25,7 +25,13 @@ function emoticonUri(emoticonFile: string) {
2525 return emoticonUri ;
2626}
2727
28- export async function parseMarkup ( sourceText : string , sourceUri : vscode . Uri ) {
28+ export function cssUri ( cssFile : string ) {
29+ let extPath = vscode . extensions . getExtension ( EXTENTION_ID ) . extensionPath ;
30+ let cssUri = vscode . Uri . file ( path . join ( extPath , CSS_PATH , cssFile ) ) ;
31+ return cssUri ;
32+ }
33+
34+ export async function parseMarkup ( sourceUri : vscode . Uri , sourceText : string ) {
2935 //TODO: use Tokenazer instead of line loop
3036
3137 var result = '' ;
@@ -65,7 +71,13 @@ export async function parseMarkup(sourceText: string, sourceUri: vscode.Uri) {
6571 tag = tag . replace ( / \( x \) / g, '<img alt="(cross)" src="' + emoticonUri ( 'error.png' ) + '"/>' ) ;
6672 tag = tag . replace ( / \( ! \) / g, '<img alt="(warning)" src="' + emoticonUri ( 'warning.png' ) + '"/>' ) ;
6773
68- tag = tag . replace ( / \[ ( [ ^ | ] * ) ? \| ? ( [ ^ | ] * ) \] / g, "<a href='$2'>$1</a>" ) ;
74+ tag = tag . replace ( / \[ ( [ ^ | ] * ) ? \| ? ( [ ^ | ] * ) \] / g, function ( m0 , m1 , m2 ) {
75+ if ( ( m1 . length !== 0 ) && ( m2 . length !== 0 ) ) {
76+ return "<a href='" + m2 + "'>" + m1 + "</a>" ;
77+ } else {
78+ return "<a href='" + m1 + "'>" + m1 + "</a>" ;
79+ }
80+ } ) ;
6981
7082 //img
7183 let img = / ! ( .* ) ! / ;
@@ -82,26 +94,26 @@ export async function parseMarkup(sourceText: string, sourceUri: vscode.Uri) {
8294 let re = / \{ c o d e .* \} / ;
8395 let match = tag . match ( re ) ;
8496 if ( match ) {
85- if ( codeTagFlag == 0 ) {
86- tag = '<pre><code>' ;
87- codeTagFlag = 1 ;
97+ if ( codeTagFlag === 0 ) {
98+ tag = '<pre><code>' ;
99+ codeTagFlag = 1 ;
88100 } else {
89101 tag = '</pre></code>' ;
90102 codeTagFlag = 0 ;
91103 }
92104 }
93105
94- if ( codeTagFlag == 0 ) {
106+ if ( codeTagFlag === 0 ) {
95107 // lists
96108 re = / ^ ( [ - | \* | # ] + ) \s ( .* ) / ;
97109 match = tag . match ( re ) ;
98110 if ( match ) {
99- if ( listTag . length == 0 ) {
111+ if ( listTag . length === 0 ) {
100112 if ( match [ 1 ] == '#' ) {
101113 listTag = 'ol' ;
102114 } else {
103115 listTag = 'ul' ;
104- if ( match [ 1 ] == '-' ) {
116+ if ( match [ 1 ] == '-' ) {
105117 listTag += ' style="list-style-type: square;"'
106118 }
107119 }
@@ -112,16 +124,20 @@ export async function parseMarkup(sourceText: string, sourceUri: vscode.Uri) {
112124 tag += "<li>" + match [ 2 ] + "</li>" ;
113125 }
114126
115- if ( ( tag . length == 0 ) && ( listTag . length != 0 ) ) {
127+ if ( ( tag . length === 0 ) && ( listTag . length != = 0 ) ) {
116128 tag += '</' + listTag + '>' ;
117129 listTag = '' ;
118130 }
119131
120132 tag = tag . replace ( / \* ( [ ^ \* ] * ) \* / g, "<strong>$1</strong>" ) ;
121- // tag = tag.replace(/-(.*)-/g, "<span style='text-decoration: line-through;'>striket-hrough</span>");
122- }
123- console . log ( "PARSED:" + tag ) ;
124- result += tag + '<br />' ;
133+ tag = tag . replace ( / \B - ( \w * ) - \B / g, "<span style='text-decoration: line-through;'>striket-hrough</span>" ) ;
134+ }
135+ if ( tag === '<pre><code>' ) {
136+ result += tag ;
137+ } else {
138+ result += tag + '<br />' ;
139+ }
140+ // console.log("PARSED:" + tag);
125141 }
126142
127143 return result ;
0 commit comments