-
Notifications
You must be signed in to change notification settings - Fork 56
Class Separator
Ori Roth edited this page Apr 2, 2017
·
3 revisions
public final class Separator {
/*
* Forge (2)
*/
Separator(char c);
Separator(String s);
/*
* Type (1)
*/
String toString();
/*
* Utilities (4)
*/
static boolean isEmpty(Iterable<T> items);
static String wrap(String wrap, Iterable<T> items, String between);
static String wrap(String begin, String end, Iterable<T> items, String between);
static String wrap(String begin, String end, T[] items, String between);
}
Input types: Iterable.
// SSDLPedia
package il.ac.technion.cs.ssdl.utils;
import il.ac.technion.cs.ssdl.stereotypes.Instantiable;
import edu.umd.cs.findbugs.annotations.NonNull;
/**
* A class representing a separator string, which can be used for separating
* elements of a sequence while printing it, without special case treatment of
* the first or last element. For example, the following program prints a list
* of its arguments separated by commas, without using any conditionals.
static void main(String[] args) {
Separator s = new Separator(", ");
for (String a : args)
System.out.print(s + a);
}
* Author: Yossi Gil (
* See: 12/02/2006)
*/
@Instantiable public final class Separator {
private final String s;
boolean first = true;
public Separator(final char c) {
s = "" + c;
}
public Separator(final String s) {
this.s = s;
}
@Override public String toString() {
if (!first)
return s;
first = false;
return "";
}
public static <T> boolean isEmpty(final Iterable<T> items) {
return !items.iterator().hasNext();
}
public static <T> String wrap(final String wrap, final Iterable<T> items, final String between) {
return wrap(wrap, wrap, items, between);
}
public static <T> String wrap(final String begin, final String end, final Iterable<T> items, final String between) {
if (isEmpty(items))
return "";
String $ = begin;
final Separator s = new Separator(between);
for (final T t : items)
$ += s + t.toString();
return $ + end;
}
public static <T> String wrap(@NonNull final String begin, @NonNull final String end, @NonNull final T[] items,
final String between) {
if (items.length == 0)
return "";
String $ = begin;
final Separator s = new Separator(between);
for (final T t : items)
$ += s + t.toString();
return $ + end;
}
static void main(final String[] args) {
final Separator s = new Separator(", ");
for (final String a : args)
System.out.print(s + a);
}
}
Metric | Value | Acronym | Explanation |
---|---|---|---|
LOC | 78 | Lines Of Code | Total number of lines in the code |
SCC | 24 | SemiColons Count | Total number of semicolon tokens found in the code. |
NOT | 375 | Number Of Tokens | Comments, whitespace and text which cannot be made into a token not included. |
VCC | 1651 | Visible Characters Count | The total number of non-white (i.e., not space, tab, newline, carriage return, form feed) characters. |
CCC | 1157 | Code Characters Count | Total number of non-white characters in tokens. White space characters in string and character literals are not counted. |
UIC | 38 | Unique Identifiers Count | The number of different identifiers found in the code |
WHC | 3 | Weighted Horizontal Complexity | A heuritistic on horizontal complexity |
Statitic | Value |
---|---|
Average token length | 3.1 |
Tokens/line | 4.8 |
Visible characters/line | 21 |
Code characters/line | 15 |
Semicolons/tokens | 6% |
Comment text percentage | 29% |
Token Kind | Occurrences |
---|---|
KEYWORD | 65 |
OPERATOR | 34 |
LITERAL | 6 |
ID | 138 |
PUNCTUATION | 132 |
COMMENT | 2 |
OTHER | 209 |