diff --git a/example-project/languages/ocaml.ml b/example-project/languages/ocaml-lang.ml similarity index 60% rename from example-project/languages/ocaml.ml rename to example-project/languages/ocaml-lang.ml index 425e6e01..01c4140d 100644 --- a/example-project/languages/ocaml.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/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/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 59da7cc0..b4abd9ff 100644 --- a/src/server/code-parse/language/default/codecrumbs.js +++ b/src/server/code-parse/language/default/codecrumbs.js @@ -1,7 +1,8 @@ +const compact = require('lodash/compact'); const { CC_NODE_TYPE, NO_TRAIL_FLOW } = require('../../../shared-constants'); -const CRUMB = 'codecrumb', - CRUMB_SHORT_HANDLER = 'cc'; +const CRUMB_REGEX = /cc|codecrumb/; +import { DEFAULT_REGEX } from "regex-comment/lib/index"; const getCommentNodeValue = node => (node.value || '').trim(); @@ -38,12 +39,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 +53,21 @@ 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 = fileCode.match(regex) || []; + + 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; - return comments; + const commentStringCount = value.split('\n').length + const nodeLines = [matchLineNumber, matchLineNumber + commentStringCount - 1]; + return [...comments, { value, nodeLines }] }, []); }; @@ -99,8 +94,7 @@ const setupGetCrumbs = getCommentsFromCode => (fileCode, path) => { } }; -const DEFAULT_COMMENT_REGEX = /^([^\/\/]*)\/\/(.*)$/; -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 7a050981..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 = /^([^!]*)!(.*)$/; -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 2a5aa652..355e9611 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'); +import { HASKELL_REGEX } from "regex-comment/lib/index"; -const HASKELL_COMMENT_REGEX = /^([^--]*)--(.*)$/; -const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(HASKELL_COMMENT_REGEX)); +const getCrumbs = setupGetCrumbs(setupGetCommentsFromCode(HASKELL_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 e77f4988..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 = /^([^--]*)--(.*)$/; -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 90cbecd2..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 = /\/\*(.*?)\*\//; - -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 898206a5..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 = /^([^#]*)#(.*)$/; -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 537814d6..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 = /^([^#]*)#(.*)$/; -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 4d5a8797..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 = /^([^#]*)#(.*)$/; -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 = { 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}`; }