@Override public NodeValue eval(NodeValue lang, NodeValue pattern) { return NodeFunctions.langMatches(lang, pattern) ; }
@Override public NodeValue exec(NodeValue v1, NodeValue v2) { return NodeFunctions.langMatches(NodeFunctions.lang(v1), v2) ; }
/** LANGMATCHES * * @param nv The language string * @param nvPattern The pattern to match against * @return Boolean nodeValue */ public static NodeValue langMatches(NodeValue nv, NodeValue nvPattern) { return langMatches(nv, nvPattern.getString()) ; }
bestLang = i; else if(lang.contains("-") && NodeFunctions.langMatches(lang, langi) && label == null) { label = literal;
/** LANGMATCHES * * @param nv The language string * @param langPattern The pattern to match against * @return Boolean nodeValue */ public static NodeValue langMatches(NodeValue nv, String langPattern) { Node node = nv.asNode() ; if ( !node.isLiteral() ) { NodeValue.raise(new ExprTypeException("langMatches: not a literal: " + node)) ; return null ; } String langStr = node.getLiteralLexicalForm() ; return NodeValue.booleanReturn(langMatches(langStr, langPattern)); }
@Test public void testLangMatches4() { NodeValue nv = NodeValue.makeString("en-gb") ; NodeValue pat = NodeValue.makeString("en") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.TRUE, r) ; }
@Test public void testLangMatches6() { NodeValue nv = NodeValue.makeString("x-y-z") ; NodeValue pat = NodeValue.makeString("x") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.TRUE, r) ; }
@Test public void testLangMatches10() { // The language-match of "" is not a legal by RFC 4647 but useful for language tags of "" NodeValue nv = NodeValue.makeString("en") ; NodeValue pat = NodeValue.makeString("") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.FALSE, r) ; }
@Test public void testLangMatches9() { // The language-match of "" is not a legal by RFC 4647 but useful for language tags of "" NodeValue nv = NodeValue.makeString("") ; NodeValue pat = NodeValue.makeString("") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.TRUE, r) ; }
@Test public void testLangMatches3() { NodeValue nv = NodeValue.makeString("en-gb") ; NodeValue pat = NodeValue.makeString("en-gb") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.TRUE, r) ; }
@Test public void testLangMatches5() { NodeValue nv = NodeValue.makeString("abc") ; NodeValue pat = NodeValue.makeString("*") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.TRUE, r) ; }
@Test public void testLangMatches7() { NodeValue nv = NodeValue.makeString("x") ; NodeValue pat = NodeValue.makeString("x-y-z") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.FALSE, r) ; }
@Test public void testLangMatches8() { // The language tag of a plain literal is "" // A language tag is not allowed to be the empty string (by RFC 3066) NodeValue nv = NodeValue.makeString("") ; NodeValue pat = NodeValue.makeString("*") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.FALSE, r) ; }
@Test public void testLangMatches1() { NodeValue nv = NodeValue.makeString("en") ; NodeValue pat = NodeValue.makeString("en") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.TRUE, r) ; assertFalse(NodeValue.FALSE.equals(r)) ; }
@Test public void testLangMatches2() { NodeValue nv = NodeValue.makeString("en") ; NodeValue pat = NodeValue.makeString("fr") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.FALSE, r) ; assertFalse(NodeValue.TRUE.equals(r)) ; }