Skip to content

Instantly share code, notes, and snippets.

@trystant
Created July 7, 2009 21:07
Show Gist options
  • Save trystant/142372 to your computer and use it in GitHub Desktop.
Save trystant/142372 to your computer and use it in GitHub Desktop.
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