To check for an API / html tag support on various browsers and mobile devices. E.g.
http://caniuse.com/filesystem
http://caniuse.com/filesystem
String regexDecimal = "(\\d+(\\.\\d+)?)";
String regexPT = regexDecimal + "pt";
String regexPX = regexDecimal + "px";
String regexCSS = "\\s*:\\s*";
String convert( String line, String regX, float convertFactor, String suffix )
{
Pattern pt = Pattern.compile( regX, Pattern.CASE_INSENSITIVE );
Matcher ptMatcher = pt.matcher( line );
StringBuffer s = new StringBuffer();
while( ptMatcher.find() )
{
float i = Float.parseFloat( ptMatcher.group( 1 ) );
float f = i / convertFactor;
String em = String.format( "%.3f", Float.valueOf( f ) ) + suffix;
ptMatcher.appendReplacement( s, em );
}
ptMatcher.appendTail( s );
return s.toString();
}
String input = "font-size: 12pt; hello 12pt; 12.0pt convert another14pt16px8px:"; convert( input, regexPT, (float) 0.75, "px" );
String line = "font-size: 12pt;";
convertCSS( line, "font-size:" + regexCSS,
regexPX, (float) 16.0, "em" );
String convertCSS( String line, String style, String regX, float convertFactor, String suffix )
{
Pattern pt1 = Pattern.compile( "(" + style + ")", Pattern.CASE_INSENSITIVE );
Matcher pt1Matcher = pt1.matcher( line );
boolean regXMatches = false;
StringBuffer s = new StringBuffer();
while( pt1Matcher.find() )
{
Pattern pt = Pattern.compile( regX, Pattern.CASE_INSENSITIVE );
Matcher ptMatcher = pt.matcher( line );
while( ptMatcher.find() )
{
float i = Float.parseFloat( ptMatcher.group( 1 ) );
float f = i / convertFactor;
String em = String.format( "%.3f", Float.valueOf( f ) ) + suffix;
ptMatcher.appendReplacement( s, em );
}
ptMatcher.appendTail( s );
regXMatches = true;
}
if( !regXMatches )
{
pt1Matcher.appendTail( s );
}
return s.toString();
}