58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/packcr/generated/node/string_node.rb', line 58
def get_one_code(gen, onfail, indent, unwrap, oncut, n)
case gen.lang
when :c
erbout = +""
erbout << "if (\n packcr_refill_buffer(ctx, 1) < 1 ||\n ctx->buffer.buf[ctx->position_offset] != '#{Packcr.escape_character(value[0])}'\n) goto L#{format("%04d", onfail)};\n".freeze
if gen.location
erbout << " packcr_location_forward(&ctx->position_offset_loc, ctx->buffer.buf + ctx->position_offset, 1);\n".freeze
end
erbout << "ctx->position_offset++;\n".freeze
erbout
when :rb
erbout = +""
erbout << "if (\n refill_buffer(1) < 1 ||\n @buffer[@position_offset] != \"#{Packcr.escape_character(value[0])}\"\n)\n throw(#{onfail})\nend\n".freeze
if gen.location
erbout << "@position_offset_loc = @position_offset_loc.forward(@buffer, @position_offset, 1)\n".freeze
end
erbout << "@position_offset += 1\n".freeze
erbout
when :rs
erbout = +""
erbout << "if self.input.refill_buffer(1) < 1\n || !self.input.buffer[self.input.position_offset..].starts_with(\"#{Packcr.escape_character(value[0])}\")\n{\n return throw(#{onfail});\n}\n".freeze
if gen.location
erbout << "TODO\n".freeze
end
erbout << "self.input.position_offset += 1;\n".freeze
erbout
else
raise "unknown lang #{gen.lang}"
end
end
|