Skip to content

Commit 7c9872f

Browse files
committed
Store numlines if Xref is used while analyzing
1 parent eb9ed6a commit 7c9872f

File tree

8 files changed

+42
-6
lines changed

8 files changed

+42
-6
lines changed

src/org/opensolaris/opengrok/analysis/FileAnalyzer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@
3333

3434
import org.apache.lucene.analysis.Analyzer;
3535
import org.apache.lucene.document.Document;
36+
import org.apache.lucene.document.StoredField;
3637
import org.opensolaris.opengrok.analysis.plain.PlainFullTokenizer;
3738
import org.opensolaris.opengrok.analysis.plain.PlainSymbolTokenizer;
3839
import org.opensolaris.opengrok.configuration.Project;
3940
import org.opensolaris.opengrok.logger.LoggerFactory;
41+
import org.opensolaris.opengrok.search.QueryBuilder;
4042

4143
/**
4244
* Base class for all different File Analyzers
@@ -245,6 +247,15 @@ protected TokenStreamComponents createComponents(String fieldName) {
245247
}
246248
}
247249

250+
/**
251+
* Add a field to store document number of lines.
252+
* @param doc the target document
253+
* @param value the number of lines
254+
*/
255+
protected void addNumLines(Document doc, int value) {
256+
doc.add(new StoredField(QueryBuilder.NUML, value));
257+
}
258+
248259
private JFlexTokenizer createPlainSymbolTokenizer() {
249260
return new JFlexTokenizer(new PlainSymbolTokenizer(
250261
FileAnalyzer.dummyReader));

src/org/opensolaris/opengrok/analysis/Xrefer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ public interface Xrefer extends Resettable {
4141
*/
4242
Scopes getScopes();
4343

44+
/**
45+
* Gets the document number of lines.
46+
* @return a number greater than or equal to 1
47+
*/
48+
int getLineNumber();
49+
4450
void setAnnotation(Annotation annotation);
4551

4652
/**

src/org/opensolaris/opengrok/analysis/document/MandocAnalyzer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ public void analyze(Document doc, StreamSource src, Writer xrefOut)
6565
try (Reader in = getReader(src.getStream())) {
6666
WriteXrefArgs args = new WriteXrefArgs(in, xrefOut);
6767
args.setProject(project);
68-
writeXref(args);
68+
Xrefer xref = writeXref(args);
69+
70+
addNumLines(doc, xref.getLineNumber());
6971
}
7072
}
7173
}

src/org/opensolaris/opengrok/analysis/document/MandocXref.lex

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ import org.opensolaris.opengrok.configuration.RuntimeEnvironment;
7676
didStartTee = true;
7777
}
7878

79-
protected void writeTee(String s) throws IOException {
79+
protected void writeTee() throws IOException {
80+
if (!didStartTee) startTee();
81+
String s = yytext();
8082
plainbuf.write(s);
8183
if (didStartMandoc) mandoc.write(s);
8284
}
@@ -116,11 +118,17 @@ import org.opensolaris.opengrok.configuration.RuntimeEnvironment;
116118
plainbuf = null;
117119
%eof}
118120

121+
%include Common.lexh
119122
%%
120123
<YYINITIAL> {
124+
{EOL} {
125+
writeTee();
126+
setLineNumber(++yyline);
127+
}
128+
129+
{WhiteSpace} |
121130
\w+ |
122131
[^] {
123-
if (!didStartTee) startTee();
124-
writeTee(yytext());
132+
writeTee();
125133
}
126134
}

src/org/opensolaris/opengrok/analysis/document/TroffAnalyzer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ public void analyze(Document doc, StreamSource src, Writer xrefOut) throws IOExc
6565
try (Reader in = getReader(src.getStream())) {
6666
WriteXrefArgs args = new WriteXrefArgs(in, xrefOut);
6767
args.setProject(project);
68-
writeXref(args);
68+
Xrefer xref = writeXref(args);
69+
70+
addNumLines(doc, xref.getLineNumber());
6971
}
7072
}
7173
}

src/org/opensolaris/opengrok/analysis/plain/PlainAnalyzer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ public void analyze(Document doc, StreamSource src, Writer xrefOut)
127127
doc.add(new StoredField(QueryBuilder.SCOPES,
128128
scopesSerialized));
129129
}
130+
131+
addNumLines(doc, xref.getLineNumber());
130132
}
131133
}
132134
}

src/org/opensolaris/opengrok/analysis/plain/XMLAnalyzer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.opensolaris.opengrok.analysis.StreamSource;
3434
import org.opensolaris.opengrok.analysis.TextAnalyzer;
3535
import org.opensolaris.opengrok.analysis.WriteXrefArgs;
36+
import org.opensolaris.opengrok.analysis.Xrefer;
3637

3738
/**
3839
* Analyzes HTML files Created on September 30, 2005
@@ -57,7 +58,9 @@ public void analyze(Document doc, StreamSource src, Writer xrefOut) throws IOExc
5758
try (Reader in = getReader(src.getStream())) {
5859
WriteXrefArgs args = new WriteXrefArgs(in, xrefOut);
5960
args.setProject(project);
60-
writeXref(args);
61+
Xrefer xref = writeXref(args);
62+
63+
addNumLines(doc, xref.getLineNumber());
6164
}
6265
}
6366
}

src/org/opensolaris/opengrok/search/QueryBuilder.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
/*
2121
* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
2222
* Portions Copyright 2011 Jens Elkner.
23+
* Portions Copyright (c) 2017, Chris Fraire <[email protected]>.
2324
*/
2425
package org.opensolaris.opengrok.search;
2526

@@ -49,6 +50,7 @@ public class QueryBuilder {
4950
public static final String HIST = "hist";
5051
public static final String TYPE = "type";
5152
public static final String SCOPES = "scopes";
53+
public static final String NUML = "numl";
5254
/**
5355
* Fields we use in lucene internal ones
5456
*/

0 commit comments

Comments
 (0)