labels 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,27 +1,28 @@
1
1
  <!ELEMENT label (paper,template,layers,data)>
2
2
 
3
- <!ATTLIST paper title CDATA #IMPLIED>
3
+ <!ATTLIST paper title CDATA #REQUIRED>
4
4
  <!ELEMENT paper (width,height)>
5
5
 
6
- <!ATTLIST template title CDATA #IMPLIED>
7
- <!ATTLIST template description CDATA #IMPLIED>
8
- <!ATTLIST template manufacturer CDATA #IMPLIED>
9
- <!ATTLIST template category CDATA #IMPLIED>
6
+ <!ATTLIST template title CDATA #REQUIRED>
7
+ <!ATTLIST template description CDATA #REQUIRED>
8
+ <!ATTLIST template manufacturer CDATA #REQUIRED>
9
+ <!ATTLIST template category CDATA #REQUIRED>
10
10
  <!ATTLIST template visible (false|true) #REQUIRED>
11
11
  <!ELEMENT template (width,height,columns,rows,left-margin,right-margin,top-margin,bottom-margin,horizontal-gutter,vertical-gutter,elliptical,corner-radius)>
12
12
 
13
13
  <!ELEMENT layers (layer+)>
14
14
 
15
- <!ATTLIST layer title CDATA #IMPLIED>
15
+ <!ATTLIST layer title CDATA #REQUIRED>
16
16
  <!ATTLIST layer type CDATA #REQUIRED>
17
- <!ATTLIST layer column CDATA #IMPLIED>
17
+ <!ATTLIST layer column CDATA #REQUIRED>
18
18
  <!ATTLIST layer locked (false|true) #REQUIRED>
19
19
  <!ATTLIST layer visible (false|true) #REQUIRED>
20
20
  <!ELEMENT layer (x,y,width,height,alpha,rotation,content,corner-radius?,elliptical?,fill?,stroke?,fill-color?,stroke-color?,stroke-weight?,font-family?,font-size?,font-color?,bold?,italic?,justification?,fit?,stretch?,symbology?,bar-width?,bar-height?,color?,caption-height?,caption-size?,captioned?,format?)>
21
21
 
22
- <!ELEMENT data (item+)>
22
+ <!ATTLIST database title CDATA #REQUIRED>
23
+ <!ELEMENT database (row+)>
23
24
 
24
- <!ELEMENT item (key+)>
25
+ <!ELEMENT row (key+)>
25
26
 
26
27
  <!ATTLIST key name CDATA #REQUIRED>
27
28
  <!ATTLIST key type (string|integer|float|boolean|date) #REQUIRED>
@@ -151,18 +151,18 @@
151
151
  </layers>
152
152
 
153
153
  <!-- Data -->
154
- <data>
154
+ <database title="DB">
155
155
 
156
- <!-- Item -->
157
- <item>
156
+ <!-- Row -->
157
+ <row>
158
158
  <key name="string">000222111</key>
159
159
  <key name="data">iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==</key>
160
160
  <key name="date">2007-06-01T13:00:00Z</key>
161
161
  <key name="integer">123</key>
162
162
  <key name="float">1.23</key>
163
163
  <key name="boolean">false</key>
164
- </item>
164
+ </row>
165
165
 
166
- <!-- More items... -->
167
- </data>
166
+ <!-- More rows... -->
167
+ </database>
168
168
  </label>
@@ -0,0 +1,19 @@
1
+ # A RubyGem for creating mailing, shipping, address, barcode and other labels and rendering as PDF's.
2
+ #
3
+ # Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
4
+ # Copyright:: Copyright (c) 2012 Infinite Token LLC
5
+ # License:: MIT License
6
+
7
+ require 'labels/element'
8
+
9
+ module Labels
10
+
11
+ # This class represents template types and properties
12
+ class Database < Element
13
+ # Title of database
14
+ attr_accessor :title
15
+
16
+ # Array of database data
17
+ attr_accessor :data
18
+ end
19
+ end
@@ -8,6 +8,7 @@ require 'fileutils'
8
8
 
9
9
  require 'labels/paper'
10
10
  require 'labels/template'
11
+ require 'labels/database'
11
12
  require 'labels/xml/builder'
12
13
  require 'labels/pdf/builder'
13
14
 
@@ -25,11 +26,11 @@ module Labels
25
26
  # An array of document Labels::Layer instances
26
27
  attr_accessor :layers
27
28
 
28
- # An array of document data
29
- attr_accessor :data
29
+ # The document Labels::Database instance
30
+ attr_accessor :database
30
31
 
31
32
  # Creates a new Labels::Document instance with optional content
32
- def initialize(paper=nil, template=nil, layers=[], data=[])
33
+ def initialize(paper=nil, template=nil, layers=[], database=nil)
33
34
  unless paper.nil?
34
35
  @paper = paper
35
36
  else
@@ -43,7 +44,12 @@ module Labels
43
44
  end
44
45
 
45
46
  @layers = layers
46
- @data = data
47
+
48
+ unless database.nil?
49
+ @database = database
50
+ else
51
+ @database = Labels::Database.new
52
+ end
47
53
  end
48
54
 
49
55
  # Writes document to filename as XML
@@ -7,6 +7,7 @@
7
7
  require 'labels/document'
8
8
  require 'labels/paper'
9
9
  require 'labels/template'
10
+ require 'labels/database'
10
11
  require 'labels/shape'
11
12
  require 'labels/text'
12
13
  require 'labels/image'
@@ -43,7 +44,7 @@ module Labels
43
44
  unless @document.nil?
44
45
  paper = @document.paper
45
46
  template = @document.template
46
- data = @document.data
47
+ database = @document.database
47
48
 
48
49
  if paper && template
