From 20d6b65346ae4acb3bc0d89b37cfb25b4648842c Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Thu, 15 Aug 2024 22:01:50 -0300 Subject: [PATCH] More idiomatic --- src/bytes_regex.cr | 14 +++++++------- src/rules.cr | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/bytes_regex.cr b/src/bytes_regex.cr index 1345ad3..701cdf8 100644 --- a/src/bytes_regex.cr +++ b/src/bytes_regex.cr @@ -31,7 +31,6 @@ module BytesRegex end def match(str : Bytes, pos = 0) : Array(Match) - match = [] of Match rc = LibPCRE2.match( @re, str, @@ -42,18 +41,19 @@ module BytesRegex nil) if rc > 0 ovector = LibPCRE2.get_ovector_pointer(@match_data) - (0...rc).each do |i| + (0...rc).map do |i| m_start = ovector[2 * i] - m_size = ovector[2 * i + 1] - m_start - if m_size == 0 + m_end = ovector[2 * i + 1] + if m_start == m_end m_value = Bytes.new(0) else - m_value = str[m_start...m_start + m_size] + m_value = str[m_start...m_end] end - match << Match.new(m_value, m_start, m_size) + Match.new(m_value, m_start, m_end - m_start) end + else + [] of Match end - match end end diff --git a/src/rules.cr b/src/rules.cr index 4de1d61..dc07899 100644 --- a/src/rules.cr +++ b/src/rules.cr @@ -38,7 +38,7 @@ module Tartrazine # No match return false, pos, [] of Token if match.size == 0 - return true, pos + match[0].size, actions.flat_map { |action| action.emit(match, lexer) } + return true, pos + match[0].size, actions.flat_map(&.emit(match, lexer)) end def initialize(node : XML::Node) @@ -80,7 +80,7 @@ module Tartrazine NO_MATCH = [] of Match def match(text, pos, lexer) : Tuple(Bool, Int32, Array(Token)) - return true, pos, actions.flat_map { |action| action.emit(NO_MATCH, lexer) } + return true, pos, actions.flat_map(&.emit(NO_MATCH, lexer)) end def initialize(node : XML::Node)