1 /* 2 * Copyright (c) 2008-2019 Emmanuel Dupuy. 3 * This project is distributed under the GPLv3 license. 4 * This is a Copyleft license that gives the user the right to use, 5 * copy and modify the code freely for non-commercial purposes. 6 */ 7 8 package org.jd.gui.api.feature; 9 10 import java.net.URI; 11 12 /** 13 * uri : scheme '://' path ('?' query)? ('#' fragment)?<br> 14 * scheme : 'generic' | 'jar' | 'war' | 'ear' | 'dex' | ...<br> 15 * path : singlePath('!' singlePath)*<br> 16 * singlePath : [path/to/dir/] | [path/to/file]<br> 17 * query : queryLineNumber | queryPosition | querySearch<br> 18 * queryLineNumber : 'lineNumber=' [numeric]<br> 19 * queryPosition : 'position=' [numeric]<br> 20 * querySearch : 'highlightPattern=' queryPattern '&highlightFlags=' queryFlags ('&highlightScope=' typeName)?<br> 21 * queryPattern : [start of string] | [start of type name] | [start of field name] | [start of method name]<br> 22 * queryFlags : 'd'? // Match declarations<br> 23 * 'r'? // Match references<br> 24 * 't'? // Match types<br> 25 * 'c'? // Match constructors<br> 26 * 'm'? // Match methods<br> 27 * 'f'? // Match fields<br> 28 * 's'? // Match strings<br> 29 * fragment : fragmentType | fragmentField | fragmentMethod<br> 30 * fragmentType : typeName<br> 31 * fragmentField : typeName '-' [field name] '-' descriptor<br> 32 * fragmentMethod : typeName '-' [method name] '-' methodDescriptor<br> 33 * methodDescriptor : '(*)?' | // Match all method descriptors<br> 34 * '(' descriptor* ')' descriptor<br> 35 * descriptor : '?' | // Match a primitive or a type name<br> 36 * '['* primitiveOrTypeName<br> 37 * primitiveOrTypeName : 'B' | 'C' | 'D' | 'F' | 'I' | 'J' | 'L' typeName ';' | 'S' | 'Z'<br> 38 * typeName : [internal qualified name] | '*\/' [name]<br> 39 * <br> 40 * Examples:<br> 41 * <ul> 42 * <li>file://dir1/dir2/</li> 43 * <li>file://dir1/dir2/file</li> 44 * <li>jar://dir1/dir2/</li> 45 * <li>jar://dir1/dir2/file</li> 46 * 47 * <li>jar://dir1/dir2/javafile</li> 48 * <li>jar://dir1/dir2/javafile#type</li> 49 * <li>jar://dir1/dir2/javafile#type-fieldName-descriptor</li> 50 * <li>jar://dir1/dir2/javafile#type-methodName-descriptor</li> 51 * <li>jar://dir1/dir2/javafile#innertype</li> 52 * <li>jar://dir1/dir2/javafile#innertype-fieldName-?</li> 53 * <li>jar://dir1/dir2/javafile#innertype-methodName-(*)?</li> 54 * <li>jar://dir1/dir2/javafile#innertype-methodName-(?JZLjava/lang/Sting;C)I</li> 55 * <li>jar://dir1/dir2/javafile#innertype-fieldName-descriptor</li> 56 * <li>jar://dir1/dir2/javafile#innertype-methodName-descriptor</li> 57 * 58 * <li>file://dir1/dir2/file?lineNumber=numeric</li> 59 * <li>file://dir1/dir2/file?position=numeric</li> 60 * <li>file://dir1/dir2/file?highlightPattern=hello&highlightFlags=drtcmfs&highlightScope=java/lang/String</li> 61 * <li>file://dir1/dir2/file?highlightPattern=hello&highlightFlags=drtcmfs&highlightScope=*\/String</li> 62 * </ul> 63 */ 64 public interface UriOpenable { openUri(URI uri)65 boolean openUri(URI uri); 66 } 67