Advertisement
MarkDPaste

Simple config parser

Mar 5th, 2012
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Vala 1.25 KB | None | 0 0
  1. public abstract class parseType : Object {
  2.     public string label { get; protected construct; }
  3.     public bool haveData { get; protected set; default=false; }
  4.     public abstract bool parse(string data);
  5. }
  6.  
  7. public class parseInt : parseType {
  8.     public parseInt(string newLabel) {
  9.         Object(label: newLabel);
  10.     }
  11.     public int value { get; private set; default = 0; }
  12.  
  13.     public override bool parse(string data) {
  14.         value = int.parse(data);
  15.         haveData = true;
  16.         return true;    // Data is good
  17.     }
  18. }
  19.  
  20. public class parseString : parseType {
  21.     public parseString(string newLabel) {
  22.         Object(label: newLabel);
  23.     }
  24.     public string value { get; private set; default = ""; }
  25.  
  26.     public override bool parse(string data) {
  27.         value = data;
  28.         haveData = true;
  29.         return true;
  30.     }
  31. }
  32.  
  33.  
  34. int
  35. main(string[] args) {
  36.  
  37.     parseInt pi = new parseInt("retries");
  38.     parseString ps = new parseString("interfaces");
  39.  
  40.     parseType[] parseTable = { pi, ps };
  41.  
  42.     string data = "retries 23";
  43.  
  44.     foreach (parseType p in parseTable) {
  45.         if (p.label == data[0:p.label.length]) {
  46.             p.parse(data[p.label.length+1:data.length]);
  47.         }
  48.     }
  49.  
  50.     if (pi.haveData) { stdout.printf("%s is %d\n", pi.label, pi.value); }
  51.     if (ps.haveData) { stdout.printf("%s is %s\n", ps.label, ps.value); }
  52.  
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement