caligrafo 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/caligrafo.gemspec +2 -2
- data/lib/caligrafo.rb +31 -11
- data/test/caligrafo_test.rb +10 -0
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/caligrafo.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{caligrafo}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Lucas de Castro"]
|
12
|
-
s.date = %q{2009-10-
|
12
|
+
s.date = %q{2009-10-26}
|
13
13
|
s.description = %q{DSL para geração de arquivos texto.}
|
14
14
|
s.email = %q{castro.lucas@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/caligrafo.rb
CHANGED
@@ -14,20 +14,29 @@ module Caligrafo
|
|
14
14
|
end
|
15
15
|
|
16
16
|
module Formatador
|
17
|
-
def self.
|
18
|
-
@@
|
17
|
+
def self.formatadores
|
18
|
+
@@formatadores ||= {}
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.registrar(nome, formatador)
|
22
|
-
|
23
|
-
@@formatos[nome] = formatador.new
|
22
|
+
self.formatadores[nome] = formatador.new
|
24
23
|
end
|
25
24
|
|
26
|
-
def self.
|
27
|
-
|
28
|
-
formatador ||= @@formatos[:default]
|
25
|
+
def self.pesquisar_por_nome(nome)
|
26
|
+
self.formatadores[nome]
|
29
27
|
end
|
30
28
|
|
29
|
+
def self.pesquisar_por_nome!(nome)
|
30
|
+
self.pesquisar_por_nome(nome) or raise FormatadorNaoEncontrado, "O formatador #{nome.inspect} nao foi registrado!"
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.pesquisar_por_tipo(tipo)
|
34
|
+
formatador = self.formatadores.values.find { |f| f.tipos.include? tipo }
|
35
|
+
formatador ||= self.formatadores[:default]
|
36
|
+
end
|
37
|
+
|
38
|
+
class FormatadorNaoEncontrado < Exception; end
|
39
|
+
|
31
40
|
class Base
|
32
41
|
attr_reader :tipos, :alinhamento, :preenchimento
|
33
42
|
|
@@ -53,6 +62,15 @@ module Caligrafo
|
|
53
62
|
end
|
54
63
|
end
|
55
64
|
|
65
|
+
class Data < Base
|
66
|
+
def tipos
|
67
|
+
[Date]
|
68
|
+
end
|
69
|
+
def formatar(valor, opcoes={})
|
70
|
+
valor.strftime('%Y%m%d')
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
56
74
|
class Numerico < Base
|
57
75
|
def initialize
|
58
76
|
@tipos = [Fixnum]
|
@@ -77,9 +95,11 @@ module Caligrafo
|
|
77
95
|
end
|
78
96
|
end
|
79
97
|
|
80
|
-
self.registrar :default,
|
98
|
+
self.registrar :default, Base
|
99
|
+
self.registrar :alpha, Base
|
81
100
|
self.registrar :numerico, Numerico
|
82
|
-
self.registrar :decimal,
|
101
|
+
self.registrar :decimal, Decimal
|
102
|
+
self.registrar :data, Caligrafo::Formatador::Data
|
83
103
|
end
|
84
104
|
|
85
105
|
class Arquivo
|
@@ -190,9 +210,9 @@ module Caligrafo
|
|
190
210
|
end
|
191
211
|
def formatar(valor)
|
192
212
|
if self.formato
|
193
|
-
formatador =
|
213
|
+
formatador = Formatador.pesquisar_por_nome self.formato
|
194
214
|
else
|
195
|
-
formatador = Formatador.
|
215
|
+
formatador = Formatador.pesquisar_por_tipo valor.class
|
196
216
|
end
|
197
217
|
|
198
218
|
string = formatador.formatar(valor, self.opcoes_para_formatador)
|
data/test/caligrafo_test.rb
CHANGED
@@ -48,6 +48,7 @@ class CaligrafoTest < Test::Unit::TestCase
|
|
48
48
|
def setup
|
49
49
|
@target = 'test/arquivo_gerado.txt'
|
50
50
|
end
|
51
|
+
|
51
52
|
def teardown
|
52
53
|
File.delete @target rescue nil
|
53
54
|
end
|
@@ -75,4 +76,13 @@ FIM
|
|
75
76
|
|
76
77
|
assert_equal_files nome_arquivo_esperado, @target
|
77
78
|
end
|
79
|
+
|
80
|
+
def test_pesquisar_formatador_inexistente
|
81
|
+
assert_raise Caligrafo::Formatador::FormatadorNaoEncontrado do
|
82
|
+
Caligrafo::Formatador.pesquisar_por_nome! :bolinha
|
83
|
+
end
|
84
|
+
assert_nothing_raised do
|
85
|
+
Caligrafo::Formatador.pesquisar_por_nome! :numerico
|
86
|
+
end
|
87
|
+
end
|
78
88
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caligrafo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lucas de Castro
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-26 00:00:00 -03:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|