codec 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/codec.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.email = ["bernard.rodier@gmail.com"]
9
9
  spec.description = %q{Generic Coder Decoder Tool}
10
10
  spec.summary = %q{This Gem provide class that permit to instantiate Codec to parse or build any protocol}
11
- spec.homepage = ""
11
+ spec.homepage = "https://github.com/brodier/codec"
12
12
  spec.license = "MIT"
13
13
 
14
14
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
data/lib/codec/base.rb CHANGED
@@ -12,12 +12,12 @@ module Codec
12
12
  return f
13
13
  end
14
14
 
15
- def parse_with_length(buf,length)
15
+ def decode_with_length(buf,length)
16
16
  init_data(buf,length)
17
17
  return build_field,@remain
18
18
  end
19
19
 
20
- def parse(buf)
20
+ def decode(buf)
21
21
  init_data(buf,@length)
22
22
  return build_field,@remain
23
23
  end
data/lib/codec/fix.rb ADDED
@@ -0,0 +1,48 @@
1
+ module Codec
2
+ class Numbin < Base
3
+ def build_field
4
+ f = Field.new(@id)
5
+ res = 0
6
+ @data.unpack("C*").each{ |ubyte|
7
+ res *= 256
8
+ res += ubyte
9
+ }
10
+ f.set_value(res)
11
+ return f
12
+ end
13
+ end
14
+
15
+
16
+
17
+ class Numstr < Base
18
+ def build_field
19
+ f = Field.new(@id)
20
+ # Force conversion of ebcdic number to ascii number
21
+ if IsEbcdic(@data)
22
+ @data = Ebcdic2Ascii(@data)
23
+ end
24
+
25
+ f.set_value(@data.to_i)
26
+ return f
27
+ end
28
+ end
29
+
30
+ class String < Base
31
+ def build_field
32
+ f = Field.new(@id)
33
+ if IsEbcdic(@data)
34
+ @data = Ebcdic2Ascii(@data)
35
+ end
36
+ f.set_value(@data)
37
+ return f
38
+ end
39
+ end
40
+
41
+ class Binary < Base
42
+ def build_field
43
+ f = Field.new(@id)
44
+ f.set_value(@data.unpack("H*").first.upcase)
45
+ return f
46
+ end
47
+ end
48
+ end
data/lib/codec/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Codec
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/codec.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'log4r'
2
2
  require 'codec/version'
3
- require 'codec/fields'
3
+ require 'codec/field'
4
4
  require 'codec/exceptions'
5
5
  require 'codec/base'
6
- # require 'codec/fix'
6
+ require 'codec/fix'
7
7
  # require 'codec/packed'
8
8
  # require 'codec/prefixed'
9
9
  # require 'codec/composed'
@@ -21,8 +21,8 @@ module Codec
21
21
  end
22
22
 
23
23
 
24
- def self.register_protocol(ProtocolClass)
25
- protocols << ProtocolClass
24
+ def self.register_protocol(protocol)
25
+ protocols << protocol
26
26
  return protocols
27
27
  end
28
28
 
@@ -0,0 +1,16 @@
1
+ require_relative '../../test_helper'
2
+
3
+ describe Codec::Numbin do
4
+ subject { Codec::Numbin.new('Test',4) }
5
+
6
+ it "must be a codec" do
7
+ subject.must_be_instance_of(Codec::Numbin)
8
+ end
9
+
10
+ it "must generate a field with computed value" do
11
+ subject.decode(["00000100"].pack("H*")).first.get_value.to_i.must_equal(256)
12
+ end
13
+ it "must generate a field with computed value" do
14
+ subject.decode(["00000100"].pack("H*")).last.size.must_equal(0)
15
+ end
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -60,11 +60,13 @@ files:
60
60
  - lib/codec/base.rb
61
61
  - lib/codec/exceptions.rb
62
62
  - lib/codec/field.rb
63
+ - lib/codec/fix.rb
63
64
  - lib/codec/protocols/core.rb
64
65
  - lib/codec/version.rb
66
+ - test/lib/codec/fix_test.rb
65
67
  - test/lib/codec/version_test.rb
66
68
  - test/test_helper.rb
67
- homepage: ''
69
+ homepage: https://github.com/brodier/codec
68
70
  licenses:
69
71
  - MIT
70
72
  post_install_message:
@@ -91,5 +93,6 @@ specification_version: 3
91
93
  summary: This Gem provide class that permit to instantiate Codec to parse or build
92
94
  any protocol
93
95
  test_files:
96
+ - test/lib/codec/fix_test.rb
94
97
  - test/lib/codec/version_test.rb
95
98
  - test/test_helper.rb