fixed-layout-mapper 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.
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ Sample
2
+ ====
1
3
  require 'pp'
2
4
  require 'fixed-layout-mapper'
3
5
 
@@ -24,3 +26,113 @@
24
26
  # f3=["00", "11", "22"],
25
27
  # f4=["a", "bb", #<struct sub_f1="c", sub_f2="dd">],
26
28
  # f5="123123">
29
+
30
+ Detail
31
+ ====
32
+
33
+ Define columns
34
+ ----
35
+ Layout definition is started in "define_layout" method.
36
+
37
+ mapper = FixedLayoutMapper::Mapper.define_layout do
38
+ definitions...
39
+ end
40
+
41
+ Columns are defined by "col" method.
42
+
43
+ col symbol, record_def
44
+
45
+ record_def is
46
+ * numeric: define column which cut the string with its width.
47
+
48
+ #ex)
49
+ mapper = FixedLayoutMapper::Mapper.define_layout do
50
+ col :f, 3
51
+ end
52
+
53
+ p mapper.map("0123")
54
+ #=> #<struct f="012">
55
+
56
+ * array: define array column with use its each contents.
57
+
58
+ #ex)
59
+ mapper = FixedLayoutMapper::Mapper.define_layout do
60
+ col :f1, [1, 2]
61
+ col :f2, [1] * 3
62
+ end
63
+
64
+ p mapper.map("001123")
65
+ #=> #<struct f1=["0", "01"], f2=["1", "2", "3"]>
66
+
67
+ * sub_layout_key: define column which use its layout.
68
+ see Sub layout.
69
+
70
+ Sub layout
71
+ ----
72
+
73
+ if you want to name to layout, you can use "layout" method.
74
+ A field defined by "col" method called outside the block of "layout" method is implicitly defined in the default layout.
75
+
76
+ layout layout_name(symbol) do
77
+ column definitions...
78
+ end
79
+
80
+ When sub layout is defined, you can use its layout in other layout definition.
81
+
82
+ mapper = FixedLayoutMapper::Mapper.define_layout do
83
+ layout :sub1 do
84
+ col :sub_f1, 1
85
+ col :sub_f2, 2
86
+ end
87
+ col :f1, 1
88
+ col :f2, :sub1
89
+ end
90
+
91
+ p mapper.map("0123")
92
+ #=> #<struct f1="0", f2=#<struct sub_f1="1", sub_f2="23">>
93
+
94
+ You can also use sub layout in array def.
95
+
96
+ mapper = FixedLayoutMapper::Mapper.define_layout do
97
+ layout :sub1 do
98
+ col :sub_f1, 1
99
+ col :sub_f2, 2
100
+ end
101
+ col :f1, [1, :sub1]
102
+ end
103
+
104
+ p mapper.map("0123")
105
+ #=> #<struct f1=["0", #<struct sub_f1="1", sub_f2="23"]>
106
+
107
+ you can use sub layout in map method.
108
+ if symbol is passed to the second argument in map method, use its layout.
109
+
110
+ mapper = FixedLayoutMapper::Mapper.define_layout do
111
+ layout :sub1 do
112
+ col :sub_f1, 1
113
+ col :sub_f2, 2
114
+ end
115
+ col :f1, [1, :sub1]
116
+ end
117
+
118
+ p mapper.map("0123")
119
+ #=> #<struct f1=["0", #<struct sub_f1="1", sub_f2="23"]>
120
+ p mapper.map("0123", :sub1)
121
+ #=> #<struct sub_f1="0", sub_f2="12">
122
+
123
+
124
+ Conversion
125
+ ----
126
+
127
+ If "col" method is given block, the raw value is passed to the block and
128
+ the field value becomes the return value of the block.
129
+
130
+ mapper = FixedLayoutMapper::Mapper.define_layout do
131
+ col :f1, 3 do |v|
132
+ v + "_" + v
133
+ end
134
+ col :f2, 3, &:upcase
135
+ end
136
+
137
+ p mapper.map("012abc")
138
+ #=> #<struct f1="012_012", f2="ABC">
@@ -1,3 +1,3 @@
1
1
  module FixedLayoutMapper
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fixed-layout-mapper
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:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-15 00:00:00.000000000 Z
12
+ date: 2012-10-18 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ''
15
15
  email: