그래서 해시에서 데이터를 확인하기 위해 정규 표현식을 작성하려고합니다. YAML 파일에서 정의를 가져옵니다. 지금은 좀 지저분하지만 나중에 리팩토링 될 것입니다.YAML 파일의 정규식이 루비의 해시 값과 비교됩니다.
해시 내의 값을 확인하고 싶습니다. 입력 파일과 YAML 파일을 구문 분석 할 수 있습니다.
는 여기 함수의 일부, 여기 내 YAML
:pmt_sum:
- Type: NUMBER
- Expected: !ruby/regexp '/\d*/'
의 점검을 수행해야하는데 코드의 그 해시를 반복 (header_def
은 해시) :
header_def.each { |key, value|
if parsed_hash[0][key] != value[2]["Expected"]
puts "#{key} value does not match #{value[1]["Expected"]}, it returned #{parsed_hash[0][key]"
else
puts "working as intended"
end
}
hash[0][key]
입력 파일에서 :pmt_sum
키를 꺼내고 YAML에있는 내용과 일치하지 않으면 메시지를 출력합니다. 이것은 내가 정규식을 사용하려고하지만 경우에,이 뱉어, 나는 하드 코드 아무것도 작동합니다
pmt_sum value does not match (?-mix:\d*), it returned 7
사람이 YAML 파일에서 루비 프로그램에 정규식 전달에 대한 도움말이 있습니까?
편집 : 무시, 값의 클래스 [2] [ "Expected"]를 확인하기 위해 case 문을 사용하여 수정하고 Regexp 일 때 .match를 사용했습니다. 그래도 도와 줘서 고마워!
Ruby 정규식을 YAML 파일에 저장하는 대신 문자열로 저장 한 다음 YAML을 읽은 후 변환하려면'/ # {string} /'또는'Regexp.new (string)'을 사용하십시오 . 이를 통해 YAML은 다른 언어로 이식 할 수 있습니다. –
'header_def'가 없으면 어디에 문제가 있는지 알기가 어렵습니다. 그것의 최소 버전을 제공하십시오. –