109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)package org.chromium.devtools.jsdoc; 209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)public class ScriptText { 409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) public final String text; 609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) public ScriptText(String text) { 809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.text = text; 909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 1009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 1109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) public int getColumn(int offset) { 1209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) int lineStart = findLineStart(offset); 1309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return lineStart == -1 ? -1 : offset - lineStart; 1409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 1509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 1609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) public String getLineTextAt(int offset) { 1709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) int lineStart = findLineStart(offset); 1809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (lineStart == -1) { 1909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return null; 2009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 2109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) int lineEnd = text.indexOf('\n', offset); 2209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (lineEnd == -1) { 2309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) lineEnd = text.length(); 2409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 2509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return text.substring(lineStart, lineEnd); 2609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 2709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 2809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) private int findLineStart(int offset) { 2909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (offset > text.length()) { 3009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return -1; 3109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 3209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return text.lastIndexOf('\n', offset) + 1; 3309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 3409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 35