// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.debug.core;
import java.util.Iterator;
import java.util.List;
/**
* Parses script names and generates RegExp for them as needed for 'auto-detect' source look-up
* feature. Incapsulates knowledge about script name schema. For example it may support
* plain file names, URLs that hold file name as the 'path' part. There might be
* more exotic implementations that parses URLs like
* "http://server/get?dir=foo/bar&file=index.html".
*/
public interface ScriptNameManipulator {
/**
* Obtains file path from the script name
*/
FilePath getFileName(String scriptName);
/**
* An interface to parsed file path. Iterator allows lazy parsing.
*/
interface FilePath extends Iterable<String> {
String getLastComponent();
/**
* @return all file path components in reversed order excluding the last one
*/
@Override public Iterator<String> iterator();
}
/**
* For a file path (presented as components) creates a pattern that matches
* script names with this file path.
*/
ScriptNamePattern createPattern(List<String> components);
/**
* A wrapper for a pattern. It is implemented as a plain holder of JavaScript
* RegExp source.
*/
class ScriptNamePattern {
private final String javaScriptString;
public ScriptNamePattern(String javaScriptString) {
this.javaScriptString = javaScriptString;
}
public String getJavaScriptRegExp() {
return javaScriptString;
}
}
}