Created
July 7, 2009 21:07
-
-
Save trystant/142372 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
grammar ThingFeed | |
rule thing_file | |
thing_header thing_feed_body+ footer | |
end | |
rule thing_header | |
file_version_number pipe header_value pipe feed_id pipe feed_type pipe source pipe feed_date pipe results_file_name pipe record_count newline | |
end | |
rule thing_feed_body | |
recording_sequence pipe event_id pipe client_product_code pipe credit_card_account_id pipe customer_member_number pipe thing_name pipe points newline | |
end | |
rule thing_name | |
'ONP' { | |
def value | |
valid_regexes = [/ONP/,/OFP/,/SRE/,/FST/,/S6E[0-9]/,/ADJ/] | |
if valid_regexes.select{|regex| regex.match(value) }.size > 0 | |
text_value | |
end | |
end | |
} | |
/ | |
'OFP' { | |
def value | |
valid_regexes = [/ONP/,/OFP/,/SRE/,/FST/,/S6E[0-9]/,/ADJ/] | |
if valid_regexes.select{|regex| regex.match(value) }.size > 0 | |
text_value | |
end | |
end | |
} | |
/ | |
'SRE' { | |
def value | |
valid_regexes = [/ONP/,/OFP/,/SRE/,/FST/,/S6E[0-9]/,/ADJ/] | |
if valid_regexes.select{|regex| regex.match(value) }.size > 0 | |
text_value | |
end | |
end | |
} | |
/ | |
'FST' { | |
def value | |
valid_regexes = [/ONP/,/OFP/,/SRE/,/FST/,/S6E[0-9]/,/ADJ/] | |
if valid_regexes.select{|regex| regex.match(value) }.size > 0 | |
text_value | |
end | |
end | |
} | |
/ | |
'S6E' number+ { | |
def value | |
valid_regexes = [/ONP/,/OFP/,/SRE/,/FST/,/S6E[0-9]/,/ADJ/] | |
if valid_regexes.select{|regex| regex.match(value) }.size > 0 | |
text_value | |
end | |
end | |
} | |
/ | |
'ADJ' { | |
def value | |
valid_regexes = [/ONP/,/OFP/,/SRE/,/FST/,/S6E[0-9]/,/ADJ/] | |
if valid_regexes.select{|regex| regex.match(value) }.size > 0 | |
text_value | |
end | |
end | |
} | |
end | |
rule points | |
number+ | |
end | |
rule footer | |
'End' newline | |
end | |
rule alpha | |
[a-zA-Z] | |
end | |
rule email_address | |
[a-zA-Z\-_.0-9]+ '@' [a-zA-Z\-_.0-9]+ | |
end | |
rule newline | |
[\n] | |
end | |
rule number | |
[0-9] | |
end | |
rule pipe | |
'|' | |
end | |
rule string | |
[a-zA-Z .-_] | |
end | |
rule feed_type | |
'Thing' | |
end | |
rule results_file_name | |
'ThingFeed.' number+ '_' number+ '.Result.txt' | |
end | |
rule client_product_code | |
'XYZ' | |
end | |
rule credit_card_account_id | |
number+ | |
end | |
rule customer_member_number | |
number+ | |
end | |
rule event_id | |
number+ | |
end | |
rule recording_sequence | |
number+ | |
end | |
rule feed_date | |
number+ '_' number+ | |
end | |
rule feed_id | |
number+ | |
end | |
rule file_version_number | |
'V1.0' | |
end | |
rule header_value | |
'Begin' | |
end | |
rule record_count | |
number+ | |
end | |
rule source | |
alpha+ | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment