Hi.. James
Thank you! I will read the resource and continue
On Thu, Nov 15, 2018 at 9:34 PM James Bognar <jamesbognar@apache.org> wrote:
> Hi Shalitha,
>
> The documentation you'll want to update is located in the following
> location:
> juneau-doc/src/main/resources/Topics/05.juneau-svl/02.SvlVariables.html.
>
> These topic files get combined into the overview.html through a separate
> process (the DocGenerator class invoked via the juneau-build-doc
> launcher). The process is described here:
>
> https://cwiki.apache.org/confluence/display/JUNEAU/Adding+content+to+the+overview-summary.html+file
>
> Eventually I'd like to automate that in the Maven javadoc build but I
> don't know how to do that yet.
>
> Don't worry about the release notes...I'll take care of that.
>
>
>
> On Thu, Nov 15, 2018 at 10:53 AM Shalitha Suranga <
> shalithasuranga@gmail.com> wrote:
>
>> Hi.
>>
>> Thanks for merging! how we can add these new vars to live docs
>> Do we need to wait for the next release?
>>
>> Can someone advice please
>>
>> On Thu, Nov 15, 2018 at 8:14 PM GitBox <git@apache.org> wrote:
>>
>>> jamesbognar closed pull request #16: Added LN ST PE vars to svl-core
>>> URL: https://github.com/apache/juneau/pull/16
>>>
>>>
>>>
>>>
>>> This is a PR merged from a forked repository.
>>> As GitHub hides the original diff on merge, it is displayed below for
>>> the sake of provenance:
>>>
>>> As this is a foreign pull request (from a fork), the diff is supplied
>>> below (as it won't show otherwise due to GitHub magic):
>>>
>>> diff --git
>>> a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/LenVarTest.java
>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/LenVarTest.java
>>> new file mode 100644
>>> index 000000000..1dc5f6baf
>>> --- /dev/null
>>> +++
>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/LenVarTest.java
>>> @@ -0,0 +1,41 @@
>>> +//
>>> ***************************************************************************************************************************
>>> +// * 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. *
>>> +//
>>> ***************************************************************************************************************************
>>> +package org.apache.juneau.svl.vars;
>>> +
>>> +import static org.junit.Assert.*;
>>> +
>>> +import org.apache.juneau.svl.*;
>>> +import org.junit.*;
>>> +
>>> +public class LenVarTest {
>>> +
>>> +
>>> //====================================================================================================
>>> + // test - Basic tests
>>> +
>>> //====================================================================================================
>>> + @Test
>>> + public void test() throws Exception {
>>> + VarResolver vr = new
>>> VarResolverBuilder().vars(LenVar.class, SystemPropertiesVar.class).build();
>>> +
>>> + System.setProperty("LenVarTest.test", "foo bar");
>>> + System.setProperty("LenVarTest.test2", "1.2.3.4.5");
>>> +
>>> + // $LN{stringArg} examples
>>> + assertEquals("1", vr.resolve("$LN{J}"));
>>> + assertEquals("len=7",
>>> vr.resolve("len=$LN{$S{LenVarTest.test}}"));
>>> +
>>> + // $LN{stringArg, delimiter} examples
>>> + assertEquals("5",
>>> vr.resolve("$LN{$S{LenVarTest.test2},.}"));
>>> +
>>> +
>>> + }
>>> +}
>>> diff --git
>>> a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/PatternExtractVarTest.java
>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/PatternExtractVarTest.java
>>> new file mode 100644
>>> index 000000000..a3ef625be
>>> --- /dev/null
>>> +++
>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/PatternExtractVarTest.java
>>> @@ -0,0 +1,42 @@
>>> +//
>>> ***************************************************************************************************************************
>>> +// * 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. *
>>> +//
>>> ***************************************************************************************************************************
>>> +package org.apache.juneau.svl.vars;
>>> +
>>> +import static org.junit.Assert.*;
>>> +
>>> +import org.apache.juneau.svl.*;
>>> +import org.junit.*;
>>> +
>>> +public class PatternExtractVarTest {
>>> +
>>> +
>>> //====================================================================================================
>>> + // test - Basic tests
>>> +
>>> //====================================================================================================
>>> + @Test
>>> + public void test() throws Exception {
>>> + VarResolver vr = new
>>> VarResolverBuilder().vars(PatternExtractVar.class,
>>> SystemPropertiesVar.class).build();
>>> +
>>> + System.setProperty("PatternExtractVarTest.test", "foo
>>> bar");
>>> + System.setProperty("PatternExtractVarTest.test2",
>>> "size=23");
>>> +
>>> + assertEquals("foo bar",
>>> vr.resolve("$PE{$S{PatternExtractVarTest.test},(.*),1}"));
>>> +
>>> + assertEquals("size",
>>> vr.resolve("$PE{$S{PatternExtractVarTest.test2},(.*)=([0-9]+),1}"));
>>> + assertEquals("23",
>>> vr.resolve("$PE{$S{PatternExtractVarTest.test2},(.*)=([0-9]+),2}"));
>>> + assertEquals("size=23",
>>> vr.resolve("$PE{$S{PatternExtractVarTest.test2},(.*)=([0-9]+),0}"));
>>> + assertEquals("",
>>> vr.resolve("$PE{$S{PatternExtractVarTest.test2},(.*)=([0-9]+),-2}"));
>>> + assertEquals("",
>>> vr.resolve("$PE{$S{PatternExtractVarTest.test2},(.*)=([0-9]+),54}"));
>>> +
>>> +
>>> + }
>>> +}
>>> diff --git
>>> a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SubstringVarTest.java
>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SubstringVarTest.java
>>> new file mode 100644
>>> index 000000000..286e00fc1
>>> --- /dev/null
>>> +++
>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SubstringVarTest.java
>>> @@ -0,0 +1,46 @@
>>> +//
>>> ***************************************************************************************************************************
>>> +// * 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. *
>>> +//
>>> ***************************************************************************************************************************
>>> +package org.apache.juneau.svl.vars;
>>> +
>>> +import static org.junit.Assert.*;
>>> +
>>> +import org.apache.juneau.svl.*;
>>> +import org.junit.*;
>>> +
>>> +public class SubstringVarTest {
>>> +
>>> +
>>> //====================================================================================================
>>> + // test - Basic tests
>>> +
>>> //====================================================================================================
>>> + @Test
>>> + public void test() throws Exception {
>>> + VarResolver vr = new
>>> VarResolverBuilder().vars(SubstringVar.class,
>>> SystemPropertiesVar.class).build();
>>> +
>>> + System.setProperty("SubstringVarTest.test", "foo bar");
>>> +
>>> + // $ST{stringArg, start} examples
>>> + // Notice that -start also works here
>>> + assertEquals("o bar",
>>> vr.resolve("$ST{$S{SubstringVarTest.test},2}"));
>>> + assertEquals("",
>>> vr.resolve("$ST{$S{SubstringVarTest.test},24}"));
>>> + assertEquals("foo bar",
>>> vr.resolve("$ST{$S{SubstringVarTest.test},0}"));
>>> + assertEquals("",
>>> vr.resolve("$ST{$S{SubstringVarTest.test},-24}"));
>>> + assertEquals("bar",
>>> vr.resolve("$ST{$S{SubstringVarTest.test},-3}"));
>>> + assertEquals("foo bar",
>>> vr.resolve("$ST{$S{SubstringVarTest.test},-7}"));
>>> +
>>> + // $ST{stringArg, start, end}
>>> + assertEquals("foo bar",
>>> vr.resolve("$ST{$S{SubstringVarTest.test},0,7}"));
>>> + assertEquals("oo",
>>> vr.resolve("$ST{$S{SubstringVarTest.test},1,3}"));
>>> + assertEquals("",
>>> vr.resolve("$ST{$S{SubstringVarTest.test},-2, 2}"));
>>> +
>>> + }
>>> +}
>>> diff --git
>>> a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverBuilder.java
>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverBuilder.java
>>> index 634ac366f..05f8ce566 100644
>>> ---
>>> a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverBuilder.java
>>> +++
>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverBuilder.java
>>> @@ -72,9 +72,12 @@ public VarResolverBuilder vars(Class<?>...vars) {
>>> * <li>{@link CoalesceVar}
>>> * <li>{@link PatternMatchVar}
>>> * <li>{@link PatternReplaceVar}
>>> + * <li>{@link PatternExtractVar}
>>> * <li>{@link UpperCaseVar}
>>> * <li>{@link LowerCaseVar}
>>> * <li>{@link NotEmptyVar}
>>> + * <li>{@link LenVar}
>>> + * <li>{@link SubstringVar}
>>> * </ul>
>>> *
>>> * @return This object (for method chaining).
>>> @@ -90,9 +93,12 @@ public VarResolverBuilder defaultVars() {
>>> CoalesceVar.class,
>>> PatternMatchVar.class,
>>> PatternReplaceVar.class,
>>> + PatternExtractVar.class,
>>> UpperCaseVar.class,
>>> LowerCaseVar.class,
>>> - NotEmptyVar.class);
>>> + NotEmptyVar.class,
>>> + LenVar.class,
>>> + SubstringVar.class);
>>> }
>>>
>>> /**
>>> diff --git
>>> a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/LenVar.java
>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/LenVar.java
>>> new file mode 100644
>>> index 000000000..71592a7c4
>>> --- /dev/null
>>> +++
>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/LenVar.java
>>> @@ -0,0 +1,80 @@
>>> +//
>>> ***************************************************************************************************************************
>>> +// * 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. *
>>> +//
>>> ***************************************************************************************************************************
>>> +package org.apache.juneau.svl.vars;
>>> +
>>> +import static org.apache.juneau.internal.ThrowableUtils.*;
>>> +
>>> +import java.util.regex.*;
>>> +
>>> +import org.apache.juneau.svl.*;
>>> +
>>> +/**
>>> + * A transformational variable resolver that returns character count or
>>> list count (using given delimiter).
>>> + *
>>> + * <p>
>>> + * The format for this var is one of the following:
>>> + * <ul>
>>> + * <li><js>"$LN{arg}"</js>
>>> + * <li><js>"$LN{arg, delimiter}"</js>
>>> + * </ul>
>>> + *
>>> + * <p>
>>> + *
>>> + *
>>> + * <h5 class='section'>Example:</h5>
>>> + * <p class='bcode w800'>
>>> + * <jc>// Create a variable resolver that resolves system
>>> properties and $SW vars.</jc>
>>> + * VarResolver r =
>>> VarResolver.<jsm>create</jsm>().vars(LenVar.<jk>class</jk>,
>>> SystemPropertiesVar.<jk>class</jk>).build();
>>> + *
>>> + * <jc>// Use it!</jc>
>>> + * System.<jsf>out</jsf>.println(r.resolve(<js>"Parts
=
>>> $LN{$P{os.version},.} Chars = $LN{$P{os.version}}"</js>));
>>> + * </p>
>>> + *
>>> + * <p>
>>> + * Since this is a {@link MultipartVar}, any variables contained in the
>>> result will be recursively resolved.
>>> + * <br>Likewise, if the arguments contain any variables, those will be
>>> resolved before they are passed to this var.
>>> + *
>>> + * <h5 class='section'>See Also:</h5>
>>> + * <ul>
>>> + * <li class='link'>{@doc juneau-svl.SvlVariables}
>>> + * </ul>
>>> + */
>>> +public class LenVar extends MultipartVar {
>>> +
>>> + /** The name of this variable. */
>>> + public static final String NAME = "LN";
>>> +
>>> + /**
>>> + * Constructor.
>>> + */
>>> + public LenVar() {
>>> + super(NAME);
>>> + }
>>> +
>>> + @Override /* MultipartVar */
>>> + public String resolve(VarResolverSession session, String[] args)
>>> {
>>> + if (args.length > 2)
>>> + illegalArg("Invalid number of arguments passed
>>> to $LN var. Must have 1 or 2 arguments.");
>>> +
>>> + int len = 0;
>>> + String stringArg = args[0];
>>> + if (args.length == 1)
>>> + len = stringArg.length();
>>> + else if (args.length == 2) {
>>> + //delimiter is given
>>> + String delimiter = Pattern.quote(args[1]);
>>> + len = stringArg.trim().split(delimiter).length;
>>> + }
>>> + return String.valueOf(len);
>>> + }
>>> +}
>>> diff --git
>>> a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/PatternExtractVar.java
>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/PatternExtractVar.java
>>> new file mode 100644
>>> index 000000000..0b4812719
>>> --- /dev/null
>>> +++
>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/PatternExtractVar.java
>>> @@ -0,0 +1,83 @@
>>> +//
>>> ***************************************************************************************************************************
>>> +// * 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. *
>>> +//
>>> ***************************************************************************************************************************
>>> +package org.apache.juneau.svl.vars;
>>> +
>>> +import static org.apache.juneau.internal.ThrowableUtils.*;
>>> +
>>> +import java.util.regex.*;
>>> +
>>> +import org.apache.juneau.svl.*;
>>> +
>>> +/**
>>> + * A transformational variable that returns matched regex groups by
>>> given index.
>>> + *
>>> + * <p>
>>> + * The format for this var:
>>> + * <ul>
>>> + * <li><js>"$PE{arg, pattern, groupIndex}"</js>
>>> + * </ul>
>>> + *
>>> + * <p>
>>> + * The pattern can be any string optionally containing <js>'*'</js>
or
>>> <js>'?'</js> representing any or one character
>>> + * respectively.
>>> + *
>>> + * <h5 class='section'>Example:</h5>
>>> + * <p class='bcode w800'>
>>> + * <jc>// Create a variable resolver that resolves system
>>> properties and $SW vars.</jc>
>>> + * VarResolver r =
>>> VarResolver.<jsm>create</jsm>().vars(PatternExtractVar.<jk>class</jk>,
>>> SystemPropertiesVar.<jk>class</jk>).build();
>>> + *
>>> + * <jc>// Use it!</jc>
>>> + * System.<jsf>out</jsf>.println(r.resolve(<js>"Update
=
>>> $PE{$P{java.version},_([0-9]+),1}!"</js>));
>>> + * </p>
>>> + *
>>> + * <p>
>>> + * Since this is a {@link MultipartVar}, any variables contained in the
>>> result will be recursively resolved.
>>> + * <br>Likewise, if the arguments contain any variables, those will be
>>> resolved before they are passed to this var.
>>> + *
>>> + * <h5 class='section'>See Also:</h5>
>>> + * <ul>
>>> + * <li class='link'>{@doc juneau-svl.SvlVariables}
>>> + * </ul>
>>> + */
>>> +public class PatternExtractVar extends MultipartVar {
>>> +
>>> + /** The name of this variable. */
>>> + public static final String NAME = "PE";
>>> +
>>> + /**
>>> + * Constructor.
>>> + */
>>> + public PatternExtractVar() {
>>> + super(NAME);
>>> + }
>>> +
>>> + @Override /* MultipartVar */
>>> + public String resolve(VarResolverSession session, String[] args)
>>> {
>>> + if (args.length < 3)
>>> + illegalArg("Invalid number of arguments passed
>>> to $PE var. Must have 3 arguments.");
>>> +
>>> + String stringArg = args[0];
>>> + String pattern = args[1];
>>> + String result = "";
>>> + int groupId = Integer.parseInt(args[2]);
>>> +
>>> + Pattern p = Pattern.compile(pattern.replace("*",
>>> ".*").replace("?", "."));
>>> + Matcher m = p.matcher(stringArg);
>>> +
>>> + if (m.find() && groupId <= m.groupCount() &&
groupId >=
>>> 0) {
>>> + result = m.group(groupId);
>>> + }
>>> +
>>> + return result;
>>> + }
>>> +}
>>> diff --git
>>> a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SubstringVar.java
>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SubstringVar.java
>>> new file mode 100644
>>> index 000000000..92b5b6f45
>>> --- /dev/null
>>> +++
>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SubstringVar.java
>>> @@ -0,0 +1,87 @@
>>> +//
>>> ***************************************************************************************************************************
>>> +// * 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. *
>>> +//
>>> ***************************************************************************************************************************
>>> +package org.apache.juneau.svl.vars;
>>> +
>>> +import static org.apache.juneau.internal.ThrowableUtils.*;
>>> +
>>> +import java.util.regex.*;
>>> +
>>> +import org.apache.juneau.svl.*;
>>> +
>>> +/**
>>> + * A transformational variable resolver that returns substring for
>>> given start and end (optional)
>>> + *
>>> + * <p>
>>> + * The format for this var is one of the following:
>>> + * <ul>
>>> + * <li><js>"$ST{arg, start}"</js>
>>> + * <li><js>"$ST{arg, start, end}"</js>
>>> + * </ul>
>>> + *
>>> + * <p>
>>> + *
>>> + *
>>> + * <h5 class='section'>Example:</h5>
>>> + * <p class='bcode w800'>
>>> + * <jc>// Create a variable resolver that resolves system
>>> properties and $SW vars.</jc>
>>> + * VarResolver r =
>>> VarResolver.<jsm>create</jsm>().vars(SubstringVar.<jk>class</jk>,
>>> SystemPropertiesVar.<jk>class</jk>).build();
>>> + *
>>> + * <jc>// Use it!</jc>
>>> + * System.<jsf>out</jsf>.println(r.resolve(<js>"Version
=
>>> $ST{$P{java.version}, 0, 3}"</js>));
>>> + * </p>
>>> + *
>>> + * <p>
>>> + * Since this is a {@link MultipartVar}, any variables contained in the
>>> result will be recursively resolved.
>>> + * <br>Likewise, if the arguments contain any variables, those will be
>>> resolved before they are passed to this var.
>>> + *
>>> + * <h5 class='section'>See Also:</h5>
>>> + * <ul>
>>> + * <li class='link'>{@doc juneau-svl.SvlVariables}
>>> + * </ul>
>>> + */
>>> +public class SubstringVar extends MultipartVar {
>>> +
>>> + /** The name of this variable. */
>>> + public static final String NAME = "ST";
>>> +
>>> + /**
>>> + * Constructor.
>>> + */
>>> + public SubstringVar() {
>>> + super(NAME);
>>> + }
>>> +
>>> + @Override /* MultipartVar */
>>> + public String resolve(VarResolverSession session, String[] args)
>>> {
>>> + if (args.length > 3)
>>> + illegalArg("Invalid number of arguments passed
>>> to $ST var. Must have 1 or 2 arguments.");
>>> +
>>> +
>>> + String stringArg = args[0];
>>> + String result = "";
>>> + if (args.length == 2) {
>>> + int start = Integer.parseInt(args[1]);
>>> + if (start >= 0 && start <= stringArg.length())
>>> + result = stringArg.substring(start);
>>> + if (start < 0 && -start <= stringArg.length())
>>> + result =
>>> stringArg.substring(stringArg.length() + start);
>>> + }
>>> + else if (args.length == 3) {
>>> + int start = Integer.parseInt(args[1]);
>>> + int end = Integer.parseInt(args[2]);
>>> + if (start >= 0 && start < stringArg.length()
&&
>>> end >= 0 && end <= stringArg.length() && start < end)
>>> + result = stringArg.substring(start, end);
>>> + }
>>> + return result;
>>> + }
>>> +}
>>>
>>>
>>>
>>>
>>> ----------------------------------------------------------------
>>> This is an automated message from the Apache Git Service.
>>> To respond to the message, please log on GitHub and use the
>>> URL above to go to the specific comment.
>>>
>>> For queries about this service, please contact Infrastructure at:
>>> users@infra.apache.org
>>>
>>>
>>> With regards,
>>> Apache Git Services
>>>
>>
>>
>> --
>> Regards,
>> *Shalitha Suranga*
>>
>>
>>
--
Regards,
*Shalitha Suranga*
|