diff --git a/src/app.js b/src/app.js index 6c01020d7b..a959ac1160 100644 --- a/src/app.js +++ b/src/app.js @@ -2,6 +2,7 @@ var $ = require('jquery'); var UniversalDApp = require('./universal-dapp.js'); var web3 = require('./web3-adapter.js'); +var utils = require('./app/utils'); var queryParams = require('./app/query-params'); var gistHandler = require('./app/gist-handler'); @@ -36,7 +37,7 @@ var run = function() { function loadFiles(files) { for (var f in files) { - var key = fileKey(f); + var key = utils.fileKey(f); var content = files[f].content; if (key in window.localStorage && window.localStorage[key] != content) { var count = ''; @@ -46,7 +47,7 @@ var run = function() { } window.localStorage[key] = content; } - editor.setCacheFile(fileKey(Object.keys(files)[0])); + editor.setCacheFile(utils.fileKey(Object.keys(files)[0])); updateFiles(); } @@ -75,16 +76,14 @@ var run = function() { // ----------------- storage -------------------- - var SOL_CACHE_FILE_PREFIX = 'sol-cache-file-'; - - var storageHandler = new StorageHandler(updateFiles, SOL_CACHE_FILE_PREFIX); + var storageHandler = new StorageHandler(updateFiles); window.syncStorage = storageHandler.sync; storageHandler.sync(); // ----------------- editor ---------------------- - var editor = new Editor(loadingFromGist, SOL_CACHE_FILE_PREFIX); + var editor = new Editor(loadingFromGist); // ----------------- tabbed menu ------------------- @@ -150,7 +149,7 @@ var run = function() { var filesArr = editor.getFiles(); for (var f in filesArr) { - files[fileNameFromKey(filesArr[f])] = { + files[utils.fileNameFromKey(filesArr[f])] = { content: localStorage[filesArr[f]] }; } @@ -228,10 +227,10 @@ var run = function() { $fileNameInputEl.off('keyup'); if (newName !== originalName && confirm("Are you sure you want to rename: " + originalName + " to " + newName + '?')) { - var content = window.localStorage.getItem( fileKey(originalName) ); - window.localStorage[fileKey( newName )] = content; - window.localStorage.removeItem( fileKey( originalName) ); - editor.setCacheFile(fileKey( newName )); + var content = window.localStorage.getItem( utils.fileKey(originalName) ); + window.localStorage[utils.fileKey( newName )] = content; + window.localStorage.removeItem( utils.fileKey( originalName) ); + editor.setCacheFile(utils.fileKey( newName )); } updateFiles(); @@ -246,8 +245,8 @@ var run = function() { var name = $(this).parent().find('.name').text(); if (confirm("Are you sure you want to remove: " + name + " from local storage?")) { - window.localStorage.removeItem( fileKey( name ) ); - editor.setNextFile(fileKey(name)); + window.localStorage.removeItem( utils.fileKey( name ) ); + editor.setNextFile(utils.fileKey(name)); updateFiles(); } return false; @@ -255,13 +254,13 @@ var run = function() { function showFileHandler(ev) { ev.preventDefault(); - editor.setCacheFile(fileKey( $(this).find('.name').text() )); + editor.setCacheFile(utils.fileKey( $(this).find('.name').text() )); updateFiles(); return false; } function fileTabFromKey(key) { - var name = fileNameFromKey(key); + var name = utils.fileNameFromKey(key); return $('#files .file').filter(function(){ return $(this).find('.name').text() == name; }); } @@ -287,18 +286,10 @@ var run = function() { } function fileTabTemplate(key) { - var name = fileNameFromKey(key); + var name = utils.fileNameFromKey(key); return $('
  • '+name+'
  • '); } - function fileKey( name ) { - return SOL_CACHE_FILE_PREFIX + name; - } - - function fileNameFromKey(key) { - return key.replace( SOL_CACHE_FILE_PREFIX, '' ); - } - $filesWrapper = $('.files-wrapper'); $scrollerRight = $('.scroller-right'); $scrollerLeft = $('.scroller-left'); @@ -469,7 +460,7 @@ var run = function() { var errFile = err[1]; var errLine = parseInt(err[2], 10) - 1; var errCol = err[4] ? parseInt(err[4], 10) : 0; - if (errFile == '' || errFile == fileNameFromKey(editor.getCacheFile())) { + if (errFile == '' || errFile == utils.fileNameFromKey(editor.getCacheFile())) { compiler.addAnnotation({ row: errLine, column: errCol, @@ -478,9 +469,9 @@ var run = function() { }); } $error.click(function(ev){ - if (errFile != '' && errFile != fileNameFromKey(editor.getCacheFile()) && editor.getFiles().indexOf(fileKey(errFile)) !== -1) { + if (errFile != '' && errFile != utils.fileNameFromKey(editor.getCacheFile()) && editor.getFiles().indexOf(utils.fileKey(errFile)) !== -1) { // Switch to file - editor.setCacheFile(fileKey(errFile)); + editor.setCacheFile(utils.fileKey(errFile)); updateFiles(); //@TODO could show some error icon in files with errors } @@ -674,7 +665,7 @@ var run = function() { return $.getJSON('https://api.github.com/repos/' + root + '/contents/' + path, cb); } - var compiler = new Compiler(editor, renderContracts, renderError, errortype, fileNameFromKey, fileKey, handleGithubCall, $('#output'), function() { return hidingRHP; }); + var compiler = new Compiler(editor, renderContracts, renderError, errortype, handleGithubCall, $('#output'), function() { return hidingRHP; }); function setVersionText(text) { $('#version').text(text); diff --git a/src/app/compiler.js b/src/app/compiler.js index fd9ce09e96..ea98cfa6b4 100644 --- a/src/app/compiler.js +++ b/src/app/compiler.js @@ -1,6 +1,7 @@ var queryParams = require('./query-params'); +var utils = require('./utils'); -function Compiler(editor, renderContracts, renderError, errortype, fileNameFromKey, fileKey, handleGithubCall, outputField, hidingRHP) { +function Compiler(editor, renderContracts, renderError, errortype, handleGithubCall, outputField, hidingRHP) { var compileJSON; var compilerAcceptsMultipleFiles; @@ -36,7 +37,7 @@ function Compiler(editor, renderContracts, renderError, errortype, fileNameFromK window.localStorage.setItem(editor.getCacheFile(), input); var files = {}; - files[fileNameFromKey(editor.getCacheFile())] = input; + files[utils.fileNameFromKey(editor.getCacheFile())] = input; gatherImports(files, missingInputs, function(input, error) { outputField.empty(); if (input === null) { @@ -151,7 +152,7 @@ function Compiler(editor, renderContracts, renderError, errortype, fileNameFromK importHints = importHints || []; if (!compilerAcceptsMultipleFiles) { - cb(files[fileNameFromKey(editor.getCacheFile())]); + cb(files[utils.fileNameFromKey(editor.getCacheFile())]); return; } var importRegex = /^\s*import\s*[\'\"]([^\'\"]+)[\'\"];/g; @@ -166,11 +167,11 @@ function Compiler(editor, renderContracts, renderError, errortype, fileNameFromK while (importHints.length > 0) { var m = importHints.pop(); if (m in files) continue; - if (editor.getFiles().indexOf(fileKey(m)) !== -1) { - files[m] = window.localStorage[fileKey(m)]; + if (editor.getFiles().indexOf(utils.fileKey(m)) !== -1) { + files[m] = window.localStorage[utils.fileKey(m)]; reloop = true; - } else if (m.startsWith('./') && editor.getFiles().indexOf(fileKey(m.slice(2))) !== -1) { - files[m] = window.localStorage[fileKey(m.slice(2))]; + } else if (m.startsWith('./') && editor.getFiles().indexOf(utils.fileKey(m.slice(2))) !== -1) { + files[m] = window.localStorage[utils.fileKey(m.slice(2))]; reloop = true; } else if (m in cachedRemoteFiles) { files[m] = cachedRemoteFiles[m]; diff --git a/src/app/editor.js b/src/app/editor.js index f71416920a..01d9c0f1b5 100644 --- a/src/app/editor.js +++ b/src/app/editor.js @@ -1,7 +1,9 @@ +var utils = require('./utils'); + var ace = require('brace'); require('../mode-solidity.js'); -function Editor(loadingFromGist, SOL_CACHE_FILE_PREFIX) { +function Editor(loadingFromGist) { this.newFile = function() { untitledCount = ''; @@ -38,7 +40,7 @@ function Editor(loadingFromGist, SOL_CACHE_FILE_PREFIX) { this.getFiles = function() { var files = []; for (var f in localStorage ) { - if (f.indexOf( SOL_CACHE_FILE_PREFIX, 0 ) === 0) { + if (f.indexOf( utils.getCacheFilePrefix(), 0 ) === 0) { files.push(f); if (!sessions[f]) sessions[f] = newEditorSession(f); } @@ -116,7 +118,7 @@ function Editor(loadingFromGist, SOL_CACHE_FILE_PREFIX) { editor.resize(true); } - var SOL_CACHE_UNTITLED = SOL_CACHE_FILE_PREFIX + 'Untitled'; + var SOL_CACHE_UNTITLED = utils.getCacheFilePrefix() + 'Untitled'; var SOL_CACHE_FILE = null; var editor = ace.edit("input"); diff --git a/src/app/storage-handler.js b/src/app/storage-handler.js index c68c340716..de78d205f9 100644 --- a/src/app/storage-handler.js +++ b/src/app/storage-handler.js @@ -1,4 +1,6 @@ -function StorageHandler(updateFiles, SOL_CACHE_FILE_PREFIX) { +var utils = require('./utils'); + +function StorageHandler(updateFiles) { this.sync = function() { @@ -30,7 +32,7 @@ function StorageHandler(updateFiles, SOL_CACHE_FILE_PREFIX) { for (var y in window.localStorage) { console.log("checking", y); obj[y] = window.localStorage.getItem(y); - if (y.indexOf(SOL_CACHE_FILE_PREFIX) !== 0) continue; + if (y.indexOf(utils.getCacheFilePrefix()) !== 0) continue; count++; check(y); } diff --git a/src/app/utils.js b/src/app/utils.js new file mode 100644 index 0000000000..2ece9ac557 --- /dev/null +++ b/src/app/utils.js @@ -0,0 +1,19 @@ +var SOL_CACHE_FILE_PREFIX = 'sol-cache-file-'; + +function getCacheFilePrefix() { + return SOL_CACHE_FILE_PREFIX; +} + +function fileKey( name ) { + return getCacheFilePrefix() + name; +} + +function fileNameFromKey(key) { + return key.replace( getCacheFilePrefix(), '' ); +} + +module.exports = { + getCacheFilePrefix: getCacheFilePrefix, + fileKey: fileKey, + fileNameFromKey: fileNameFromKey +};