diff options
| -rw-r--r-- | background_scripts/settings.coffee | 113 |
1 files changed, 55 insertions, 58 deletions
diff --git a/background_scripts/settings.coffee b/background_scripts/settings.coffee index af0f8f16..72fffe7a 100644 --- a/background_scripts/settings.coffee +++ b/background_scripts/settings.coffee @@ -1,66 +1,15 @@ # # Used by everyone to manipulate localStorage. # -Settings = - defaults: - scrollStepSize: 60 - linkHintCharacters: "sadfjklewcmpgh" - filterLinkHints: false - hideHud: false - userDefinedLinkHintCss: - """ - div > .vimiumHintMarker { - /* linkhint boxes */ - background-color: yellow; - border: 1px solid #E3BE23; - } - - div > .vimiumHintMarker span { - /* linkhint text */ - color: black; - font-weight: bold; - font-size: 12px; - } - - div > .vimiumHintMarker > .matchingCharacter { - } - """ - excludedUrls: - """ - http*://mail.google.com/* - http*://www.google.com/reader/* - """ - - # NOTE : If a page contains both a single angle-bracket link and a double angle-bracket link, then in - # most cases the single bracket link will be "prev/next page" and the double bracket link will be - # "first/last page", so we put the single bracket first in the pattern string so that it gets searched - # for first. - - # "\bprev\b,\bprevious\b,\bback\b,<,←,«,≪,<<" - previousPatterns: "prev,previous,back,<,\u2190,\xab,\u226a,<<" - # "\bnext\b,\bmore\b,>,→,»,≫,>>" - nextPatterns: "next,more,>,\u2192,\xbb,\u226b,>>" - - init: -> - # settingsVersion was introduced in v1.31, and is used to coordinate data migration. We do not use - # previousVersion as it is used to coordinate the display of the upgrade message, and is not updated - # early enough when the extension loads. - # 1.31 was also the version where we converted all localStorage values to JSON. - if (!this.has("settingsVersion")) - for key of localStorage - # filterLinkHints' checkbox state used to be stored as a string - if (key == "filterLinkHints") - localStorage[key] = if (localStorage[key] == "true") then true else false - else - localStorage[key] = JSON.stringify(localStorage[key]) - this.set("settingsVersion", Utils.getCurrentVersion()) +root = exports ? window +root.Settings = Settings = get: (key) -> - if (key of localStorage) then JSON.parse(localStorage[key]) else this.defaults[key] + if (key of localStorage) then JSON.parse(localStorage[key]) else defaults[key] set: (key, value) -> # don't store the value if it is equal to the default, so we can change the defaults in the future - if (value == this.defaults[key]) + if (value == defaults[key]) this.clear(key) else localStorage[key] = JSON.stringify(value) @@ -69,6 +18,54 @@ Settings = has: (key) -> key of localStorage -Settings.init() -root = exports ? window -root.Settings = Settings +defaults = + scrollStepSize: 60 + linkHintCharacters: "sadfjklewcmpgh" + filterLinkHints: false + hideHud: false + userDefinedLinkHintCss: + """ + div > .vimiumHintMarker { + /* linkhint boxes */ + background-color: yellow; + border: 1px solid #E3BE23; + } + + div > .vimiumHintMarker span { + /* linkhint text */ + color: black; + font-weight: bold; + font-size: 12px; + } + + div > .vimiumHintMarker > .matchingCharacter { + } + """ + excludedUrls: + """ + http*://mail.google.com/* + http*://www.google.com/reader/* + """ + # NOTE : If a page contains both a single angle-bracket link and a double angle-bracket link, then in + # most cases the single bracket link will be "prev/next page" and the double bracket link will be + # "first/last page", so we put the single bracket first in the pattern string so that it gets searched + # for first. + + # "\bprev\b,\bprevious\b,\bback\b,<,←,«,≪,<<" + previousPatterns: "prev,previous,back,<,\u2190,\xab,\u226a,<<" + # "\bnext\b,\bmore\b,>,→,»,≫,>>" + nextPatterns: "next,more,>,\u2192,\xbb,\u226b,>>" + +# Initialization code. +# settingsVersion was introduced in v1.31, and is used to coordinate data migration. We do not use +# previousVersion as it is used to coordinate the display of the upgrade message, and is not updated +# early enough when the extension loads. +# 1.31 was also the version where we converted all localStorage values to JSON. +if (!Settings.has("settingsVersion")) + for key of localStorage + # filterLinkHints' checkbox state used to be stored as a string + if (key == "filterLinkHints") + localStorage[key] = if (localStorage[key] == "true") then true else false + else + localStorage[key] = JSON.stringify(localStorage[key]) + Settings.set("settingsVersion", Utils.getCurrentVersion()) |
