From b6c006686bfcad03dc3091d714ea60d0c6f5b92f Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Wed, 24 Jul 2019 14:42:58 +0200 Subject: [PATCH 01/14] feat: support for multiline comment for languages that use default regex --- package.json | 1 + src/server/code-parse/index.js | 1 + .../code-parse/language/default/codecrumbs.js | 40 ++++++++----------- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index a41f4887..9d5d8da6 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "file-saver": "^2.0.0", "http-server": "0.9.0", "js2flowchart": "1.3.2", + "line-number": "^0.1.0", "lodash": "^4.17.10", "lodash.debounce": "^4.0.8", "madge": "^3.4.4", diff --git a/src/server/code-parse/index.js b/src/server/code-parse/index.js index a73963a2..0d7db52f 100644 --- a/src/server/code-parse/index.js +++ b/src/server/code-parse/index.js @@ -29,6 +29,7 @@ const parseFile = ( if (parseCodeCrumbs) { const codecrumbsList = codecrumbsParser.getCrumbs(code, itemPath); + // console.log(codecrumbsList) if (codecrumbsList.length) { item.fileCode = code; item.children = codecrumbsList; diff --git a/src/server/code-parse/language/default/codecrumbs.js b/src/server/code-parse/language/default/codecrumbs.js index 59da7cc0..896098ed 100644 --- a/src/server/code-parse/language/default/codecrumbs.js +++ b/src/server/code-parse/language/default/codecrumbs.js @@ -1,7 +1,9 @@ +const lineNumber = require('line-number'); +const isUndefined = require('lodash/isUndefined'); const { CC_NODE_TYPE, NO_TRAIL_FLOW } = require('../../../shared-constants'); -const CRUMB = 'codecrumb', - CRUMB_SHORT_HANDLER = 'cc'; +const CRUMB_REGEX = /cc|codecrumb/; +const DEFAULT_COMMENT_REGEX = /(\/\*[\s\S]*?(.*)\*\/)|(\/\/.*)/gm; const getCommentNodeValue = node => (node.value || '').trim(); @@ -38,12 +40,7 @@ const parseCodecrumbComment = (node = {}) => { return cc; }; -const isCodecrumb = node => { - if (!node) return false; - - const comment = getCommentNodeValue(node); - return comment.startsWith(CRUMB) || comment.startsWith(CRUMB_SHORT_HANDLER); -}; +const isCodecrumb = node => CRUMB_REGEX.test(getCommentNodeValue(node)); const buildCrumb = (params, crumbNodeLines, path) => ({ type: CC_NODE_TYPE, @@ -57,22 +54,20 @@ const buildCrumb = (params, crumbNodeLines, path) => ({ }); const setupGetCommentsFromCode = regex => fileCode => { - if (!fileCode) return []; - - return fileCode.split('\n').reduce((comments, item, i) => { - const codeLine = item.trim(); - if (!codeLine) return comments; - - const matches = regex.exec(codeLine); - if (matches) { - const lineNumber = i + 1; - return [ - ...comments, - { value: matches[matches.length - 1], nodeLines: [lineNumber, lineNumber] } - ]; + if (!fileCode) { + return []; + } + + const result = DEFAULT_COMMENT_REGEX.exec(fileCode) || []; + + return result.reduce((comments, item, i) => { + if (isUndefined(item)) { + return comments; } - return comments; + const matchLineNumber = lineNumber(fileCode, DEFAULT_COMMENT_REGEX); + + return [...comments, { value: item, nodeLines: [matchLineNumber, matchLineNumber] }]; }, []); }; @@ -99,7 +94,6 @@ const setupGetCrumbs = getCommentsFromCode => (fileCode, path) => { } }; -const DEFAULT_COMMENT_REGEX = /^([^\/\/]*)\/\/(.*)$/; const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(DEFAULT_COMMENT_REGEX)); module.exports = { From b38aca9ddfa392015d762e6e8a6b0c9346b4ecbe Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Wed, 24 Jul 2019 14:57:47 +0200 Subject: [PATCH 02/14] feat: support for multiline comment for languages that use default regex --- .../code-parse/language/default/codecrumbs.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/server/code-parse/language/default/codecrumbs.js b/src/server/code-parse/language/default/codecrumbs.js index 896098ed..80829cd5 100644 --- a/src/server/code-parse/language/default/codecrumbs.js +++ b/src/server/code-parse/language/default/codecrumbs.js @@ -3,7 +3,7 @@ const isUndefined = require('lodash/isUndefined'); const { CC_NODE_TYPE, NO_TRAIL_FLOW } = require('../../../shared-constants'); const CRUMB_REGEX = /cc|codecrumb/; -const DEFAULT_COMMENT_REGEX = /(\/\*[\s\S]*?(.*)\*\/)|(\/\/.*)/gm; +const DEFAULT_COMMENT_REGEX = /^([^\/\/]*)\/\/(.*)$/; const getCommentNodeValue = node => (node.value || '').trim(); @@ -58,16 +58,18 @@ const setupGetCommentsFromCode = regex => fileCode => { return []; } - const result = DEFAULT_COMMENT_REGEX.exec(fileCode) || []; + const result = regex.exec(fileCode) || []; - return result.reduce((comments, item, i) => { - if (isUndefined(item)) { + return result.reduce((comments, value) => { + if (isUndefined(value)) { return comments; } - const matchLineNumber = lineNumber(fileCode, DEFAULT_COMMENT_REGEX); + const matchLineNumber = lineNumber(fileCode, regex); + const nodeLines = [matchLineNumber, matchLineNumber]; + + return [...comments, { value, nodeLines }]; - return [...comments, { value: item, nodeLines: [matchLineNumber, matchLineNumber] }]; }, []); }; From bd11bfd2b28f9cedad38affc22d746eaa65d8c58 Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Tue, 30 Jul 2019 15:10:59 +0200 Subject: [PATCH 03/14] feat: support for multiline comment for languages that use default regex --- src/server/code-parse/index.js | 1 - .../code-parse/language/default/codecrumbs.js | 21 ++++++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/server/code-parse/index.js b/src/server/code-parse/index.js index 0d7db52f..a73963a2 100644 --- a/src/server/code-parse/index.js +++ b/src/server/code-parse/index.js @@ -29,7 +29,6 @@ const parseFile = ( if (parseCodeCrumbs) { const codecrumbsList = codecrumbsParser.getCrumbs(code, itemPath); - // console.log(codecrumbsList) if (codecrumbsList.length) { item.fileCode = code; item.children = codecrumbsList; diff --git a/src/server/code-parse/language/default/codecrumbs.js b/src/server/code-parse/language/default/codecrumbs.js index 80829cd5..35c6c3bb 100644 --- a/src/server/code-parse/language/default/codecrumbs.js +++ b/src/server/code-parse/language/default/codecrumbs.js @@ -1,5 +1,5 @@ const lineNumber = require('line-number'); -const isUndefined = require('lodash/isUndefined'); +const compact = require('lodash/compact'); const { CC_NODE_TYPE, NO_TRAIL_FLOW } = require('../../../shared-constants'); const CRUMB_REGEX = /cc|codecrumb/; @@ -58,17 +58,22 @@ const setupGetCommentsFromCode = regex => fileCode => { return []; } - const result = regex.exec(fileCode) || []; + const result = compact(regex.exec(fileCode)) || []; return result.reduce((comments, value) => { - if (isUndefined(value)) { - return comments; - } - const matchLineNumber = lineNumber(fileCode, regex); - const nodeLines = [matchLineNumber, matchLineNumber]; - return [...comments, { value, nodeLines }]; + const parseRes = matchLineNumber.filter((val) => val.match == value)[0] + + if(parseRes) { + const number = parseRes["number"] + + const nodeLines = [1, 1]; + + return [...comments, { value, nodeLines }]; + } else { + return comments; + } }, []); }; From 72e904536c65922fba50c4f9c83f3bd3fb235d9a Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Tue, 30 Jul 2019 15:22:40 +0200 Subject: [PATCH 04/14] feat: support for multiline comment for languages that use default regex --- src/server/code-parse/language/default/codecrumbs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/code-parse/language/default/codecrumbs.js b/src/server/code-parse/language/default/codecrumbs.js index 35c6c3bb..732d51de 100644 --- a/src/server/code-parse/language/default/codecrumbs.js +++ b/src/server/code-parse/language/default/codecrumbs.js @@ -68,7 +68,7 @@ const setupGetCommentsFromCode = regex => fileCode => { if(parseRes) { const number = parseRes["number"] - const nodeLines = [1, 1]; + const nodeLines = [number, number]; return [...comments, { value, nodeLines }]; } else { From 935bcb6284eb784928ccf93572e3dc9faf09e41d Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Wed, 31 Jul 2019 13:22:25 +0200 Subject: [PATCH 05/14] feat: support for multiline comment for languages that use default regex --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 9d5d8da6..a41f4887 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "file-saver": "^2.0.0", "http-server": "0.9.0", "js2flowchart": "1.3.2", - "line-number": "^0.1.0", "lodash": "^4.17.10", "lodash.debounce": "^4.0.8", "madge": "^3.4.4", From c62cd2fb259e2877093d9aa1ec901cfe0f3a470b Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Wed, 31 Jul 2019 16:01:41 +0200 Subject: [PATCH 06/14] feat: support for multiline comment for languages that use default regex --- example-project/src-client/auth/actions.js | 4 +++- .../code-parse/language/default/codecrumbs.js | 20 ++++++------------- src/server/utils/logger.js | 7 ++++++- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/example-project/src-client/auth/actions.js b/example-project/src-client/auth/actions.js index 0bfee82e..97658b99 100644 --- a/example-project/src-client/auth/actions.js +++ b/example-project/src-client/auth/actions.js @@ -10,7 +10,9 @@ import { function authenticate(provider) { return dispatch => { - //cc:signin#1;firebase sign in;+1;call to firebase with auth provider, proceed if success response + /* + * cc:signin#1;firebase sign in;+1;call to firebase with auth provider, proceed if success response + */ firebaseAuth.signInWithPopup(provider) .then(result => dispatch(signInSuccess(result))) .catch(error => dispatch(signInError(error))); diff --git a/src/server/code-parse/language/default/codecrumbs.js b/src/server/code-parse/language/default/codecrumbs.js index 732d51de..f85f1235 100644 --- a/src/server/code-parse/language/default/codecrumbs.js +++ b/src/server/code-parse/language/default/codecrumbs.js @@ -1,4 +1,3 @@ -const lineNumber = require('line-number'); const compact = require('lodash/compact'); const { CC_NODE_TYPE, NO_TRAIL_FLOW } = require('../../../shared-constants'); @@ -61,20 +60,13 @@ const setupGetCommentsFromCode = regex => fileCode => { const result = compact(regex.exec(fileCode)) || []; return result.reduce((comments, value) => { - const matchLineNumber = lineNumber(fileCode, regex); - - const parseRes = matchLineNumber.filter((val) => val.match == value)[0] - - if(parseRes) { - const number = parseRes["number"] - - const nodeLines = [number, number]; - - return [...comments, { value, nodeLines }]; - } else { - return comments; - } + const index = fileCode.indexOf(value); + const tempString = fileCode.substring(0, index); + const matchLineNumber = tempString.split('\n').length; + const commentStringCount = value.split('\n').length + const nodeLines = [matchLineNumber, matchLineNumber + commentStringCount - 1]; + return [...comments, { value, nodeLines }] }, []); }; diff --git a/src/server/utils/logger.js b/src/server/utils/logger.js index db35ec2f..1cd6c03a 100644 --- a/src/server/utils/logger.js +++ b/src/server/utils/logger.js @@ -6,7 +6,12 @@ const logAdapter = (msg, force) => (isDebugModeEnabled || force) && console.log( module.exports = { getText: e => { try { - return typeof e === 'object' ? JSON.stringify(e) : e; + if (typeof e === 'object') { + const stringifiedError = JSON.stringify(e); + return stringifiedError === '{}' ? e : stringifiedError; + } else { + return e; + } } catch (e) { return `COULD NOT PARSE ERROR ${e}`; } From 864c884987fa0302f11afccba3de8dfe0ac236c1 Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Thu, 1 Aug 2019 11:43:51 +0200 Subject: [PATCH 07/14] feat: support for multiline comment for languages that use default regex --- src/server/code-parse/language/default/codecrumbs.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/code-parse/language/default/codecrumbs.js b/src/server/code-parse/language/default/codecrumbs.js index f85f1235..0f053eaf 100644 --- a/src/server/code-parse/language/default/codecrumbs.js +++ b/src/server/code-parse/language/default/codecrumbs.js @@ -60,6 +60,7 @@ const setupGetCommentsFromCode = regex => fileCode => { const result = compact(regex.exec(fileCode)) || []; return result.reduce((comments, value) => { + value = value.trim() const index = fileCode.indexOf(value); const tempString = fileCode.substring(0, index); const matchLineNumber = tempString.split('\n').length; From 59b66376705cdaee34af3f2187ee665c9e10b9b6 Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Fri, 2 Aug 2019 15:59:19 +0200 Subject: [PATCH 08/14] feat: support for multiline comment for languages that use default regex --- src/server/code-parse/language/default/codecrumbs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/code-parse/language/default/codecrumbs.js b/src/server/code-parse/language/default/codecrumbs.js index 0f053eaf..3132fd72 100644 --- a/src/server/code-parse/language/default/codecrumbs.js +++ b/src/server/code-parse/language/default/codecrumbs.js @@ -57,7 +57,7 @@ const setupGetCommentsFromCode = regex => fileCode => { return []; } - const result = compact(regex.exec(fileCode)) || []; + const result = fileCode.match(regex) || []; return result.reduce((comments, value) => { value = value.trim() From ea528d51d30c5e038fac392b8ce5fee1b2688298 Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Mon, 5 Aug 2019 11:54:40 +0200 Subject: [PATCH 09/14] feat: support for multiline comment for languages that use default regex --- src/server/code-parse/language/default/codecrumbs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/code-parse/language/default/codecrumbs.js b/src/server/code-parse/language/default/codecrumbs.js index 3132fd72..ef596bbd 100644 --- a/src/server/code-parse/language/default/codecrumbs.js +++ b/src/server/code-parse/language/default/codecrumbs.js @@ -2,7 +2,7 @@ const compact = require('lodash/compact'); const { CC_NODE_TYPE, NO_TRAIL_FLOW } = require('../../../shared-constants'); const CRUMB_REGEX = /cc|codecrumb/; -const DEFAULT_COMMENT_REGEX = /^([^\/\/]*)\/\/(.*)$/; +const DEFAULT_COMMENT_REGEX = /\/\*[\s\S]*?\*\/|([^:]|^)\/\/.*$/gm; const getCommentNodeValue = node => (node.value || '').trim(); From ac772b3edd9f524489619c915bf540c45ef1f876 Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Mon, 5 Aug 2019 16:14:51 +0200 Subject: [PATCH 10/14] feat: support for multiline comment for languages that use default regex --- src/server/code-parse/language/perl/codecrumbs.js | 2 +- src/server/code-parse/language/python/codecrumbs.js | 2 +- src/server/code-parse/language/ruby/codecrumbs.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/code-parse/language/perl/codecrumbs.js b/src/server/code-parse/language/perl/codecrumbs.js index 898206a5..f16afbba 100644 --- a/src/server/code-parse/language/perl/codecrumbs.js +++ b/src/server/code-parse/language/perl/codecrumbs.js @@ -1,6 +1,6 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const PERL_COMMENT_REGEX = /^([^#]*)#(.*)$/; +const PERL_COMMENT_REGEX = /^([^#]*)#(.*)$/g; const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(PERL_COMMENT_REGEX)); // replace with own implementation if needed diff --git a/src/server/code-parse/language/python/codecrumbs.js b/src/server/code-parse/language/python/codecrumbs.js index 537814d6..45ccdd18 100644 --- a/src/server/code-parse/language/python/codecrumbs.js +++ b/src/server/code-parse/language/python/codecrumbs.js @@ -1,6 +1,6 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const PYTHON_COMMENT_REGEX = /^([^#]*)#(.*)$/; +const PYTHON_COMMENT_REGEX = /^([^#]*)#(.*)$/g; const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(PYTHON_COMMENT_REGEX)); // replace with own implementation if needed diff --git a/src/server/code-parse/language/ruby/codecrumbs.js b/src/server/code-parse/language/ruby/codecrumbs.js index 4d5a8797..d17d0166 100644 --- a/src/server/code-parse/language/ruby/codecrumbs.js +++ b/src/server/code-parse/language/ruby/codecrumbs.js @@ -1,6 +1,6 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const RUBY_COMMENT_REGEX = /^([^#]*)#(.*)$/; +const RUBY_COMMENT_REGEX = /^([^#]*)#(.*)$/g; const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(RUBY_COMMENT_REGEX)); // replace with own implementation if needed From 6724b83de23f4a17d661cfa27a3ceb6d693fe588 Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Thu, 22 Aug 2019 13:30:43 +0200 Subject: [PATCH 11/14] feat: support for multiline comment for languages that use default regex --- src/server/code-parse/language/perl/codecrumbs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/code-parse/language/perl/codecrumbs.js b/src/server/code-parse/language/perl/codecrumbs.js index f16afbba..735eb9c4 100644 --- a/src/server/code-parse/language/perl/codecrumbs.js +++ b/src/server/code-parse/language/perl/codecrumbs.js @@ -1,6 +1,6 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const PERL_COMMENT_REGEX = /^([^#]*)#(.*)$/g; +const PERL_COMMENT_REGEX = /(^=begin(.*?|\n)*?=cut$|#.*)/gm const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(PERL_COMMENT_REGEX)); // replace with own implementation if needed From 427f7478a319d1906f45bda98e7a7de2d80348d7 Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Fri, 23 Aug 2019 16:05:35 +0200 Subject: [PATCH 12/14] feat: support for multiline comment for languages that use default regex --- example-project/languages/{ocaml.ml => ocaml-lang.ml} | 0 src/server/code-parse/language/fortran/codecrumbs.js | 2 +- src/server/code-parse/language/haskell/codecrumbs.js | 2 +- src/server/code-parse/language/lua/codecrumbs.js | 2 +- src/server/code-parse/language/ocaml/codecrumbs.js | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename example-project/languages/{ocaml.ml => ocaml-lang.ml} (100%) diff --git a/example-project/languages/ocaml.ml b/example-project/languages/ocaml-lang.ml similarity index 100% rename from example-project/languages/ocaml.ml rename to example-project/languages/ocaml-lang.ml diff --git a/src/server/code-parse/language/fortran/codecrumbs.js b/src/server/code-parse/language/fortran/codecrumbs.js index 7a050981..a5a74d04 100644 --- a/src/server/code-parse/language/fortran/codecrumbs.js +++ b/src/server/code-parse/language/fortran/codecrumbs.js @@ -1,6 +1,6 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const FORTRAN_COMMENT_REGEX = /^([^!]*)!(.*)$/; +const FORTRAN_COMMENT_REGEX = /(^!.*)/gm; const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(FORTRAN_COMMENT_REGEX)); // replace with own implementation if needed diff --git a/src/server/code-parse/language/haskell/codecrumbs.js b/src/server/code-parse/language/haskell/codecrumbs.js index 2a5aa652..ec0e6389 100644 --- a/src/server/code-parse/language/haskell/codecrumbs.js +++ b/src/server/code-parse/language/haskell/codecrumbs.js @@ -1,6 +1,6 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const HASKELL_COMMENT_REGEX = /^([^--]*)--(.*)$/; +const HASKELL_COMMENT_REGEX = /(^--.*)/gm; const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(HASKELL_COMMENT_REGEX)); // replace with own implementation if needed diff --git a/src/server/code-parse/language/lua/codecrumbs.js b/src/server/code-parse/language/lua/codecrumbs.js index e77f4988..a0494cf3 100644 --- a/src/server/code-parse/language/lua/codecrumbs.js +++ b/src/server/code-parse/language/lua/codecrumbs.js @@ -1,6 +1,6 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const LUA_COMMENT_REGEX = /^([^--]*)--(.*)$/; +const LUA_COMMENT_REGEX = /(^--.*)/gm; const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(LUA_COMMENT_REGEX)); // replace with own implementation if needed diff --git a/src/server/code-parse/language/ocaml/codecrumbs.js b/src/server/code-parse/language/ocaml/codecrumbs.js index 90cbecd2..6c751aaa 100644 --- a/src/server/code-parse/language/ocaml/codecrumbs.js +++ b/src/server/code-parse/language/ocaml/codecrumbs.js @@ -1,6 +1,6 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const OCAML_COMMENT_REGEX = /\/\*(.*?)\*\//; +const OCAML_COMMENT_REGEX = /\/\*(.*?)\*\//gm; const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(OCAML_COMMENT_REGEX)); From 60d70b1a03aefcbdbf8b36cdcbc0873240aba20c Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Mon, 26 Aug 2019 17:50:47 +0200 Subject: [PATCH 13/14] feat: support for multiline comment for languages that use default regex --- src/server/code-parse/language/haskell/codecrumbs.js | 3 ++- src/server/code-parse/language/lua/codecrumbs.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/code-parse/language/haskell/codecrumbs.js b/src/server/code-parse/language/haskell/codecrumbs.js index ec0e6389..666aa057 100644 --- a/src/server/code-parse/language/haskell/codecrumbs.js +++ b/src/server/code-parse/language/haskell/codecrumbs.js @@ -1,9 +1,10 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const HASKELL_COMMENT_REGEX = /(^--.*)/gm; +const HASKELL_COMMENT_REGEX = /(^ ?-- ?.*| -- .*)/gm; const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(HASKELL_COMMENT_REGEX)); // replace with own implementation if needed module.exports = { getCrumbs }; +console.log('//foo') diff --git a/src/server/code-parse/language/lua/codecrumbs.js b/src/server/code-parse/language/lua/codecrumbs.js index a0494cf3..a096aabc 100644 --- a/src/server/code-parse/language/lua/codecrumbs.js +++ b/src/server/code-parse/language/lua/codecrumbs.js @@ -1,6 +1,6 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const LUA_COMMENT_REGEX = /(^--.*)/gm; +const LUA_COMMENT_REGEX = /(^ ?-- ?.*| -- .*)/gm; const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(LUA_COMMENT_REGEX)); // replace with own implementation if needed From 6c9c302f6485a9f17d6fb88c44d34be8f5e71688 Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Tue, 3 Sep 2019 11:29:49 +0200 Subject: [PATCH 14/14] feat: support for multiline comment for languages that use default regex --- example-project/languages/ocaml-lang.ml | 2 +- package.json | 1 + src/server/code-parse/language/default/codecrumbs.js | 4 ++-- src/server/code-parse/language/fortran/codecrumbs.js | 4 ++-- src/server/code-parse/language/haskell/codecrumbs.js | 4 ++-- src/server/code-parse/language/lua/codecrumbs.js | 4 ++-- src/server/code-parse/language/ocaml/codecrumbs.js | 5 ++--- src/server/code-parse/language/perl/codecrumbs.js | 4 ++-- src/server/code-parse/language/python/codecrumbs.js | 4 ++-- src/server/code-parse/language/ruby/codecrumbs.js | 4 ++-- 10 files changed, 18 insertions(+), 18 deletions(-) diff --git a/example-project/languages/ocaml-lang.ml b/example-project/languages/ocaml-lang.ml index 425e6e01..01c4140d 100644 --- a/example-project/languages/ocaml-lang.ml +++ b/example-project/languages/ocaml-lang.ml @@ -1,2 +1,2 @@ -/* cc:main function */ +(* cc:main function *) let hello = () => "Hello, World!"; diff --git a/package.json b/package.json index a41f4887..2d5ed4cb 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "redux-persist": "^5.10.0", "redux-saga": "^0.16.0", "redux-thunk": "^2.2.0", + "regex-comment": "^1.0.2", "reselect": "^4.0.0", "watchpack": "^1.6.0", "websocket": "1.0.27" diff --git a/src/server/code-parse/language/default/codecrumbs.js b/src/server/code-parse/language/default/codecrumbs.js index ef596bbd..b4abd9ff 100644 --- a/src/server/code-parse/language/default/codecrumbs.js +++ b/src/server/code-parse/language/default/codecrumbs.js @@ -2,7 +2,7 @@ const compact = require('lodash/compact'); const { CC_NODE_TYPE, NO_TRAIL_FLOW } = require('../../../shared-constants'); const CRUMB_REGEX = /cc|codecrumb/; -const DEFAULT_COMMENT_REGEX = /\/\*[\s\S]*?\*\/|([^:]|^)\/\/.*$/gm; +import { DEFAULT_REGEX } from "regex-comment/lib/index"; const getCommentNodeValue = node => (node.value || '').trim(); @@ -94,7 +94,7 @@ const setupGetCrumbs = getCommentsFromCode => (fileCode, path) => { } }; -const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(DEFAULT_COMMENT_REGEX)); +const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(DEFAULT_REGEX)); module.exports = { getCrumbs, diff --git a/src/server/code-parse/language/fortran/codecrumbs.js b/src/server/code-parse/language/fortran/codecrumbs.js index a5a74d04..3ba50ee1 100644 --- a/src/server/code-parse/language/fortran/codecrumbs.js +++ b/src/server/code-parse/language/fortran/codecrumbs.js @@ -1,7 +1,7 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const FORTRAN_COMMENT_REGEX = /(^!.*)/gm; -const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(FORTRAN_COMMENT_REGEX)); +import { FORTRAN_REGEX } from "regex-comment/lib/index"; +const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(FORTRAN_REGEX)); // replace with own implementation if needed module.exports = { diff --git a/src/server/code-parse/language/haskell/codecrumbs.js b/src/server/code-parse/language/haskell/codecrumbs.js index 666aa057..355e9611 100644 --- a/src/server/code-parse/language/haskell/codecrumbs.js +++ b/src/server/code-parse/language/haskell/codecrumbs.js @@ -1,7 +1,7 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); +import { HASKELL_REGEX } from "regex-comment/lib/index"; -const HASKELL_COMMENT_REGEX = /(^ ?-- ?.*| -- .*)/gm; -const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(HASKELL_COMMENT_REGEX)); +const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(HASKELL_REGEX)); // replace with own implementation if needed module.exports = { diff --git a/src/server/code-parse/language/lua/codecrumbs.js b/src/server/code-parse/language/lua/codecrumbs.js index a096aabc..439f3727 100644 --- a/src/server/code-parse/language/lua/codecrumbs.js +++ b/src/server/code-parse/language/lua/codecrumbs.js @@ -1,7 +1,7 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const LUA_COMMENT_REGEX = /(^ ?-- ?.*| -- .*)/gm; -const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(LUA_COMMENT_REGEX)); +import { LUA_REGEX } from "regex-comment/lib/index"; +const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(LUA_REGEX)); // replace with own implementation if needed module.exports = { diff --git a/src/server/code-parse/language/ocaml/codecrumbs.js b/src/server/code-parse/language/ocaml/codecrumbs.js index 6c751aaa..577fd0bf 100644 --- a/src/server/code-parse/language/ocaml/codecrumbs.js +++ b/src/server/code-parse/language/ocaml/codecrumbs.js @@ -1,8 +1,7 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const OCAML_COMMENT_REGEX = /\/\*(.*?)\*\//gm; - -const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(OCAML_COMMENT_REGEX)); +import { OCAML_REGEX } from "regex-comment/lib/index"; +const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(OCAML_REGEX)); // replace with own implementation if needed module.exports = { diff --git a/src/server/code-parse/language/perl/codecrumbs.js b/src/server/code-parse/language/perl/codecrumbs.js index 735eb9c4..093fbc35 100644 --- a/src/server/code-parse/language/perl/codecrumbs.js +++ b/src/server/code-parse/language/perl/codecrumbs.js @@ -1,7 +1,7 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const PERL_COMMENT_REGEX = /(^=begin(.*?|\n)*?=cut$|#.*)/gm -const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(PERL_COMMENT_REGEX)); +import { PERL_REGEX } from "regex-comment/lib/index"; +const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(PERL_REGEX)); // replace with own implementation if needed module.exports = { diff --git a/src/server/code-parse/language/python/codecrumbs.js b/src/server/code-parse/language/python/codecrumbs.js index 45ccdd18..0800ee10 100644 --- a/src/server/code-parse/language/python/codecrumbs.js +++ b/src/server/code-parse/language/python/codecrumbs.js @@ -1,7 +1,7 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const PYTHON_COMMENT_REGEX = /^([^#]*)#(.*)$/g; -const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(PYTHON_COMMENT_REGEX)); +import { PYTHON_REGEX } from "regex-comment/lib/index"; +const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(PYTHON_REGEX)); // replace with own implementation if needed module.exports = { diff --git a/src/server/code-parse/language/ruby/codecrumbs.js b/src/server/code-parse/language/ruby/codecrumbs.js index d17d0166..69918a28 100644 --- a/src/server/code-parse/language/ruby/codecrumbs.js +++ b/src/server/code-parse/language/ruby/codecrumbs.js @@ -1,7 +1,7 @@ const { setupGetCrumbs, setupGetCommentsFromCode } = require('../default/codecrumbs'); -const RUBY_COMMENT_REGEX = /^([^#]*)#(.*)$/g; -const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(RUBY_COMMENT_REGEX)); +import { RUBY_REGEX } from "regex-comment/lib/index"; +const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(RUBY_REGEX)); // replace with own implementation if needed module.exports = {