lib/kwalify/yaml-parser.rb in kwalify-0.6.0 vs lib/kwalify/yaml-parser.rb in kwalify-0.6.1

- old
+ new

@@ -1,8 +1,8 @@ ### ### $Rev: 51 $ -### $Release: 0.6.0 $ +### $Release: 0.6.1 $ ### copyright(c) 2005 kuwata-lab all rights reserved. ### require 'kwalify/messages' require 'kwalify/errors' @@ -40,11 +40,11 @@ end def parse() data = parse_child(0) - if data == nil && @end_flag == '---' + if data.nil? && @end_flag == '---' data = parse_child(0) end resolve_aliases(data) unless @aliases.empty? return data end @@ -145,12 +145,12 @@ def _getchar @index += 1 ch = @sbuf[@index] - while ch == nil - break if (line = getline()) == nil + while ch.nil? + break if (line = getline()).nil? reset_sbuf(line) @index += 1 ch = @sbuf[@index] end return ch @@ -236,22 +236,22 @@ getchar() data = parse_flow(0) ch = current_char assert ch == ?] || ch == ?} ch = getchar_or_nl() - unless ch == ?\n || ch == ?# || ch == nil + unless ch == ?\n || ch == ?# || ch.nil? #* key=:flow_hastail msg="flow style sequence is closed but got '%s'." raise syntax_error(:flow_hastail, [ch.chr]) end - getline() if ch != nil + getline() unless ch.nil? return data end def parse_flow(depth) ch = current_char() #ch = getchar() - if ch == nil + if ch.nil? #* key=:flow_eof msg="found EOF when parsing flow style." rase syntax_error(:flow_eof) end if ch == ?[ data = parse_flow_seq(depth) @@ -340,11 +340,36 @@ def parse_flow_scalar(depth) case ch = current_char() when ?", ?' #" endch = ch s = '' - while (ch = _getchar()) != nil && ch != endch - s << ch.chr + while !(ch = _getchar()).nil? && ch != endch + if ch == ?\\ + ch = _getchar() + if ch.nil? + #* key=:flow_str_notclosed msg="%s: string not closed." + raise syntax_error(:flow_str_notclosed, endch == ?" ? "'\"'" : '"\'"') + end + if endch == ?" + case ch + when ?\\ ; s << "\\" + when ?" ; s << "\"" + when ?n ; s << "\n" + when ?r ; s << "\r" + when ?t ; s << "\t" + when ?b ; s << "\b" + else ; s << "\\" << ch.chr + end + elsif endch == ?' + case ch + when ?\\ ; s << '\\' + when ?' ; s << '\'' + else ; s << '\\' << ch.chr + end + end + else + s << ch.chr + end end getchar() scalar = s else s = ch.chr