From 926d7ec544b5a728747d15c1946f45f2cec0e4e2 Mon Sep 17 00:00:00 2001 From: Guillaume DOTT Date: Thu, 3 Oct 2013 11:14:28 +0200 Subject: [PATCH] Add count on repeat when at least one occurence is required --- lib/biju/parser.rb | 18 ++++++++++-------- lib/biju/pdu.rb | 8 ++++---- lib/biju/pdu/encoding/gsm7bit.rb | 2 +- lib/biju/pdu/encoding/ucs2.rb | 4 +++- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/lib/biju/parser.rb b/lib/biju/parser.rb index 4d46530..5cc6658 100644 --- a/lib/biju/parser.rb +++ b/lib/biju/parser.rb @@ -26,11 +26,11 @@ module Biju rule(:mgl) do (str('+CMGL').as(:cmd) >> str(': ') >> infos >> crlf >> message >> crlf) - .repeat.as(:sms) >> crlf + .repeat(1).as(:sms) >> crlf end rule(:num) do (str('+CNUM').as(:cmd) >> str(': ') >> array >> crlf) - .repeat.as(:phone_numbers) >> crlf >> crlf + .repeat(1).as(:phone_numbers) >> crlf >> crlf end rule(:mgf) do str('+CMGF').as(:cmd) >> str(': ') >> boolean.as(:result) >> crlf >> crlf @@ -42,7 +42,7 @@ module Biju str('+CMGS').as(:cmd) >> str(': ') >> int.as(:result) >> crlf >> crlf end rule(:generic_response) do - match('[^:]').repeat.as(:cmd) >> str(': ') >> array >> + match('[^:]').repeat(1).as(:cmd) >> str(': ') >> array >> crlf >> crlf end @@ -52,7 +52,7 @@ module Biju rule(:data) { (str('(') >> array >> str(')')) | info } rule(:infos) { (info >> (comma >> info).repeat).as(:infos) } rule(:info) { datetime | string | int | empty_string } - rule(:message) { match('[0-9A-Fa-f]').repeat.as(:message) } + rule(:message) { match('[0-9A-Fa-f]').repeat(1).as(:message) } # MISC rule(:status) { (ok | error).as(:status) } @@ -84,20 +84,22 @@ module Biju class ATTransform < Parslet::Transform rule(prompt: simple(:prompt)) { { prompt: true } } rule(cmd: simple(:cmd), infos: subtree(:infos), message: simple(:message)) do - {cmd: cmd.to_s, infos: infos, message: message.to_s} + { cmd: cmd.to_s, infos: infos, message: message.to_s } end rule(cmd: simple(:cmd), array: subtree(:array)) do - {cmd: cmd.to_s, array: array} + { cmd: cmd.to_s, array: array } end rule(cmd: simple(:cmd), result: simple(:result)) do - {cmd: cmd.to_s, result: result} + { cmd: cmd.to_s, result: result } end rule(empty_string: simple(:empty_string)) { '' } rule(int: simple(:int)) { int.to_i } rule(boolean: simple(:boolean)) { boolean.to_i > 0 } rule(string: simple(:string)) { string.to_s } - rule(datetime: simple(:datetime)) { DateTime.strptime(datetime.to_s, "%y/%m/%d,%T%Z") } + rule(datetime: simple(:datetime)) do + DateTime.strptime(datetime.to_s, '%y/%m/%d,%T%Z') + end rule(array: subtree(:array)) { array } rule(status: simple(:status)) { { status: status } } diff --git a/lib/biju/pdu.rb b/lib/biju/pdu.rb index 15b40d4..d6a7ba3 100644 --- a/lib/biju/pdu.rb +++ b/lib/biju/pdu.rb @@ -24,13 +24,13 @@ module Biju '%02x' % first_octet.binary, # TP-Message-Reference '00', - "%02x" % phone_number.length, - "%02x" % phone_number.type_of_address.hex, + '%02x' % phone_number.length, + '%02x' % phone_number.type_of_address.hex, phone_number.number, # TP-PID: Protocol identifier '00', - "%02x" % user_data.encoding.hex, - "%02x" % user_data.length, + '%02x' % user_data.encoding.hex, + '%02x' % user_data.length, user_data.message ].join end diff --git a/lib/biju/pdu/encoding/gsm7bit.rb b/lib/biju/pdu/encoding/gsm7bit.rb index 758b063..242c612 100644 --- a/lib/biju/pdu/encoding/gsm7bit.rb +++ b/lib/biju/pdu/encoding/gsm7bit.rb @@ -38,7 +38,7 @@ module Biju # Only keep the bits for the current character and # add relevant bits from the previous octet # to get the full septet and decode the current character - current = ((octet & (2 ** (7 - index) - 1)) << index) | next_char + current = ((octet & (2**(7 - index) - 1)) << index) | next_char res = add_char(res, current) current_length += 1 diff --git a/lib/biju/pdu/encoding/ucs2.rb b/lib/biju/pdu/encoding/ucs2.rb index f557965..a5360f6 100644 --- a/lib/biju/pdu/encoding/ucs2.rb +++ b/lib/biju/pdu/encoding/ucs2.rb @@ -9,7 +9,9 @@ module Biju def self.encode(string) [ - string.encode('UCS-2BE').chars.map { |char| "%04x" % char.ord }.join, + string.encode('UCS-2BE').chars.map do |char| + '%04x' % char.ord + end.join, length: string.length * 2, ] end