| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <project name="expressions" default="default"> |
| |
| <description> |
| Dynamically computed values to sort/facet/search on based on a pluggable grammar. |
| </description> |
| |
| <import file="../module-build.xml"/> |
| |
| <path id="classpath"> |
| <path refid="base.classpath"/> |
| <fileset dir="lib"/> |
| <pathelement path="${queries.jar}"/> |
| </path> |
| |
| <path id="test.classpath"> |
| <path refid="test.base.classpath"/> |
| <fileset dir="lib"/> |
| <pathelement path="src/test-files"/> |
| </path> |
| |
| <target name="compile-core" depends="jar-queries,common.compile-core" /> |
| |
| <target name="javadocs" depends="javadocs-queries,compile-core,check-javadocs-uptodate" unless="javadocs-uptodate-${name}"> |
| <invoke-module-javadoc> |
| <links> |
| <link href="../queries"/> |
| </links> |
| </invoke-module-javadoc> |
| </target> |
| |
| <target name="regenerate" depends="run-antlr"/> |
| |
| <target name="resolve-antlr" xmlns:ivy="antlib:org.apache.ivy.ant"> |
| <ivy:cachepath organisation="org.antlr" module="antlr4" revision="4.5.1-1" |
| inline="true" conf="default" type="jar" pathid="antlr.classpath"/> |
| </target> |
| |
| <target name="run-antlr" depends="resolve-antlr"> |
| <regen-grammar package="js" grammar="Javascript"/> |
| </target> |
| |
| <macrodef name="replace-value"> |
| <attribute name="value" /> |
| <attribute name="property" /> |
| <attribute name="from" /> |
| <attribute name="to" /> |
| <sequential> |
| <loadresource property="@{property}"> |
| <string value="@{value}"/> |
| <filterchain> |
| <tokenfilter> |
| <filetokenizer/> |
| <replacestring from="@{from}" to="@{to}"/> |
| </tokenfilter> |
| </filterchain> |
| </loadresource> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="regen-grammar"> |
| <attribute name="package" /> |
| <attribute name="grammar" /> |
| <sequential> |
| <local name="grammar.path"/> |
| <patternset id="grammar.@{grammar}.patternset"> |
| <include name="@{grammar}Lexer.java" /> |
| <include name="@{grammar}Parser.java" /> |
| <include name="@{grammar}Visitor.java" /> |
| <include name="@{grammar}BaseVisitor.java" /> |
| </patternset> |
| <property name="grammar.path" location="src/java/org/apache/lucene/expressions/@{package}"/> |
| <!-- delete parser and lexer so files will be generated --> |
| <delete dir="${grammar.path}"> |
| <patternset refid="grammar.@{grammar}.patternset"/> |
| </delete> |
| <!-- invoke ANTLR4 --> |
| <java classname="org.antlr.v4.Tool" fork="true" failonerror="true" classpathref="antlr.classpath" taskname="antlr"> |
| <sysproperty key="file.encoding" value="UTF-8"/> |
| <sysproperty key="user.language" value="en"/> |
| <sysproperty key="user.country" value="US"/> |
| <sysproperty key="user.variant" value=""/> |
| <arg value="-package"/> |
| <arg value="org.apache.lucene.expressions.@{package}"/> |
| <arg value="-no-listener"/> |
| <arg value="-visitor"/> |
| <arg value="-o"/> |
| <arg path="${grammar.path}"/> |
| <arg path="${grammar.path}/@{grammar}.g4"/> |
| </java> |
| <!-- fileset with files to edit --> |
| <fileset id="grammar.fileset" dir="${grammar.path}"> |
| <patternset refid="grammar.@{grammar}.patternset"/> |
| </fileset> |
| <!-- remove files that are not needed to compile or at runtime --> |
| <delete dir="${grammar.path}" includes="@{grammar}*.tokens"/> |
| <!-- make the generated classes package private --> |
| <replaceregexp match="public ((interface|class) \Q@{grammar}\E\w+)" replace="\1" encoding="UTF-8"> |
| <fileset refid="grammar.fileset"/> |
| </replaceregexp> |
| <!-- nuke timestamps/filenames in generated files --> |
| <replaceregexp match="\Q// Generated from \E.*" replace="\/\/ ANTLR GENERATED CODE: DO NOT EDIT" encoding="UTF-8"> |
| <fileset refid="grammar.fileset"/> |
| </replaceregexp> |
| <!-- remove tabs in antlr generated files --> |
| <replaceregexp match="\t" flags="g" replace=" " encoding="UTF-8"> |
| <fileset refid="grammar.fileset"/> |
| </replaceregexp> |
| <!-- fix line endings --> |
| <fixcrlf srcdir="${grammar.path}"> |
| <patternset refid="grammar.@{grammar}.patternset"/> |
| </fixcrlf> |
| </sequential> |
| </macrodef> |
| </project> |