aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/ExtFmt.rs47
-rw-r--r--src/lib/std.rc1
2 files changed, 48 insertions, 0 deletions
diff --git a/src/lib/ExtFmt.rs b/src/lib/ExtFmt.rs
new file mode 100644
index 00000000..15f7ff83
--- /dev/null
+++ b/src/lib/ExtFmt.rs
@@ -0,0 +1,47 @@
+tag signedness {
+ signed;
+ unsigned;
+}
+
+tag caseness {
+ case_upper;
+ case_lower;
+}
+
+tag ty {
+ ty_bool;
+ ty_str;
+ ty_char;
+ ty_int(signedness);
+ ty_bits;
+ ty_hex(caseness);
+ // FIXME: More types
+}
+
+tag flag {
+ flag_left_justify;
+ flag_left_zero_pad;
+ flag_left_space_pad;
+ flag_plus_if_positive;
+ flag_alternate;
+}
+
+tag count {
+ count_is(int);
+ count_is_param(int);
+ count_is_next_param;
+ count_implied;
+}
+
+// A formatted conversion from an expression to a string
+type conv = rec(option.t[int] param,
+ vec[flag] flags,
+ count width,
+ count precision,
+ ty ty);
+
+// A fragment of the output sequence
+tag piece {
+ piece_string(str);
+ piece_conv(conv);
+}
diff --git a/src/lib/std.rc b/src/lib/std.rc
index b530bd7f..67a41dad 100644
--- a/src/lib/std.rc
+++ b/src/lib/std.rc
@@ -83,6 +83,7 @@ mod sort;
mod sha1;
mod ebml;
mod UFind;
+mod ExtFmt;
// Local Variables:
// mode: rust;