Seite 1 von 1

Werteliste/-bereich via commandline übergeben

Verfasst: Samstag 12. April 2014, 11:35
von mutetella
Hallo,

um mehrere Zeiten gleichzeitig zu übergeben, verwende ich derzeit folgende Syntax...

Code: Alles auswählen

$ denkdran 2014.4.12 12:00 till 2014.4.13 and 2014.4.18 till 2014.4.19 9:00 ....
... worin anhand der Schlüsselworte 'till' und 'and' Wertebereiche erkannt und voneinander getrennt werden. Letztlich werden aus diesem Beispiel zwei `DateTimeScope` Objekte:
  • [begin=(2014, 4, 12, 12, 0), end=(2014, 4, 13, 23, 59)]
  • [begin=(2014, 4, 18, 0, 0), end=(2014, 4, 19, 9, 0)]
Nun möchte ich die Kalenderdaten in einem Format abspeichern, wie sie auch per CLI übergeben werden, damit eine Datendatei in gewohnter Weise manuell bearbeitet werden kann. Der Wert für obiges Beispiel würde darin demnach so aussehen:

Code: Alles auswählen

'scopes': '2014.04.12T12:00 till 2014.04.13 and 2014.04.18 till 2014.04.19T09:00'
Ich bin mir jetzt einfach unsicher, ob ich die Lösung mit den Schlüsselworten beibehalten soll oder ob es vielleicht eine etwas elegantere Lösung gibt, die sich gleichermaßen zur Argumentenübergabe als auch zur Speicherung eignet.

mutetella

Re: Werteliste/-bereich via commandline übergeben

Verfasst: Samstag 12. April 2014, 13:15
von snafu
Warum nicht so?

Code: Alles auswählen

denkdran --add='2014.4.12/12:00 - 2014.4.13'
denkdran --add='2014.4.18 - 2014.4.19/9:00'
Das Speichern könnte man im JSON-Format machen:

Code: Alles auswählen

In [24]: entries
Out[24]: 
[{'end': {'date': '2014.04.13', 'time': None},
  'start': {'date': '2014.04.12', 'time': '12:00'}},
 {'end': {'date': '2014.04.19', 'time': '09:00'},
  'start': {'date': '2014.04.18', 'time': None}}]

In [25]: print json.dumps(entries, indent=2)
[
  {
    "start": {
      "date": "2014.04.12", 
      "time": "12:00"
    }, 
    "end": {
      "date": "2014.04.13", 
      "time": null
    }
  }, 
  {
    "start": {
      "date": "2014.04.18", 
      "time": null
    }, 
    "end": {
      "date": "2014.04.19", 
      "time": "09:00"
    }
  }
]
Natürlich kann es nicht schaden, den Terminen auch Namen zu geben. Vermutlich hast du diese aber nur wegen dem Minimalbeispiel weggelassen, oder?