diff --git a/src/main/java/moe/nekojimi/chords/Format.java b/src/main/java/moe/nekojimi/chords/Format.java index 5df439a..0e26778 100644 --- a/src/main/java/moe/nekojimi/chords/Format.java +++ b/src/main/java/moe/nekojimi/chords/Format.java @@ -18,8 +18,6 @@ import javax.json.JsonObject; class Format { - private static final Pattern SIZE_PATTERN = Pattern.compile("\\b([0-9]+\\.?[0-9]*)([kkMmGg])i?[bB]\\b"); - private static final Pattern SAMPLE_RATE_PATTERN = Pattern.compile("\\b([0-9]+)k(b(ps?))?\\b"); private final String code; private final String extension; @@ -97,29 +95,9 @@ class Format return size; // try to find eg. "1.32MiB" inside note - Matcher matcher = SIZE_PATTERN.matcher(note); - if (matcher.find()) - { - double value = Double.parseDouble(matcher.group(1)); - String mag = matcher.group(2).toUpperCase(); - long mult = 1; - switch (mag) - { - case "K": - mult = 1024; - break; - case "M": - mult = 1024 * 1024; - break; - case "G": - mult = 1024 * 1024 * 1024; - break; - } - value *= mult; - return (long) value; - - } - return -1; + long size = Util.parseSize(note); + + return size; } public int getSampleRate() @@ -128,12 +106,7 @@ class Format return samplerate; // try to find eg. "51k" inside note - Matcher matcher = SAMPLE_RATE_PATTERN.matcher(note); - if (matcher.find()) - { - return Integer.parseInt(matcher.group(1)) * 1000; - } - return -1; + return Util.parseSampleRate(note); } public void setSampleRate(int samplerate) diff --git a/src/main/java/moe/nekojimi/chords/Util.java b/src/main/java/moe/nekojimi/chords/Util.java index 2c181ba..631d837 100644 --- a/src/main/java/moe/nekojimi/chords/Util.java +++ b/src/main/java/moe/nekojimi/chords/Util.java @@ -1,6 +1,8 @@ package moe.nekojimi.chords; import java.nio.ByteBuffer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /* * Copyright (C) 2022 jimj316 @@ -25,6 +27,10 @@ import java.nio.ByteBuffer; */ public class Util { + + private static final Pattern SIZE_PATTERN = Pattern.compile("\\b([0-9]+\\.?[0-9]*)([kkMmGg])i?[bB]\\b"); + private static final Pattern SAMPLE_RATE_PATTERN = Pattern.compile("\\b([0-9]+)k(b(ps?))?\\b"); + public static String printSamples(ByteBuffer buf) { StringBuilder sb = new StringBuilder(); @@ -34,4 +40,41 @@ public class Util } return sb.toString(); } + + public static int parseSampleRate(String input) + { + Matcher matcher = SAMPLE_RATE_PATTERN.matcher(input); + if (matcher.find()) + { + return Integer.parseInt(matcher.group(1)) * 1000; + } + return -1; + } + + public static long parseSize(String note) + { + Matcher matcher = SIZE_PATTERN.matcher(note); + if (matcher.find()) + { + double value = Double.parseDouble(matcher.group(1)); + String mag = matcher.group(2).toUpperCase(); + long mult = 1; + switch (mag) + { + case "K": + mult = 1024; + break; + case "M": + mult = 1024 * 1024; + break; + case "G": + mult = 1024 * 1024 * 1024; + break; + } + value *= mult; + return (long) value; + + } + return -1L; + } }