diff options
Diffstat (limited to 'parser.rb')
-rw-r--r--[-rwxr-xr-x] | parser.rb | 53 |
1 files changed, 24 insertions, 29 deletions
diff --git a/parser.rb b/parser.rb index 4e261ba..08cc50c 100755..100644 --- a/parser.rb +++ b/parser.rb @@ -5,23 +5,23 @@ require "pp" require "parslet" include Parslet -class EntryParser < Parslet::Parser +class CassParser < Parslet::Parser root :doc ### Type segments - rule(:hour) { hour_.as(:hour) } - rule(:minute) { minute_.as(:minute) } - rule(:second) { second_.as(:second) } + # rule(:hour) { hour_.as(:hour) } + # rule(:minute) { minute_.as(:minute) } + # rule(:second) { second_.as(:second) } - rule(:year) { year_.as(:year) } - rule(:month) { month_.as(:month) } - rule(:day) { day_.as(:day) } + # rule(:year) { year_.as(:year) } + # rule(:month) { month_.as(:month) } + # rule(:day) { day_.as(:day) } - rule(:time) { time_.as(:time) } - rule(:local) { local_.as(:local) } - rule(:offset) { offset_.as(:offset) } + # rule(:time) { time_.as(:time) } + # rule(:local) { local_.as(:local) } + # rule(:offset) { offset_.as(:offset) } - rule(:date) { date_.as(:date) } + # rule(:date) { date_.as(:date) } rule(:datetime) { date >> str(" ") >> time } rule(:daterange) { start >> str(" -") >> stop } @@ -32,21 +32,21 @@ class EntryParser < Parslet::Parser rule(:doc) { line_.repeat } ### Combinatory segments - rule(:hour_) { digit.repeat(2, 2) } - rule(:minute_) { digit.repeat(2, 2) } - rule(:second_) { digit.repeat(2, 2) } + rule(:hour) { digit.repeat(2, 2) } + rule(:minute) { digit.repeat(2, 2) } + rule(:second) { digit.repeat(2, 2) } - rule(:time_) { local >> offset } - rule(:date_) { year >> str("-") >> month >> str("-") >> day } + rule(:time) { local >> offset } + rule(:date) { year >> str("-") >> month >> str("-") >> day } - rule(:year_) { digit.repeat(4, 4) } - rule(:month_) { digit.repeat(2, 2) } - rule(:day_) { digit.repeat(2, 2) } - - rule(:local_) { hour >> str(":") >> minute >> str(":") >> second } - rule(:offset_) { match("[zZ]") | tnoffset_ } - rule(:poffset_) { str(" ") >> match("[+\-]") } - rule(:tnoffset_) { poffset_ >> hour >> str(":").maybe >> minute } + rule(:year) { digit.repeat(4, 4) } + rule(:month) { digit.repeat(2, 2) } + rule(:day) { digit.repeat(2, 2) } + + rule(:local) { hour >> str(":") >> minute >> str(":") >> second } + rule(:offset) { match("[zZ]") | tnoffset } + rule(:poffset) { str(" ") >> match("[+\-]") } + rule(:tnoffset) { poffset >> hour >> str(":").maybe >> minute } rule(:title_) { text >> str(":") } @@ -61,11 +61,6 @@ class EntryParser < Parslet::Parser rule(:newline) { spaces.maybe >> str("\n") } end -PP.pp EntryParser.new.parse(" -# This is a comment -Bobs Burger: 2019-07-21 21:00:00 +0200 - -") - __END__ # Following is an example of what the `timebox` file format looks like |