Fix ESC/POS notation parser: '#' only starts a comment as its own token
deploy / deploy (push) Successful in 9s
deploy / deploy (push) Successful in 9s
Stripping from the first '#' anywhere in the line ate content like '#5 Fix thing' (an issue reference) entirely, since it starts with '#' with no preceding whitespace. Comments now only trigger on a standalone '#' token (i.e. whitespace on both sides), matching the documented examples.
This commit is contained in:
1 parent
f09c92f201
commit
790d716d57
1 file changed
+13
-7
@@ -117,17 +117,23 @@ helpers do
|
||||
# Hello # literal text
|
||||
# LF
|
||||
# GS k 0x03 12345678 0x00
|
||||
# Each `#...` trailing comment is stripped, then each line's
|
||||
# whitespace-separated tokens become either a known control mnemonic, a
|
||||
# raw `0xNN` byte, or literal text (CP852-encoded) -- consecutive literal
|
||||
# tokens are rejoined with a single space so plain prose still reads
|
||||
# correctly, while whitespace around control/byte tokens is dropped since
|
||||
# those are just for human readability, not printer output.
|
||||
# A trailing comment is only a comment when "#" is its own
|
||||
# whitespace-separated token -- not just stripped from the first "#"
|
||||
# anywhere in the line, which would mangle literal text like "#5 Fix
|
||||
# thing" (an issue reference, not a comment). Each remaining token
|
||||
# becomes a known control mnemonic, a raw `0xNN` byte, or literal text
|
||||
# (CP852-encoded) -- consecutive literal tokens are rejoined with a
|
||||
# single space so plain prose still reads correctly, while whitespace
|
||||
# around control/byte tokens is dropped since those are just for human
|
||||
# readability, not printer output.
|
||||
def parse_escpos_notation(text)
|
||||
bytes = "".b
|
||||
text.each_line do |line|
|
||||
prev_was_text = false
|
||||
line.sub(/#.*/, '').split.each do |token|
|
||||
tokens = line.split
|
||||
comment_at = tokens.index('#')
|
||||
tokens = tokens[0...comment_at] if comment_at
|
||||
tokens.each do |token|
|
||||
if ESCPOS_MNEMONICS.key?(token)
|
||||
bytes << ESCPOS_MNEMONICS[token]
|
||||
prev_was_text = false
|
||||
|
||||
Reference in new issue
Block a user