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