fixy 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 920d1f790730e2a1fab764c52a27a6296c1864b0
4
+ data.tar.gz: 2d41058beac14b76f575244fce378390ccdb153e
5
+ SHA512:
6
+ metadata.gz: 3f88596d4ae34bad598b91b943dd7a57015374a1069ed4a06be59084c7409b0e52378a12557eebeaf1a2702c98c6fff38f73f9f7d397c637a7b16e508478d173
7
+ data.tar.gz: 612e1d75d45282c9a252e6ebadaf3d1c3a6e914e401d9975e13a786f3b21454f7c28d2d5b1080e94376ac725a8e0caebe2958512ebc0f6026f07625e3575364d
@@ -1,3 +1,9 @@
1
+ ## v0.0.2
2
+
3
+ * Fixed typos in README
4
+ * Removed Proc#bind to remove ActiveSupport dependency
5
+ * Enable records inheritance
6
+
1
7
  ## v0.0.1
2
8
 
3
9
  * Initial release
data/README.md CHANGED
@@ -106,7 +106,7 @@ A document is composed of a multitude of records (instances of a `Fixy::Record`)
106
106
  class PeopleDocument < Fixy::Document
107
107
  def build
108
108
  append_record PersonRecord.new('Sarah', 'Kerrigan')
109
- append_record PersonRecordnew('Jim', 'Raynor')
109
+ append_record PersonRecord.new('Jim', 'Raynor')
110
110
  prepend_record PersonRecord.new('Arcturus', 'Mengsk')
111
111
  end
112
112
  end
@@ -21,5 +21,4 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency 'rspec'
22
22
 
23
23
  spec.add_runtime_dependency 'rake'
24
- spec.add_runtime_dependency 'activesupport'
25
- end
24
+ end
@@ -1,14 +1,12 @@
1
1
  module Fixy
2
2
  class Record
3
- require 'active_support/core_ext/proc'
4
-
5
3
  class << self
6
4
  def set_record_length(count)
7
5
  define_singleton_method('record_length') { count }
8
6
  end
9
7
 
10
8
  def field(name, size, range, type)
11
- @record_fields ||= {}
9
+ @record_fields ||= default_record_fields
12
10
  range_matches = range.match /^(\d+)(?:-(\d+))?$/
13
11
 
14
12
  # Make sure inputs are valid, we rather fail early than behave unexpectedly later.
@@ -45,7 +43,7 @@ module Fixy
45
43
  end
46
44
 
47
45
  if value.is_a? Proc
48
- define_method(name) { value.bind(self).call }
46
+ define_method(name) { self.instance_exec(&value) }
49
47
  else
50
48
  define_method(name) { value }
51
49
  end
@@ -54,6 +52,14 @@ module Fixy
54
52
  def record_fields
55
53
  @record_fields
56
54
  end
55
+
56
+ def default_record_fields
57
+ if superclass.respond_to?(:record_fields, true) && superclass.record_fields
58
+ superclass.record_fields.dup
59
+ else
60
+ {}
61
+ end
62
+ end
57
63
  end
58
64
 
59
65
  attr_accessor :debug_mode
@@ -104,4 +110,4 @@ module Fixy
104
110
  debug_mode ? Fixy::Decorator::Debug : Fixy::Decorator::Default
105
111
  end
106
112
  end
107
- end
113
+ end
@@ -1,3 +1,3 @@
1
1
  module Fixy
2
- VERSION = "0.0.1"
3
- end
2
+ VERSION = "0.0.2"
3
+ end
@@ -93,4 +93,43 @@ describe 'Generating a Record' do
93
93
  }.to raise_error(StandardError, "Undefined field for position 19")
94
94
  end
95
95
  end
96
+
97
+ context 'when inheriting from another record' do
98
+ class PersonRecordG < Fixy::Record
99
+ include Fixy::Formatter::Alphanumeric
100
+ set_record_length 20
101
+
102
+ field :first_name, 10, '1-10' , :alphanumeric
103
+ field_value :first_name, -> { 'Bob' }
104
+ end
105
+
106
+ class PersonRecordH < PersonRecordG
107
+ include Fixy::Formatter::Alphanumeric
108
+ set_record_length 20
109
+ field :last_name , 10, '11-20', :alphanumeric
110
+ field_value :last_name, -> { 'Williams' }
111
+ end
112
+
113
+ it 'should include fields from the superclass' do
114
+ PersonRecordH.new.generate.slice(0, 10).should eq 'Bob '
115
+ PersonRecordH.new.generate.slice(10, 10).should eq 'Williams '
116
+ end
117
+
118
+ context 'when two records inherit' do
119
+ class PersonRecordI < PersonRecordG
120
+ include Fixy::Formatter::Alphanumeric
121
+ set_record_length 20
122
+ field :last_name , 10, '11-20', :alphanumeric
123
+ field_value :last_name, -> { 'Jacobs' }
124
+ end
125
+
126
+ it 'does not collide' do
127
+ PersonRecordH.new.generate.slice(0, 10).should eq 'Bob '
128
+ PersonRecordH.new.generate.slice(10, 10).should eq 'Williams '
129
+
130
+ PersonRecordI.new.generate.slice(0, 10).should eq 'Bob '
131
+ PersonRecordI.new.generate.slice(10, 10).should eq 'Jacobs '
132
+ end
133
+ end
134
+ end
96
135
  end
@@ -1,2 +1,8 @@
1
1
  require 'rspec'
2
2
  require 'fixy'
3
+
4
+ RSpec.configure do |config|
5
+ config.expect_with :rspec do |c|
6
+ c.syntax = [:should, :expect]
7
+ end
8
+ end
metadata CHANGED
@@ -1,78 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fixy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Omar Skalli
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-05-14 00:00:00.000000000 Z
11
+ date: 2014-11-13 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rake
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: activesupport
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
52
+ - - '>='
76
53
  - !ruby/object:Gem::Version
77
54
  version: '0'
78
55
  description: Library for generating fixed width flat files.
@@ -104,27 +81,26 @@ files:
104
81
  homepage: https://github.com/chetane/fixy
105
82
  licenses:
106
83
  - MIT
84
+ metadata: {}
107
85
  post_install_message:
108
86
  rdoc_options: []
109
87
  require_paths:
110
88
  - lib
111
89
  required_ruby_version: !ruby/object:Gem::Requirement
112
- none: false
113
90
  requirements:
114
- - - ! '>='
91
+ - - '>='
115
92
  - !ruby/object:Gem::Version
116
93
  version: '0'
117
94
  required_rubygems_version: !ruby/object:Gem::Requirement
118
- none: false
119
95
  requirements:
120
- - - ! '>='
96
+ - - '>='
121
97
  - !ruby/object:Gem::Version
122
98
  version: '0'
123
99
  requirements: []
124
100
  rubyforge_project:
125
- rubygems_version: 1.8.24
101
+ rubygems_version: 2.4.2
126
102
  signing_key:
127
- specification_version: 3
103
+ specification_version: 4
128
104
  summary: Provides a DSL for defining, generating, and debugging fixed width documents.
129
105
  test_files:
130
106
  - spec/fixtures/debug_document.txt