49
50
  document_options = {
@@ -55,7 +56,7 @@ module Labels
55
56
  }
56
57
 
57
58
  page_cell_count = template.columns * template.rows
58
- page_number_count = (data.length / page_cell_count).ceil
59
+ page_number_count = (database.data.length / page_cell_count).ceil
59
60
  cell = 0
60
61
 
61
62
  if page_number_count == 0
@@ -95,10 +96,10 @@ module Labels
95
96
 
96
97
  draw = false
97
98
  content = nil
98
- if data.length > 0
99
- if cell < data.length
100
- if data[cell].has_key?(layer.column)
101
- content = data[cell][layer.column]
99
+ if database.data.length > 0
100
+ if cell < database.data.length
101
+ if database.data[cell].has_key?(layer.column)
102
+ content = database.data[cell][layer.column]
102
103
  end
103
104
  draw = true
104
105
  end
@@ -6,5 +6,5 @@
6
6
 
7
7
  #
8
8
  module Labels
9
- VERSION = "0.0.6"
9
+ VERSION = "0.0.7"
10
10
  end
@@ -111,10 +111,10 @@ module Labels
111
111
  }
112
112
  end
113
113
  }
114
- xml.data {
115
- @document.data.each do |item|
116
- xml.item {
117
- item.each do |key, value|
114
+ xml.database(:title => @document.database.title) {
115
+ @document.database.data.each do |row|
116
+ xml.row {
117
+ row.each do |key, value|
118
118
  case value
119
119
  when Fixnum
120
120
  xml.key value, :name => key, :type => 'integer'
@@ -12,6 +12,7 @@ require 'core_ext/string'
12
12
  require 'labels/document'
13
13
  require 'labels/paper'
14
14
  require 'labels/template'
15
+ require 'labels/database'
15
16
  require 'labels/shape'
16
17
  require 'labels/text'
17
18
  require 'labels/image'
@@ -38,7 +39,8 @@ module Labels
38
39
  paper_node = root_node.at_xpath('paper')
39
40
  template_node = root_node.at_xpath('template')
40
41
  layer_nodes = root_node.xpath('layers/layer')
41
- item_nodes = root_node.xpath('data/item')
42
+ database_node = root_node.at_xpath('database')
43
+ row_nodes = root_node.xpath('database/row')
42
44
 
43
45
  unless paper_node.nil?
44
46
  paper = Labels::Paper.new({
@@ -142,19 +144,25 @@ module Labels
142
144
  end
143
145
  end
144
146
 
145
- unless item_nodes.nil?
146
- data = []
147
- item_nodes.each do |item_node|
148
- item = {}
149
- keys_node = item_node.xpath('key')
150
- keys_node.each do |key_node|
151
- item[key_node['name']] = key_node.text
147
+ unless database_node.nil?
148
+ database = Labels::Database.new({
149
+ :title => database_node['title']
150
+ })
151
+ unless row_nodes.nil?
152
+ data = []
153
+ row_nodes.each do |row_node|
154
+ row = {}
155
+ keys_node = row_node.xpath('key')
156
+ keys_node.each do |key_node|
157
+ row[key_node['name']] = key_node.text
158
+ end
159
+ data.push(row)
152
160
  end
153
- data.push(item)
161
+ database.data = data
154
162
  end
155
163
  end
156
164
 
157
- Labels::Document.new(paper, template, layers, data)
165
+ Labels::Document.new(paper, template, layers, database)
158
166
  end
159
167
  end
160
168
  end
@@ -0,0 +1,17 @@
1
+ # A RubyGem for creating mailing, shipping, address, barcode and other labels and rendering as PDF's.
2
+ #
3
+ # Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
4
+ # Copyright:: Copyright (c) 2012 Infinite Token LLC
5
+ # License:: MIT License
6
+
7
+ require 'spec_helper'
8
+ require 'labels/database'
9
+
10
+ describe Labels::Database do
11
+ describe "#new" do
12
+ end
13
+
14
+ describe "#run" do
15
+
16
+ end
17
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: labels
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
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-21 00:00:00.000000000 Z
12
+ date: 2012-10-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -128,6 +128,7 @@ files:
128
128
  - lib/core_ext/string.rb
129
129
  - lib/labels.rb
130
130
  - lib/labels/barcode.rb
131
+ - lib/labels/database.rb
131
132
  - lib/labels/date.rb
132
133
  - lib/labels/document.rb
133
134
  - lib/labels/element.rb
@@ -143,6 +144,7 @@ files:
143
144
  - lib/labels/xml/builder.rb
144
145
  - lib/labels/xml/parser.rb
145
146
  - spec/labels/barcode_spec.rb
147
+ - spec/labels/database_spec.rb
146
148
  - spec/labels/date_spec.rb
147
149
  - spec/labels/document_spec.rb
148
150
  - spec/labels/element_spec.rb
@@ -172,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
174
  version: '0'
173
175
  segments:
174
176
  - 0
175
- hash: 876914944690599337
177
+ hash: 2236236549244294766
176
178
  required_rubygems_version: !ruby/object:Gem::Requirement
177
179
  none: false
178
180
  requirements:
@@ -181,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
183
  version: '0'
182
184
  segments:
183
185
  - 0
184
- hash: 876914944690599337
186
+ hash: 2236236549244294766
185
187
  requirements: []
186
188
  rubyforge_project: labels
187
189
  rubygems_version: 1.8.24
@@ -190,6 +192,7 @@ specification_version: 3
190
192
  summary: PDF label creation using Ruby
191
193
  test_files:
192
194
  - spec/labels/barcode_spec.rb
195
+ - spec/labels/database_spec.rb
193
196
  - spec/labels/date_spec.rb
194
197
  - spec/labels/document_spec.rb
195
198
  - spec/labels/element_spec.rb