Index: Source/devtools/front_end/script_formatter_worker/ScriptFormatterWorker.js |
diff --git a/Source/devtools/front_end/script_formatter_worker/ScriptFormatterWorker.js b/Source/devtools/front_end/script_formatter_worker/ScriptFormatterWorker.js |
index b5951097aba518ced76e393bb8809696d8d7041b..31b2157741fffd7e112a3aaca5de93af3345ee3a 100644 |
--- a/Source/devtools/front_end/script_formatter_worker/ScriptFormatterWorker.js |
+++ b/Source/devtools/front_end/script_formatter_worker/ScriptFormatterWorker.js |
@@ -238,6 +238,8 @@ FormatterWorker.parseCSS = function(params) |
property = { |
name: tokenValue, |
value: "", |
+ range: createRange(lineNumber, column), |
+ nameRange: createRange(lineNumber, column) |
}; |
state = FormatterWorker.CSSParserStates.PropertyName; |
} else if (tokenValue === "}" && tokenType === UndefTokenType) { |
@@ -248,21 +250,28 @@ FormatterWorker.parseCSS = function(params) |
case FormatterWorker.CSSParserStates.PropertyName: |
if (tokenValue === ":" && tokenType === UndefTokenType) { |
property.name = property.name.trim(); |
+ property.nameRange.endLine = lineNumber; |
+ property.nameRange.endColumn = column; |
+ property.valueRange = createRange(lineNumber, newColumn); |
state = FormatterWorker.CSSParserStates.PropertyValue; |
} else if (tokenType["property"]) { |
property.name += tokenValue; |
} |
break; |
case FormatterWorker.CSSParserStates.PropertyValue: |
- if (tokenValue === ";" && tokenType === UndefTokenType) { |
+ if ((tokenValue === ";" || tokenValue === "}") && tokenType === UndefTokenType) { |
property.value = property.value.trim(); |
+ property.valueRange.endLine = lineNumber; |
+ property.valueRange.endColumn = column; |
+ property.range.endLine = lineNumber; |
+ property.range.endColumn = newColumn; |
rule.properties.push(property); |
- state = FormatterWorker.CSSParserStates.Style; |
- } else if (tokenValue === "}" && tokenType === UndefTokenType) { |
- property.value = property.value.trim(); |
- rule.properties.push(property); |
- rules.push(rule); |
- state = FormatterWorker.CSSParserStates.Initial; |
+ if (tokenValue === "}") { |
+ rules.push(rule); |
+ state = FormatterWorker.CSSParserStates.Initial; |
+ } else { |
+ state = FormatterWorker.CSSParserStates.Style; |
+ } |
} else if (!tokenType["comment"]) { |
property.value += tokenValue; |
} |
@@ -284,6 +293,19 @@ FormatterWorker.parseCSS = function(params) |
tokenizer(line, processToken); |
} |
postMessage({ chunk: rules, isLastChunk: true }); |
+ |
+ /** |
+ * @return {!{startLine: number, startColumn: number, endLine: number, endColumn: number}} |
+ */ |
+ function createRange(lineNumber, columnNumber) |
+ { |
+ return { |
+ startLine: lineNumber, |
+ startColumn: columnNumber, |
+ endLine: lineNumber, |
+ endColumn: columnNumber |
+ }; |
+ } |
} |
/** |