aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2016-10-17 08:02:20 +0100
committerStephen Blott2016-10-17 08:15:06 +0100
commitbc2f5e0f52179e915ed7a439fc6bfa03525156ee (patch)
treec01fdf33e456f0d5171c530c4da4754db8876a74
parentf01c01383d5826a028d4c5c2c43d7b5f18f2fef2 (diff)
downloadvimium-bc2f5e0f52179e915ed7a439fc6bfa03525156ee.tar.bz2
Better line parsing.
1. Explicitly remove comments. 2. A trailing backslash means the current line continues on the next line. E.g. a \ b \ c is a single line `a b c`. This helps alleviate the fact that configuration lines can be very long, whereas the *Custom key mappings* input is quite narrow. TODO: We should use the same line parser in the custom-search-engines input.
-rw-r--r--background_scripts/bg_utils.coffee14
-rw-r--r--background_scripts/commands.coffee2
-rw-r--r--tests/unit_tests/commands_test.coffee1
3 files changed, 16 insertions, 1 deletions
diff --git a/background_scripts/bg_utils.coffee b/background_scripts/bg_utils.coffee
index ea54c900..27ecb0cc 100644
--- a/background_scripts/bg_utils.coffee
+++ b/background_scripts/bg_utils.coffee
@@ -77,4 +77,18 @@ BgUtils =
logElement.value += "#{dateString}: #{message}\n"
logElement.scrollTop = 2000000000
+ # Remove comments from a list of lines and merge lines where the last character on the preceding line is "\".
+ parseLines: (lines) ->
+ previousText = []
+ for line in lines
+ line = line.replace /^\s+/g, ''
+ continue if line.length == 0
+ continue if line[0] in '#"'
+ if line[line.length-1] == "\\"
+ previousText.push line[...line.length-1]
+ continue
+ line = previousText.join(" ") + line
+ previousText = []
+ line
+
root.BgUtils = BgUtils
diff --git a/background_scripts/commands.coffee b/background_scripts/commands.coffee
index d12b704d..d24bdb05 100644
--- a/background_scripts/commands.coffee
+++ b/background_scripts/commands.coffee
@@ -61,7 +61,7 @@ Commands =
[key[0], @parseKeySequence(key[1..])...]
parseCustomKeyMappings: (customKeyMappings) ->
- for line in customKeyMappings.split "\n"
+ for line in BgUtils.parseLines customKeyMappings.split "\n"
unless line[0] == "\"" or line[0] == "#"
tokens = line.replace(/\s+$/, "").split /\s+/
switch tokens[0]
diff --git a/tests/unit_tests/commands_test.coffee b/tests/unit_tests/commands_test.coffee
index 2c2e9542..12f4496a 100644
--- a/tests/unit_tests/commands_test.coffee
+++ b/tests/unit_tests/commands_test.coffee
@@ -1,5 +1,6 @@
require "./test_helper.js"
extend global, require "./test_chrome_stubs.js"
+extend global, require "../../background_scripts/bg_utils.js"
global.Settings = {postUpdateHooks: {}, get: (-> ""), set: ->}
{Commands} = require "../../background_scripts/commands.js"